mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-04-09 21:37:31 +00:00
Working on live range effective simple. Fixed aliasing and parameters. There is still problems with functions calling functions - such as print_w(), print_sw() and print_char().
This commit is contained in:
parent
4f8609ea72
commit
6b3b4bec5a
1
src/main/fragment/mos6502-common/vbuxx=_hi_vwum1.asm
Normal file
1
src/main/fragment/mos6502-common/vbuxx=_hi_vwum1.asm
Normal file
@ -0,0 +1 @@
|
||||
ldx {m1}+1
|
1
src/main/fragment/mos6502-common/vbuxx=_lo_vwum1.asm
Normal file
1
src/main/fragment/mos6502-common/vbuxx=_lo_vwum1.asm
Normal file
@ -0,0 +1 @@
|
||||
ldx {m1}
|
1
src/main/fragment/mos6502-common/vbuyy=_hi_vwum1.asm
Normal file
1
src/main/fragment/mos6502-common/vbuyy=_hi_vwum1.asm
Normal file
@ -0,0 +1 @@
|
||||
ldy {m1}+1
|
1
src/main/fragment/mos6502-common/vbuyy=_lo_vwum1.asm
Normal file
1
src/main/fragment/mos6502-common/vbuyy=_lo_vwum1.asm
Normal file
@ -0,0 +1 @@
|
||||
ldy {m1}
|
@ -170,6 +170,11 @@ public class CompileLog {
|
||||
this.verboseNonOptimization = verboseNonOptimization;
|
||||
}
|
||||
|
||||
public CompileLog verboseNonOptimization() {
|
||||
setVerboseNonOptimization(true);
|
||||
return this;
|
||||
}
|
||||
|
||||
public void setVerboseSequencePlan(boolean verboseSequencePlan) {
|
||||
this.verboseSequencePlan = verboseSequencePlan;
|
||||
}
|
||||
|
@ -33,6 +33,8 @@ public interface LiveRangeVariablesEffective {
|
||||
Collection<VariableRef> getEffectiveAliveAtStmt();
|
||||
|
||||
Pass2AliasElimination.Aliases getEffectiveAliasesAtStmt();
|
||||
|
||||
String toString(Program program);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -417,10 +417,12 @@ public class LiveRangeVariablesEffectiveCallPaths implements LiveRangeVariablesE
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
public String toString(Program program) {
|
||||
StringBuilder out = new StringBuilder();
|
||||
out.append(getCallPathString(callPath.getPath()));
|
||||
out.append(getAliveString(getEffectiveAliveAtStmt()));
|
||||
out.append(" ");
|
||||
out.append(getEffectiveAliasesAtStmt().toString(program));
|
||||
return out.toString();
|
||||
}
|
||||
|
||||
|
@ -6,6 +6,7 @@ import dk.camelot64.kickc.passes.Pass2AliasElimination;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@ -15,9 +16,12 @@ public class LiveRangeVariablesEffectiveSimple implements LiveRangeVariablesEffe
|
||||
|
||||
/** All variables potentially effective alive by statement index. */
|
||||
private Map<Integer, Collection<VariableRef>> statementAliveEffective;
|
||||
/** Block aliases for each statement. */
|
||||
private Map<Integer, Pass2AliasElimination.Aliases> statementLocalAliases;
|
||||
|
||||
public LiveRangeVariablesEffectiveSimple(Map<Integer, Collection<VariableRef>> statementAliveEffective) {
|
||||
public LiveRangeVariablesEffectiveSimple(LinkedHashMap<Integer, Collection<VariableRef>> statementAliveEffective, Map<Integer, Pass2AliasElimination.Aliases> statementLocalAliases) {
|
||||
this.statementAliveEffective = statementAliveEffective;
|
||||
this.statementLocalAliases = statementLocalAliases;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -33,33 +37,49 @@ public class LiveRangeVariablesEffectiveSimple implements LiveRangeVariablesEffe
|
||||
return statementAliveEffective.get(statement.getIndex());
|
||||
}
|
||||
|
||||
/**
|
||||
* Get local aliases at a statement.
|
||||
*
|
||||
* @param statement The statement to examine
|
||||
* @return All local aliases
|
||||
*/
|
||||
@Override
|
||||
public AliveCombinations getAliveCombinations(Statement statement) {
|
||||
return new AliveCombinationsSimple(getAliveEffective(statement));
|
||||
return new AliveCombinationsSimple(getAliveEffective(statement), getLocalAliases(statement));
|
||||
}
|
||||
|
||||
public class AliveCombinationsSimple implements AliveCombinations {
|
||||
private Pass2AliasElimination.Aliases getLocalAliases(Statement statement) {
|
||||
return statementLocalAliases.get(statement.getIndex());
|
||||
}
|
||||
|
||||
public static class AliveCombinationsSimple implements AliveCombinations {
|
||||
|
||||
private Collection<VariableRef> alive;
|
||||
|
||||
public AliveCombinationsSimple(Collection<VariableRef> alive) {
|
||||
private Pass2AliasElimination.Aliases localAliases;
|
||||
|
||||
AliveCombinationsSimple(Collection<VariableRef> alive, Pass2AliasElimination.Aliases localAliases) {
|
||||
this.alive = alive;
|
||||
this.localAliases = localAliases;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<AliveCombination> getAll() {
|
||||
final ArrayList<AliveCombination> aliveCombinations = new ArrayList<>();
|
||||
aliveCombinations.add(new AliveCombinationSimple(alive));
|
||||
aliveCombinations.add(new AliveCombinationSimple(alive, localAliases));
|
||||
return aliveCombinations;
|
||||
}
|
||||
}
|
||||
|
||||
public class AliveCombinationSimple implements AliveCombination {
|
||||
public static class AliveCombinationSimple implements AliveCombination {
|
||||
|
||||
private Collection<VariableRef> alive;
|
||||
|
||||
public AliveCombinationSimple(Collection<VariableRef> alive) {
|
||||
private Pass2AliasElimination.Aliases localAliases;
|
||||
|
||||
AliveCombinationSimple(Collection<VariableRef> alive, Pass2AliasElimination.Aliases localAliases) {
|
||||
this.alive = alive;
|
||||
this.localAliases = localAliases;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -69,12 +89,19 @@ public class LiveRangeVariablesEffectiveSimple implements LiveRangeVariablesEffe
|
||||
|
||||
@Override
|
||||
public Pass2AliasElimination.Aliases getEffectiveAliasesAtStmt() {
|
||||
return null;
|
||||
return localAliases;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return getAliveString(alive);
|
||||
public String toString(Program program) {
|
||||
final Pass2AliasElimination.Aliases aliases = getEffectiveAliasesAtStmt();
|
||||
return getAliveString(alive) + " " + getAliasString(aliases, program);
|
||||
}
|
||||
|
||||
private String getAliasString(Pass2AliasElimination.Aliases aliases, Program program) {
|
||||
if(aliases == null)
|
||||
return "";
|
||||
else
|
||||
return aliases.toString(program);
|
||||
}
|
||||
|
||||
private String getAliveString(Collection<VariableRef> alive) {
|
||||
|
@ -99,7 +99,6 @@ public class Program {
|
||||
/** The register weight of all variables describing how much the variable would theoretically gain from being in a register. PASS 3-5 (CACHED ON-DEMAND) */
|
||||
private VariableRegisterWeights variableRegisterWeights;
|
||||
/** Enable live ranges per call path optimization, which limits memory usage and code, but takes a lot of compile time. */
|
||||
//private boolean enableLiveRangeCallPath = true;
|
||||
private boolean enableLiveRangeCallPath = false;
|
||||
|
||||
public Program() {
|
||||
|
@ -89,7 +89,7 @@ public abstract class StatementBase implements Statement {
|
||||
LiveRangeVariablesEffective.AliveCombinations aliveCombinations = liveRangeVariablesEffective.getAliveCombinations(this);
|
||||
alive.append(" ( ");
|
||||
for(LiveRangeVariablesEffective.AliveCombination aliveCombination : aliveCombinations.getAll()) {
|
||||
alive.append(aliveCombination.toString());
|
||||
alive.append(aliveCombination.toString(program));
|
||||
alive.append(" ");
|
||||
}
|
||||
alive.append(")");
|
||||
|
@ -38,7 +38,7 @@ public class Pass2AliasElimination extends Pass2SsaOptimization {
|
||||
}
|
||||
|
||||
|
||||
public static Aliases findAliases(Program program) {
|
||||
private static Aliases findAliases(Program program) {
|
||||
Aliases candidates = findAliasesCandidates(program);
|
||||
cleanupCandidates(candidates, program);
|
||||
cleanupCandidateVolatiles(candidates, program);
|
||||
@ -342,7 +342,7 @@ public class Pass2AliasElimination extends Pass2SsaOptimization {
|
||||
}
|
||||
}
|
||||
|
||||
public List<VariableRef> getSymbolsToRemove(ProgramScope scope) {
|
||||
List<VariableRef> getSymbolsToRemove(ProgramScope scope) {
|
||||
ArrayList<VariableRef> eliminates = new ArrayList<>();
|
||||
for(AliasSet alias : aliases) {
|
||||
eliminates.addAll(alias.getEliminateVars(scope));
|
||||
@ -350,7 +350,7 @@ public class Pass2AliasElimination extends Pass2SsaOptimization {
|
||||
return eliminates;
|
||||
}
|
||||
|
||||
public Map<VariableRef, VariableRef> getReplacements(ProgramScope scope) {
|
||||
Map<VariableRef, VariableRef> getReplacements(ProgramScope scope) {
|
||||
HashMap<VariableRef, VariableRef> replacements = new LinkedHashMap<>();
|
||||
for(AliasSet aliasSet : aliases) {
|
||||
VariableRef keepVar = aliasSet.getKeepVar(scope);
|
||||
@ -391,7 +391,7 @@ public class Pass2AliasElimination extends Pass2SsaOptimization {
|
||||
}
|
||||
}
|
||||
|
||||
public AliasSet findAliasSet(LValue lValue) {
|
||||
AliasSet findAliasSet(LValue lValue) {
|
||||
if(lValue instanceof VariableRef) {
|
||||
for(AliasSet alias : aliases) {
|
||||
if(alias.contains(lValue)) {
|
||||
@ -402,7 +402,7 @@ public class Pass2AliasElimination extends Pass2SsaOptimization {
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<AliasSet> getAliasSets() {
|
||||
List<AliasSet> getAliasSets() {
|
||||
return aliases;
|
||||
}
|
||||
|
||||
@ -419,17 +419,29 @@ public class Pass2AliasElimination extends Pass2SsaOptimization {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public String toString(Program program) {
|
||||
StringBuilder str = new StringBuilder();
|
||||
str.append("{ ");
|
||||
for(AliasSet aliasSet : getAliasSets()) {
|
||||
str.append("{ ");
|
||||
str.append(aliasSet.toString(program));
|
||||
str.append("} ");
|
||||
}
|
||||
str.append("} ");
|
||||
return str.toString();
|
||||
}
|
||||
}
|
||||
|
||||
public static class AliasSet {
|
||||
|
||||
private List<VariableRef> vars;
|
||||
|
||||
public AliasSet() {
|
||||
AliasSet() {
|
||||
this.vars = new ArrayList<>();
|
||||
}
|
||||
|
||||
public AliasSet(AliasSet aliasSet) {
|
||||
AliasSet(AliasSet aliasSet) {
|
||||
this.vars = new ArrayList<>(aliasSet.getVars());
|
||||
}
|
||||
|
||||
@ -447,10 +459,10 @@ public class Pass2AliasElimination extends Pass2SsaOptimization {
|
||||
|
||||
public String toString(Program program) {
|
||||
StringBuilder str = new StringBuilder();
|
||||
str.append(getKeepVar(program.getScope()).toString(program));
|
||||
str.append(getKeepVar(program.getScope()).toString(null));
|
||||
str.append(" = ");
|
||||
for(VariableRef var : getEliminateVars(program.getScope())) {
|
||||
str.append(var.toString(program)).append(" ");
|
||||
str.append(var.toString(null)).append(" ");
|
||||
}
|
||||
return str.toString();
|
||||
}
|
||||
@ -463,7 +475,7 @@ public class Pass2AliasElimination extends Pass2SsaOptimization {
|
||||
vars.addAll(aliasSet.getVars());
|
||||
}
|
||||
|
||||
public VariableRef getKeepVar(ProgramScope scope) {
|
||||
VariableRef getKeepVar(ProgramScope scope) {
|
||||
// Score all base names (without versions for versioned vars, full name for intermediates)
|
||||
int maxScore = 0;
|
||||
String maxName = null;
|
||||
@ -496,7 +508,7 @@ public class Pass2AliasElimination extends Pass2SsaOptimization {
|
||||
}
|
||||
// Find first var with highest scoring name
|
||||
List<VariableRef> vars = new ArrayList<>(this.vars);
|
||||
Collections.sort(vars, Comparator.comparing(SymbolRef::getFullName));
|
||||
vars.sort(Comparator.comparing(SymbolRef::getFullName));
|
||||
for(VariableRef var : vars) {
|
||||
if(var.isVersion()) {
|
||||
if(maxName.equals(var.getFullNameUnversioned())) {
|
||||
@ -513,7 +525,7 @@ public class Pass2AliasElimination extends Pass2SsaOptimization {
|
||||
|
||||
}
|
||||
|
||||
public List<VariableRef> getEliminateVars(ProgramScope scope) {
|
||||
List<VariableRef> getEliminateVars(ProgramScope scope) {
|
||||
List<VariableRef> eliminate = new ArrayList<>();
|
||||
VariableRef keepVar = getKeepVar(scope);
|
||||
for(VariableRef var : vars) {
|
||||
|
@ -50,22 +50,8 @@ public class Pass2NopCastInlining extends Pass2SsaOptimization {
|
||||
if(assignment.getOperator() == null && assignment.getrValue2() instanceof CastValue) {
|
||||
CastValue castValue = (CastValue) assignment.getrValue2();
|
||||
SymbolType subValType = SymbolTypeInference.inferType(getScope(), castValue.getValue());
|
||||
boolean isNopCast = false;
|
||||
if(SymbolType.BYTE.equals(castValue.getToType()) && SymbolType.SBYTE.equals(subValType)) {
|
||||
isNopCast = true;
|
||||
} else if(SymbolType.SBYTE.equals(castValue.getToType()) && SymbolType.BYTE.equals(subValType)) {
|
||||
isNopCast = true;
|
||||
} else if(SymbolType.WORD.equals(castValue.getToType()) && SymbolType.SWORD.equals(subValType)) {
|
||||
isNopCast = true;
|
||||
} else if(SymbolType.SWORD.equals(castValue.getToType()) && SymbolType.WORD.equals(subValType)) {
|
||||
isNopCast = true;
|
||||
} else if(castValue.getToType() instanceof SymbolTypePointer && SymbolType.WORD.equals(subValType)) {
|
||||
isNopCast = true;
|
||||
} else if(SymbolType.WORD.equals(castValue.getToType()) && subValType instanceof SymbolTypePointer) {
|
||||
isNopCast = true;
|
||||
} else if(castValue.getToType() instanceof SymbolTypePointer && subValType instanceof SymbolTypePointer) {
|
||||
isNopCast = true;
|
||||
}
|
||||
final SymbolType castToType = castValue.getToType();
|
||||
boolean isNopCast = isNopCast(castToType, subValType);
|
||||
if(isNopCast && assignment.getlValue() instanceof VariableRef) {
|
||||
|
||||
final Variable assignmentVar = getScope().getVariable((VariableRef) assignment.getlValue());
|
||||
@ -138,5 +124,25 @@ public class Pass2NopCastInlining extends Pass2SsaOptimization {
|
||||
return (replace1.size() > 0);
|
||||
}
|
||||
|
||||
public static boolean isNopCast(SymbolType castToType, SymbolType subValType) {
|
||||
boolean isNopCast = false;
|
||||
if(SymbolType.BYTE.equals(castToType) && SymbolType.SBYTE.equals(subValType)) {
|
||||
isNopCast = true;
|
||||
} else if(SymbolType.SBYTE.equals(castToType) && SymbolType.BYTE.equals(subValType)) {
|
||||
isNopCast = true;
|
||||
} else if(SymbolType.WORD.equals(castToType) && SymbolType.SWORD.equals(subValType)) {
|
||||
isNopCast = true;
|
||||
} else if(SymbolType.SWORD.equals(castToType) && SymbolType.WORD.equals(subValType)) {
|
||||
isNopCast = true;
|
||||
} else if(castToType instanceof SymbolTypePointer && SymbolType.WORD.equals(subValType)) {
|
||||
isNopCast = true;
|
||||
} else if(SymbolType.WORD.equals(castToType) && subValType instanceof SymbolTypePointer) {
|
||||
isNopCast = true;
|
||||
} else if(castToType instanceof SymbolTypePointer && subValType instanceof SymbolTypePointer) {
|
||||
isNopCast = true;
|
||||
}
|
||||
return isNopCast;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ public class Pass4RegisterUpliftCombinations extends Pass2Base {
|
||||
*
|
||||
* @param combinationIterator The combination iterator used for supplying different register allocations to test
|
||||
* @param maxCombinations The maximal number of combinations to test. It the iterator has more combinations he rest is skipped (and a message logged)
|
||||
* @param unknownFragments Receives any unknown ASM fragments encountered during the combinsation search
|
||||
* @param unknownFragments Receives any unknown ASM fragments encountered during the combination search
|
||||
* @param scope The scope where the variables are being tested. (Only used for logging)
|
||||
* @param program The program to test (used for accessing global data structures)
|
||||
*/
|
||||
|
@ -5,6 +5,7 @@ import dk.camelot64.kickc.model.statements.Statement;
|
||||
import dk.camelot64.kickc.model.statements.StatementAssignment;
|
||||
import dk.camelot64.kickc.model.statements.StatementPhiBlock;
|
||||
import dk.camelot64.kickc.model.symbols.Procedure;
|
||||
import dk.camelot64.kickc.model.symbols.ProgramScope;
|
||||
import dk.camelot64.kickc.model.symbols.Scope;
|
||||
import dk.camelot64.kickc.model.symbols.Variable;
|
||||
import dk.camelot64.kickc.model.values.*;
|
||||
@ -102,7 +103,7 @@ public class PassNCalcLiveRangesEffectiveCallPaths extends PassNCalcBase<LiveRan
|
||||
alive.addAll(callerPath.getAlive());
|
||||
alive.removeAll(referencedInCaller);
|
||||
alive.addAll(liveRangeVariables.getAlive(callStatementIdx));
|
||||
Pass2AliasElimination.Aliases innerAliases = getCallAliases(procedure, callBlock);
|
||||
Pass2AliasElimination.Aliases innerAliases = getCallAliases(caller, getProgram().getStatementInfos(), getGraph(), getScope());
|
||||
Pass2AliasElimination.Aliases pathAliases = new Pass2AliasElimination.Aliases();
|
||||
pathAliases.addAll(callerPath.getPathAliases());
|
||||
pathAliases.addAll(innerAliases);
|
||||
@ -127,12 +128,17 @@ public class PassNCalcLiveRangesEffectiveCallPaths extends PassNCalcBase<LiveRan
|
||||
/**
|
||||
* Find aliases defined when taking a specific call - meaning call parameters that have specific values when taking the specific call.
|
||||
*
|
||||
* @param procedure The called procedure
|
||||
* @param callBlock The block performing the call
|
||||
* @return Aliases defined by the specific call.
|
||||
* @param call The procedure call
|
||||
* @param statementInfos Statement infos
|
||||
* @param graph The control flow graph
|
||||
* @param programScope The program scope
|
||||
* @return
|
||||
*/
|
||||
private Pass2AliasElimination.Aliases getCallAliases(Procedure procedure, ControlFlowBlock callBlock) {
|
||||
ControlFlowBlock procedureBlock = getProgram().getGraph().getBlock(procedure.getLabel().getRef());
|
||||
static Pass2AliasElimination.Aliases getCallAliases(CallGraph.CallBlock.Call call, StatementInfos statementInfos, ControlFlowGraph graph, ProgramScope programScope) {
|
||||
final ProcedureRef procedureRef = call.getProcedure();
|
||||
Procedure procedure = programScope.getProcedure(procedureRef);
|
||||
final ControlFlowBlock callBlock = statementInfos.getBlock(call.getCallStatementIdx());
|
||||
ControlFlowBlock procedureBlock = graph.getBlock(procedure.getLabel().getRef());
|
||||
StatementPhiBlock procedurePhiBlock = null;
|
||||
if(procedureBlock.hasPhiBlock()) {
|
||||
procedurePhiBlock = procedureBlock.getPhiBlock();
|
||||
@ -153,7 +159,7 @@ public class PassNCalcLiveRangesEffectiveCallPaths extends PassNCalcBase<LiveRan
|
||||
StatementAssignment assignment = (StatementAssignment) statement;
|
||||
LValue lValue = assignment.getlValue();
|
||||
if(lValue instanceof VariableRef) {
|
||||
Variable lValueVar = getProgram().getScope().getVariable((VariableRef) lValue);
|
||||
Variable lValueVar = programScope.getVariable((VariableRef) lValue);
|
||||
if(lValueVar.getScope().equals(procedure)) {
|
||||
// Assigning into the procedure scope
|
||||
if(assignment.getrValue1() == null && assignment.getOperator() == null && assignment.getrValue2() instanceof VariableRef) {
|
||||
|
@ -2,9 +2,15 @@ package dk.camelot64.kickc.passes.calcs;
|
||||
|
||||
import dk.camelot64.kickc.model.*;
|
||||
import dk.camelot64.kickc.model.statements.Statement;
|
||||
import dk.camelot64.kickc.model.statements.StatementAssignment;
|
||||
import dk.camelot64.kickc.model.symbols.Procedure;
|
||||
import dk.camelot64.kickc.model.symbols.Variable;
|
||||
import dk.camelot64.kickc.model.values.CastValue;
|
||||
import dk.camelot64.kickc.model.values.ProcedureRef;
|
||||
import dk.camelot64.kickc.model.values.RValue;
|
||||
import dk.camelot64.kickc.model.values.VariableRef;
|
||||
import dk.camelot64.kickc.passes.Pass2AliasElimination;
|
||||
import dk.camelot64.kickc.passes.Pass2NopCastInlining;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@ -39,7 +45,12 @@ public class PassNCalcLiveRangesEffectiveSimple extends PassNCalcBase<LiveRangeV
|
||||
Collection<VariableRef> aliveOutsideCall = new LinkedHashSet<>();
|
||||
for(Statement precedingStatement : precedingStatements) {
|
||||
final List<VariableRef> precedingStatementAlive = liveRangeVariables.getAlive(precedingStatement.getIndex());
|
||||
aliveOutsideCall.addAll(precedingStatementAlive);
|
||||
for(VariableRef precedingStatementAliveVarRef : precedingStatementAlive) {
|
||||
if(!precedingStatementAliveVarRef.getScopeNames().equals(caller.getProcedure().getFullName())) {
|
||||
// Skipping variables alive preceeding the caller from the called scope (these are parameters and are handled by local live ranges)
|
||||
aliveOutsideCall.add(precedingStatementAliveVarRef);
|
||||
}
|
||||
}
|
||||
}
|
||||
final Collection<VariableRef> procedureReferenced = procedureReferencedVars.get(procedure.getRef());
|
||||
aliveOutsideCall.removeAll(procedureReferenced);
|
||||
@ -49,7 +60,7 @@ public class PassNCalcLiveRangesEffectiveSimple extends PassNCalcBase<LiveRangeV
|
||||
aliveOutsideProcedures.put(procedure.getRef(), aliveOutsideProcedure);
|
||||
}
|
||||
|
||||
// Find all alive variables for all statements by adding the everything alive outside each call
|
||||
// Find all alive variables for all statements by adding everything alive outside each call (not including variables from the called scope)
|
||||
final LinkedHashMap<Integer, Collection<VariableRef>> statementAliveEffective = new LinkedHashMap<>();
|
||||
for(ControlFlowBlock block : getGraph().getAllBlocks()) {
|
||||
final Procedure procedure = block.getProcedure(getProgram());
|
||||
@ -64,7 +75,44 @@ public class PassNCalcLiveRangesEffectiveSimple extends PassNCalcBase<LiveRangeV
|
||||
statementAliveEffective.put(statement.getIndex(), aliveStmt);
|
||||
}
|
||||
}
|
||||
return new LiveRangeVariablesEffectiveSimple(statementAliveEffective);
|
||||
|
||||
// Find aliases inside each block
|
||||
Map<Integer, Pass2AliasElimination.Aliases> statementAliases = new LinkedHashMap<>();
|
||||
for(ControlFlowBlock block : getGraph().getAllBlocks()) {
|
||||
Pass2AliasElimination.Aliases blockAliases = new Pass2AliasElimination.Aliases();
|
||||
for(Statement statement : block.getStatements()) {
|
||||
if(statement instanceof StatementAssignment) {
|
||||
StatementAssignment assignment = (StatementAssignment) statement;
|
||||
if(assignment.getrValue1()==null && assignment.getOperator()==null) {
|
||||
|
||||
RValue rValue = assignment.getrValue2();
|
||||
if(rValue instanceof CastValue) {
|
||||
// A cast - examine if it is a noop-cast
|
||||
final CastValue castValue = (CastValue) rValue;
|
||||
if(castValue.getValue() instanceof VariableRef) {
|
||||
final VariableRef subVarRef = (VariableRef) castValue.getValue();
|
||||
final Variable subVar = getScope().getVariable(subVarRef);
|
||||
if(Pass2NopCastInlining.isNopCast(castValue.getToType(), subVar.getType())) {
|
||||
// Found a Nop Cast of a variable - use the variable
|
||||
rValue = subVarRef;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(assignment.getlValue() instanceof VariableRef && rValue instanceof VariableRef) {
|
||||
final VariableRef lValueRef = (VariableRef) assignment.getlValue();
|
||||
final VariableRef rValueRef = (VariableRef) rValue;
|
||||
if((lValueRef.isIntermediate() || lValueRef.isVersion()) && (rValueRef.isIntermediate() || rValueRef.isVersion()) ) {
|
||||
// Identified an alias assignment of versioned/intermediate variables!
|
||||
blockAliases.add(lValueRef, rValueRef);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
statementAliases.put(statement.getIndex(), new Pass2AliasElimination.Aliases(blockAliases));
|
||||
}
|
||||
}
|
||||
|
||||
return new LiveRangeVariablesEffectiveSimple(statementAliveEffective, statementAliases);
|
||||
}
|
||||
|
||||
|
||||
|
@ -3385,14 +3385,49 @@ public class TestPrograms {
|
||||
compileAndCompare("constantmin");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLiveRange9() throws IOException, URISyntaxException {
|
||||
compileAndCompare("liverange-9");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLiveRange8() throws IOException, URISyntaxException {
|
||||
compileAndCompare("liverange-8");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLiveRange7() throws IOException, URISyntaxException {
|
||||
compileAndCompare("liverange-7");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLiveRange6() throws IOException, URISyntaxException {
|
||||
compileAndCompare("liverange-6");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLiveRange5() throws IOException, URISyntaxException {
|
||||
compileAndCompare("liverange-5");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLiveRange4() throws IOException, URISyntaxException {
|
||||
compileAndCompare("liverange-4");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLiveRange3() throws IOException, URISyntaxException {
|
||||
compileAndCompare("liverange-3");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLiveRange2() throws IOException, URISyntaxException {
|
||||
compileAndCompare("liverange-2",log().verboseUplift().verboseLiveRanges().verboseLoopAnalysis());
|
||||
compileAndCompare("liverange-2");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLiveRange1() throws IOException, URISyntaxException {
|
||||
compileAndCompare("liverange-1",log().verboseUplift().verboseLiveRanges());
|
||||
compileAndCompare("liverange-1");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
20
src/test/kc/liverange-3.kc
Normal file
20
src/test/kc/liverange-3.kc
Normal file
@ -0,0 +1,20 @@
|
||||
// Test effective live range and register allocation
|
||||
// Here main::b should be allocated to the same register as print::b and main::ca to the same register as print::ca
|
||||
|
||||
void main() {
|
||||
for(char a: 0..100 ) {
|
||||
for( char b: 0..100 ) {
|
||||
for( char c: 0..100 ) {
|
||||
char ca = c+a;
|
||||
print(b, ca);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const char* SCREEN = 0x0400;
|
||||
|
||||
void print(char b, char ca) {
|
||||
(*(SCREEN+999))++;
|
||||
SCREEN[b] = ca;
|
||||
}
|
23
src/test/kc/liverange-4.kc
Normal file
23
src/test/kc/liverange-4.kc
Normal file
@ -0,0 +1,23 @@
|
||||
// Test effective live range and register allocation
|
||||
// Here out::b, print::b and main::b can have the same allocation
|
||||
|
||||
void main() {
|
||||
for(char a: 0..100 ) {
|
||||
for( char b: 0..100 ) {
|
||||
for( char c: 0..100 ) {
|
||||
char ca = c+a;
|
||||
print(b, ca);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const char* SCREEN = 0x0400;
|
||||
|
||||
void print(char b, char ca) {
|
||||
out(b, ca);
|
||||
}
|
||||
|
||||
void out(char b, char ca) {
|
||||
SCREEN[b] = ca;
|
||||
}
|
24
src/test/kc/liverange-5.kc
Normal file
24
src/test/kc/liverange-5.kc
Normal file
@ -0,0 +1,24 @@
|
||||
// Test effective live range and register allocation
|
||||
// Here out::b, print::b and main::b can have the same allocation
|
||||
|
||||
void main() {
|
||||
for(char a: 0..100 ) {
|
||||
for( char b: 0..100 ) {
|
||||
for( char c: 0..100 ) {
|
||||
char ca = c+a;
|
||||
print(b, ca);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const char* SCREEN = 0x0400;
|
||||
|
||||
void print(char b, char ca) {
|
||||
out(b, ca);
|
||||
}
|
||||
|
||||
void out(char b, char ca) {
|
||||
(*(SCREEN+999))++;
|
||||
SCREEN[b] = ca;
|
||||
}
|
14
src/test/kc/liverange-6.kc
Normal file
14
src/test/kc/liverange-6.kc
Normal file
@ -0,0 +1,14 @@
|
||||
// Test effective live range and register allocation
|
||||
|
||||
|
||||
byte[] msg = "hello world!";
|
||||
const char* SCREEN = 0x0400;
|
||||
char idx = 0;
|
||||
|
||||
void main() {
|
||||
for( byte i: 0..11) out(msg[i]);
|
||||
}
|
||||
|
||||
void out(char c) {
|
||||
SCREEN[idx++] = c;
|
||||
}
|
20
src/test/kc/liverange-7.kc
Normal file
20
src/test/kc/liverange-7.kc
Normal file
@ -0,0 +1,20 @@
|
||||
// Test effective live range and register allocation
|
||||
// Here main::c, out2::c and out::c can all have the same allocation - and the global idx can be allocated to a hardware register.
|
||||
|
||||
const char* SCREEN = 0x0400;
|
||||
char idx = 0;
|
||||
|
||||
void main() {
|
||||
for(char c: 0..39 ) {
|
||||
out2(c);
|
||||
}
|
||||
}
|
||||
|
||||
void out2(char c) {
|
||||
out(c);
|
||||
}
|
||||
|
||||
void out(char c) {
|
||||
idx++;
|
||||
SCREEN[idx] = c;
|
||||
}
|
21
src/test/kc/liverange-8.kc
Normal file
21
src/test/kc/liverange-8.kc
Normal file
@ -0,0 +1,21 @@
|
||||
// Test effective live range and register allocation
|
||||
// Here main::c, out2::c and out::c can all have the same allocation - and the global idx can be allocated to a hardware register.
|
||||
|
||||
const char* SCREEN = 0x0400;
|
||||
char idx = 0;
|
||||
|
||||
void main() {
|
||||
for(char c: 0..39 ) {
|
||||
out2(c);
|
||||
}
|
||||
}
|
||||
|
||||
void out2(char c) {
|
||||
out(c);
|
||||
out(c);
|
||||
}
|
||||
|
||||
void out(char c) {
|
||||
idx++;
|
||||
SCREEN[idx] = c;
|
||||
}
|
28
src/test/kc/liverange-9.kc
Normal file
28
src/test/kc/liverange-9.kc
Normal file
@ -0,0 +1,28 @@
|
||||
// Test effective live range and register allocation
|
||||
// Here main::c, outsw::c and outw::c can all have the same allocation
|
||||
|
||||
const char* SCREEN = 0x0400;
|
||||
char idx = 0;
|
||||
|
||||
void main() {
|
||||
for(char c: 0..39 ) {
|
||||
outsw(c);
|
||||
}
|
||||
}
|
||||
|
||||
void outsw(char c) {
|
||||
out('-');
|
||||
outw(c);
|
||||
}
|
||||
|
||||
char[] HEXTAB = "0123456789abcdef";
|
||||
|
||||
void outw(char c) {
|
||||
out(HEXTAB[c<<4]);
|
||||
out(HEXTAB[c&0x0f]);
|
||||
}
|
||||
|
||||
void out(char c) {
|
||||
idx++;
|
||||
SCREEN[idx] = c;
|
||||
}
|
@ -93,7 +93,7 @@ main::@2: scope:[main] from main::@1
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte) i loadstore !zp[-1]:2 9.5
|
||||
(byte) i loadstore !zp[-1]:2 84.49999999999999
|
||||
(void()) main()
|
||||
|
||||
Initial phi equivalence classes
|
||||
@ -159,13 +159,13 @@ main: {
|
||||
// File Data
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [0] (byte) i ← (byte) 3 [ i ] ( [ i ] ) always clobbers reg byte a
|
||||
Statement [5] if((byte) i<(byte) 7) goto main::@2 [ i ] ( main:2 [ i ] ) always clobbers reg byte a
|
||||
Statement [7] *((const byte*) SCREEN + (byte) i) ← (byte) i [ i ] ( main:2 [ i ] ) always clobbers reg byte a reg byte y
|
||||
Statement [0] (byte) i ← (byte) 3 [ i ] ( [ i ] { } ) always clobbers reg byte a
|
||||
Statement [5] if((byte) i<(byte) 7) goto main::@2 [ i ] ( [ i ] { } ) always clobbers reg byte a
|
||||
Statement [7] *((const byte*) SCREEN + (byte) i) ← (byte) i [ i ] ( [ i ] { } ) always clobbers reg byte a reg byte y
|
||||
Potential registers zp[1]:2 [ i ] : zp[1]:2 ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [] 9.5: zp[1]:2 [ i ]
|
||||
Uplift Scope [] 84.5: zp[1]:2 [ i ]
|
||||
Uplift Scope [main]
|
||||
|
||||
Uplifting [] best 338 combination zp[1]:2 [ i ]
|
||||
@ -251,7 +251,7 @@ FINAL SYMBOL TABLE
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte*) SCREEN = (byte*) 1024
|
||||
(byte) i loadstore !zp[-1]:2 zp[1]:2 9.5
|
||||
(byte) i loadstore !zp[-1]:2 zp[1]:2 84.49999999999999
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
|
@ -2,7 +2,7 @@
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte*) SCREEN = (byte*) 1024
|
||||
(byte) i loadstore !zp[-1]:2 zp[1]:2 9.5
|
||||
(byte) i loadstore !zp[-1]:2 zp[1]:2 84.49999999999999
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
|
@ -94,7 +94,7 @@ main::@2: scope:[main] from main::@1
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(void()) main()
|
||||
(byte) main::i loadstore !zp[-1]:2 14.25
|
||||
(byte) main::i loadstore !zp[-1]:2 129.0
|
||||
|
||||
Initial phi equivalence classes
|
||||
Added variable main::i to live range equivalence class [ main::i ]
|
||||
@ -157,13 +157,13 @@ main: {
|
||||
// File Data
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [4] (byte) main::i ← (byte) 3 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a
|
||||
Statement [5] if((byte) main::i<(byte) 7) goto main::@2 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a
|
||||
Statement [7] *((const byte*) SCREEN + (byte) main::i) ← (byte) main::i [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a reg byte y
|
||||
Statement [4] (byte) main::i ← (byte) 3 [ main::i ] ( [ main::i ] { } ) always clobbers reg byte a
|
||||
Statement [5] if((byte) main::i<(byte) 7) goto main::@2 [ main::i ] ( [ main::i ] { } ) always clobbers reg byte a
|
||||
Statement [7] *((const byte*) SCREEN + (byte) main::i) ← (byte) main::i [ main::i ] ( [ main::i ] { } ) always clobbers reg byte a reg byte y
|
||||
Potential registers zp[1]:2 [ main::i ] : zp[1]:2 ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 14.25: zp[1]:2 [ main::i ]
|
||||
Uplift Scope [main] 129: zp[1]:2 [ main::i ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 311 combination zp[1]:2 [ main::i ]
|
||||
@ -253,7 +253,7 @@ FINAL SYMBOL TABLE
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@return
|
||||
(byte) main::i loadstore !zp[-1]:2 zp[1]:2 14.25
|
||||
(byte) main::i loadstore !zp[-1]:2 zp[1]:2 129.0
|
||||
|
||||
zp[1]:2 [ main::i ]
|
||||
|
||||
|
@ -6,6 +6,6 @@
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@return
|
||||
(byte) main::i loadstore !zp[-1]:2 zp[1]:2 14.25
|
||||
(byte) main::i loadstore !zp[-1]:2 zp[1]:2 129.0
|
||||
|
||||
zp[1]:2 [ main::i ]
|
||||
|
@ -93,7 +93,7 @@ main::@2: scope:[main] from main::@1
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte) i loadstore !mem[-1]:8192 9.5
|
||||
(byte) i loadstore !mem[-1]:8192 84.49999999999999
|
||||
(void()) main()
|
||||
|
||||
Initial phi equivalence classes
|
||||
@ -159,13 +159,13 @@ main: {
|
||||
// File Data
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [0] (byte) i ← (byte) 3 [ i ] ( [ i ] ) always clobbers reg byte a
|
||||
Statement [5] if((byte) i<(byte) 7) goto main::@2 [ i ] ( main:2 [ i ] ) always clobbers reg byte a
|
||||
Statement [7] *((const byte*) SCREEN + (byte) i) ← (byte) i [ i ] ( main:2 [ i ] ) always clobbers reg byte a reg byte y
|
||||
Statement [0] (byte) i ← (byte) 3 [ i ] ( [ i ] { } ) always clobbers reg byte a
|
||||
Statement [5] if((byte) i<(byte) 7) goto main::@2 [ i ] ( [ i ] { } ) always clobbers reg byte a
|
||||
Statement [7] *((const byte*) SCREEN + (byte) i) ← (byte) i [ i ] ( [ i ] { } ) always clobbers reg byte a reg byte y
|
||||
Potential registers mem[1]:8192 [ i ] : mem[1]:8192 ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [] 9.5: mem[1]:8192 [ i ]
|
||||
Uplift Scope [] 84.5: mem[1]:8192 [ i ]
|
||||
Uplift Scope [main]
|
||||
|
||||
Uplifting [] best 369 combination mem[1]:8192 [ i ]
|
||||
@ -251,7 +251,7 @@ FINAL SYMBOL TABLE
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte*) SCREEN = (byte*) 1024
|
||||
(byte) i loadstore !mem[-1]:8192 mem[1]:8192 9.5
|
||||
(byte) i loadstore !mem[-1]:8192 mem[1]:8192 84.49999999999999
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
|
@ -2,7 +2,7 @@
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte*) SCREEN = (byte*) 1024
|
||||
(byte) i loadstore !mem[-1]:8192 mem[1]:8192 9.5
|
||||
(byte) i loadstore !mem[-1]:8192 mem[1]:8192 84.49999999999999
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
|
@ -94,7 +94,7 @@ main::@2: scope:[main] from main::@1
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(void()) main()
|
||||
(byte) main::i loadstore !mem[-1]:8192 14.25
|
||||
(byte) main::i loadstore !mem[-1]:8192 129.0
|
||||
|
||||
Initial phi equivalence classes
|
||||
Added variable main::i to live range equivalence class [ main::i ]
|
||||
@ -157,13 +157,13 @@ main: {
|
||||
// File Data
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [4] (byte) main::i ← (byte) 3 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a
|
||||
Statement [5] if((byte) main::i<(byte) 7) goto main::@2 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a
|
||||
Statement [7] *((const byte*) SCREEN + (byte) main::i) ← (byte) main::i [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a reg byte y
|
||||
Statement [4] (byte) main::i ← (byte) 3 [ main::i ] ( [ main::i ] { } ) always clobbers reg byte a
|
||||
Statement [5] if((byte) main::i<(byte) 7) goto main::@2 [ main::i ] ( [ main::i ] { } ) always clobbers reg byte a
|
||||
Statement [7] *((const byte*) SCREEN + (byte) main::i) ← (byte) main::i [ main::i ] ( [ main::i ] { } ) always clobbers reg byte a reg byte y
|
||||
Potential registers mem[1]:8192 [ main::i ] : mem[1]:8192 ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 14.25: mem[1]:8192 [ main::i ]
|
||||
Uplift Scope [main] 129: mem[1]:8192 [ main::i ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 342 combination mem[1]:8192 [ main::i ]
|
||||
@ -253,7 +253,7 @@ FINAL SYMBOL TABLE
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@return
|
||||
(byte) main::i loadstore !mem[-1]:8192 mem[1]:8192 14.25
|
||||
(byte) main::i loadstore !mem[-1]:8192 mem[1]:8192 129.0
|
||||
|
||||
mem[1]:8192 [ main::i ]
|
||||
|
||||
|
@ -6,6 +6,6 @@
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@return
|
||||
(byte) main::i loadstore !mem[-1]:8192 mem[1]:8192 14.25
|
||||
(byte) main::i loadstore !mem[-1]:8192 mem[1]:8192 129.0
|
||||
|
||||
mem[1]:8192 [ main::i ]
|
||||
|
@ -114,9 +114,9 @@ main::@2: scope:[main] from main::@1
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(void()) main()
|
||||
(byte~) main::$1 22.0
|
||||
(byte~) main::$2 22.0
|
||||
(byte) main::i loadstore !zp[-1]:2 9.875
|
||||
(byte~) main::$1 202.0
|
||||
(byte~) main::$2 202.0
|
||||
(byte) main::i loadstore !zp[-1]:2 89.75
|
||||
|
||||
Initial phi equivalence classes
|
||||
Added variable main::i to live range equivalence class [ main::i ]
|
||||
@ -206,18 +206,18 @@ main: {
|
||||
// File Data
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [4] (byte) main::i ← (byte) 0 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a
|
||||
Statement [5] if((byte) main::i<(byte) 8) goto main::@2 [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a
|
||||
Statement [7] (byte~) main::$1 ← (byte) main::i << (byte) 1 [ main::i main::$1 ] ( main:2 [ main::i main::$1 ] ) always clobbers reg byte a
|
||||
Statement [8] *((const word*) SCREEN + (byte~) main::$1) ← (const word) main::ch [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a
|
||||
Statement [10] (byte~) main::$2 ← (byte) main::i << (byte) 1 [ main::i main::$2 ] ( main:2 [ main::i main::$2 ] ) always clobbers reg byte a
|
||||
Statement [11] *((const word*) SCREEN + (byte~) main::$2) ← (const word) main::ch [ main::i ] ( main:2 [ main::i ] ) always clobbers reg byte a
|
||||
Statement [4] (byte) main::i ← (byte) 0 [ main::i ] ( [ main::i ] { } ) always clobbers reg byte a
|
||||
Statement [5] if((byte) main::i<(byte) 8) goto main::@2 [ main::i ] ( [ main::i ] { } ) always clobbers reg byte a
|
||||
Statement [7] (byte~) main::$1 ← (byte) main::i << (byte) 1 [ main::i main::$1 ] ( [ main::i main::$1 ] { } ) always clobbers reg byte a
|
||||
Statement [8] *((const word*) SCREEN + (byte~) main::$1) ← (const word) main::ch [ main::i ] ( [ main::i ] { } ) always clobbers reg byte a
|
||||
Statement [10] (byte~) main::$2 ← (byte) main::i << (byte) 1 [ main::i main::$2 ] ( [ main::i main::$2 ] { } ) always clobbers reg byte a
|
||||
Statement [11] *((const word*) SCREEN + (byte~) main::$2) ← (const word) main::ch [ main::i ] ( [ main::i ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ main::i ] : zp[1]:2 ,
|
||||
Potential registers zp[1]:3 [ main::$1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:4 [ main::$2 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 22: zp[1]:3 [ main::$1 ] 22: zp[1]:4 [ main::$2 ] 9.88: zp[1]:2 [ main::i ]
|
||||
Uplift Scope [main] 202: zp[1]:3 [ main::$1 ] 202: zp[1]:4 [ main::$2 ] 89.75: zp[1]:2 [ main::i ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 681 combination reg byte a [ main::$1 ] reg byte a [ main::$2 ] zp[1]:2 [ main::i ]
|
||||
@ -321,13 +321,13 @@ FINAL SYMBOL TABLE
|
||||
(label) @end
|
||||
(const word*) SCREEN = (word*) 1024
|
||||
(void()) main()
|
||||
(byte~) main::$1 reg byte a 22.0
|
||||
(byte~) main::$2 reg byte a 22.0
|
||||
(byte~) main::$1 reg byte a 202.0
|
||||
(byte~) main::$2 reg byte a 202.0
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@return
|
||||
(const word) main::ch = (word) $102
|
||||
(byte) main::i loadstore !zp[-1]:2 zp[1]:2 9.875
|
||||
(byte) main::i loadstore !zp[-1]:2 zp[1]:2 89.75
|
||||
|
||||
zp[1]:2 [ main::i ]
|
||||
reg byte a [ main::$1 ]
|
||||
|
@ -3,13 +3,13 @@
|
||||
(label) @end
|
||||
(const word*) SCREEN = (word*) 1024
|
||||
(void()) main()
|
||||
(byte~) main::$1 reg byte a 22.0
|
||||
(byte~) main::$2 reg byte a 22.0
|
||||
(byte~) main::$1 reg byte a 202.0
|
||||
(byte~) main::$2 reg byte a 202.0
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@return
|
||||
(const word) main::ch = (word) $102
|
||||
(byte) main::i loadstore !zp[-1]:2 zp[1]:2 9.875
|
||||
(byte) main::i loadstore !zp[-1]:2 zp[1]:2 89.75
|
||||
|
||||
zp[1]:2 [ main::i ]
|
||||
reg byte a [ main::$1 ]
|
||||
|
@ -119,7 +119,7 @@ VARIABLE REGISTER WEIGHTS
|
||||
(byte) idx loadstore !zp[-1]:3 0.2222222222222222
|
||||
(void()) main()
|
||||
(void()) print((byte) print::ch)
|
||||
(byte) print::ch loadstore !zp[-1]:2 2.0
|
||||
(byte) print::ch loadstore !zp[-1]:2 11.0
|
||||
|
||||
Initial phi equivalence classes
|
||||
Added variable idx to live range equivalence class [ idx ]
|
||||
@ -207,16 +207,16 @@ print: {
|
||||
// File Data
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [1] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] ) always clobbers reg byte a
|
||||
Statement [5] (byte) print::ch ← (byte) 'c' [ idx print::ch ] ( main:3 [ idx print::ch ] ) always clobbers reg byte a
|
||||
Statement [7] (byte) print::ch ← (byte) 'm' [ idx print::ch ] ( main:3 [ idx print::ch ] ) always clobbers reg byte a
|
||||
Statement [9] (byte) print::ch ← (byte) 'l' [ idx print::ch ] ( main:3 [ idx print::ch ] ) always clobbers reg byte a
|
||||
Statement [1] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] { } ) always clobbers reg byte a
|
||||
Statement [5] (byte) print::ch ← (byte) 'c' [ idx print::ch ] ( [ idx print::ch ] { } ) always clobbers reg byte a
|
||||
Statement [7] (byte) print::ch ← (byte) 'm' [ idx print::ch ] ( [ idx print::ch ] { } ) always clobbers reg byte a
|
||||
Statement [9] (byte) print::ch ← (byte) 'l' [ idx print::ch ] ( [ idx print::ch ] { } ) always clobbers reg byte a
|
||||
Statement asm { ldxidx ldach staSCREEN,x incidx } always clobbers reg byte a reg byte x
|
||||
Potential registers zp[1]:3 [ idx ] : zp[1]:3 ,
|
||||
Potential registers zp[1]:2 [ print::ch ] : zp[1]:2 ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [print] 2: zp[1]:2 [ print::ch ]
|
||||
Uplift Scope [print] 11: zp[1]:2 [ print::ch ]
|
||||
Uplift Scope [] 0.22: zp[1]:3 [ idx ]
|
||||
Uplift Scope [main]
|
||||
|
||||
@ -341,7 +341,7 @@ FINAL SYMBOL TABLE
|
||||
(label) main::@return
|
||||
(void()) print((byte) print::ch)
|
||||
(label) print::@return
|
||||
(byte) print::ch loadstore !zp[-1]:2 zp[1]:2 2.0
|
||||
(byte) print::ch loadstore !zp[-1]:2 zp[1]:2 11.0
|
||||
|
||||
zp[1]:3 [ idx ]
|
||||
zp[1]:2 [ print::ch ]
|
||||
|
@ -10,7 +10,7 @@
|
||||
(label) main::@return
|
||||
(void()) print((byte) print::ch)
|
||||
(label) print::@return
|
||||
(byte) print::ch loadstore !zp[-1]:2 zp[1]:2 2.0
|
||||
(byte) print::ch loadstore !zp[-1]:2 zp[1]:2 11.0
|
||||
|
||||
zp[1]:3 [ idx ]
|
||||
zp[1]:2 [ print::ch ]
|
||||
|
@ -119,7 +119,7 @@ VARIABLE REGISTER WEIGHTS
|
||||
(byte) idx loadstore !mem[-1]:12288 0.2222222222222222
|
||||
(void()) main()
|
||||
(void()) print((byte) print::ch)
|
||||
(byte) print::ch loadstore !mem[-1]:12289 2.0
|
||||
(byte) print::ch loadstore !mem[-1]:12289 11.0
|
||||
|
||||
Initial phi equivalence classes
|
||||
Added variable idx to live range equivalence class [ idx ]
|
||||
@ -207,16 +207,16 @@ print: {
|
||||
// File Data
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [1] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] ) always clobbers reg byte a
|
||||
Statement [5] (byte) print::ch ← (byte) 'c' [ idx print::ch ] ( main:3 [ idx print::ch ] ) always clobbers reg byte a
|
||||
Statement [7] (byte) print::ch ← (byte) 'm' [ idx print::ch ] ( main:3 [ idx print::ch ] ) always clobbers reg byte a
|
||||
Statement [9] (byte) print::ch ← (byte) 'l' [ idx print::ch ] ( main:3 [ idx print::ch ] ) always clobbers reg byte a
|
||||
Statement [1] (byte) idx ← (byte) 0 [ idx ] ( [ idx ] { } ) always clobbers reg byte a
|
||||
Statement [5] (byte) print::ch ← (byte) 'c' [ idx print::ch ] ( [ idx print::ch ] { } ) always clobbers reg byte a
|
||||
Statement [7] (byte) print::ch ← (byte) 'm' [ idx print::ch ] ( [ idx print::ch ] { } ) always clobbers reg byte a
|
||||
Statement [9] (byte) print::ch ← (byte) 'l' [ idx print::ch ] ( [ idx print::ch ] { } ) always clobbers reg byte a
|
||||
Statement asm { ldxidx ldach staSCREEN,x incidx } always clobbers reg byte a reg byte x
|
||||
Potential registers mem[1]:12288 [ idx ] : mem[1]:12288 ,
|
||||
Potential registers mem[1]:12289 [ print::ch ] : mem[1]:12289 ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [print] 2: mem[1]:12289 [ print::ch ]
|
||||
Uplift Scope [print] 11: mem[1]:12289 [ print::ch ]
|
||||
Uplift Scope [] 0.22: mem[1]:12288 [ idx ]
|
||||
Uplift Scope [main]
|
||||
|
||||
@ -341,7 +341,7 @@ FINAL SYMBOL TABLE
|
||||
(label) main::@return
|
||||
(void()) print((byte) print::ch)
|
||||
(label) print::@return
|
||||
(byte) print::ch loadstore !mem[-1]:12289 mem[1]:12289 2.0
|
||||
(byte) print::ch loadstore !mem[-1]:12289 mem[1]:12289 11.0
|
||||
|
||||
mem[1]:12288 [ idx ]
|
||||
mem[1]:12289 [ print::ch ]
|
||||
|
@ -10,7 +10,7 @@
|
||||
(label) main::@return
|
||||
(void()) print((byte) print::ch)
|
||||
(label) print::@return
|
||||
(byte) print::ch loadstore !mem[-1]:12289 mem[1]:12289 2.0
|
||||
(byte) print::ch loadstore !mem[-1]:12289 mem[1]:12289 11.0
|
||||
|
||||
mem[1]:12288 [ idx ]
|
||||
mem[1]:12289 [ print::ch ]
|
||||
|
@ -54,7 +54,7 @@ Successful SSA optimization PassNCastSimplification
|
||||
Finalized unsigned number type (byte) 1
|
||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Inferred type updated to byte in (unumber~) main::$0 ← *((const byte*) main::bp) + (byte) 1
|
||||
Alias (byte) main::c#0 = (byte~) main::$0
|
||||
Alias main::c#0 = main::$0
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Simple Condition (bool~) main::$1 [5] if((byte) main::b!=rangelast(0,$a)) goto main::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
@ -108,9 +108,9 @@ main::@return: scope:[main] from main::@1
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(void()) main()
|
||||
(byte) main::b loadstore 9.200000000000001
|
||||
(byte) main::b loadstore 83.0
|
||||
(byte) main::c
|
||||
(byte) main::c#0 22.0
|
||||
(byte) main::c#0 202.0
|
||||
|
||||
Initial phi equivalence classes
|
||||
Added variable main::b to live range equivalence class [ main::b ]
|
||||
@ -179,14 +179,14 @@ main: {
|
||||
// File Data
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [4] (byte) main::b ← (byte) 0 [ main::b ] ( main:2 [ main::b ] ) always clobbers reg byte a
|
||||
Statement [6] *((const byte*) main::SCREEN + (byte) main::b) ← (byte) main::c#0 [ main::b ] ( main:2 [ main::b ] ) always clobbers reg byte y
|
||||
Statement [8] if((byte) main::b!=(byte) $b) goto main::@1 [ main::b ] ( main:2 [ main::b ] ) always clobbers reg byte a
|
||||
Statement [4] (byte) main::b ← (byte) 0 [ main::b ] ( [ main::b ] { } ) always clobbers reg byte a
|
||||
Statement [6] *((const byte*) main::SCREEN + (byte) main::b) ← (byte) main::c#0 [ main::b ] ( [ main::b ] { } ) always clobbers reg byte y
|
||||
Statement [8] if((byte) main::b!=(byte) $b) goto main::@1 [ main::b ] ( [ main::b ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ main::b ] : zp[1]:2 ,
|
||||
Potential registers zp[1]:3 [ main::c#0 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 22: zp[1]:3 [ main::c#0 ] 9.2: zp[1]:2 [ main::b ]
|
||||
Uplift Scope [main] 202: zp[1]:3 [ main::c#0 ] 83: zp[1]:2 [ main::b ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 331 combination reg byte a [ main::c#0 ] zp[1]:2 [ main::b ]
|
||||
@ -275,10 +275,10 @@ FINAL SYMBOL TABLE
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
(const byte*) main::SCREEN = (byte*) 1024
|
||||
(byte) main::b loadstore zp[1]:2 9.200000000000001
|
||||
(byte) main::b loadstore zp[1]:2 83.0
|
||||
(const byte*) main::bp = &(byte) main::b
|
||||
(byte) main::c
|
||||
(byte) main::c#0 reg byte a 22.0
|
||||
(byte) main::c#0 reg byte a 202.0
|
||||
|
||||
zp[1]:2 [ main::b ]
|
||||
reg byte a [ main::c#0 ]
|
||||
|
@ -5,10 +5,10 @@
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
(const byte*) main::SCREEN = (byte*) 1024
|
||||
(byte) main::b loadstore zp[1]:2 9.200000000000001
|
||||
(byte) main::b loadstore zp[1]:2 83.0
|
||||
(const byte*) main::bp = &(byte) main::b
|
||||
(byte) main::c
|
||||
(byte) main::c#0 reg byte a 22.0
|
||||
(byte) main::c#0 reg byte a 202.0
|
||||
|
||||
zp[1]:2 [ main::b ]
|
||||
reg byte a [ main::c#0 ]
|
||||
|
@ -185,14 +185,14 @@ setByte::@return: scope:[setByte] from setByte
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(void()) main()
|
||||
(byte) main::b1 loadstore 0.36363636363636365
|
||||
(byte) main::b2 loadstore 0.36363636363636365
|
||||
(byte) main::b3 loadstore 0.36363636363636365
|
||||
(byte) main::b1 loadstore 2.0
|
||||
(byte) main::b2 loadstore 2.0
|
||||
(byte) main::b3 loadstore 2.0
|
||||
(void()) setByte((byte*) setByte::ptr , (byte) setByte::b)
|
||||
(byte) setByte::b
|
||||
(byte) setByte::b#3 2.0
|
||||
(byte) setByte::b#3 101.0
|
||||
(byte*) setByte::ptr
|
||||
(byte*) setByte::ptr#3 2.0
|
||||
(byte*) setByte::ptr#3 101.0
|
||||
|
||||
Initial phi equivalence classes
|
||||
[ setByte::b#3 ]
|
||||
@ -332,13 +332,13 @@ setByte: {
|
||||
// File Data
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [4] (byte) main::b1 ← (byte) 0 [ main::b1 ] ( main:2 [ main::b1 ] ) always clobbers reg byte a
|
||||
Statement [5] (byte) main::b2 ← (byte) 0 [ main::b1 main::b2 ] ( main:2 [ main::b1 main::b2 ] ) always clobbers reg byte a
|
||||
Statement [6] (byte) main::b3 ← (byte) 0 [ main::b1 main::b2 main::b3 ] ( main:2 [ main::b1 main::b2 main::b3 ] ) always clobbers reg byte a
|
||||
Statement [12] *((const byte*) main::SCREEN) ← (byte) main::b1 [ main::b2 main::b3 ] ( main:2 [ main::b2 main::b3 ] ) always clobbers reg byte a
|
||||
Statement [13] *((const byte*) main::SCREEN+(byte) 1) ← (byte) main::b2 [ main::b3 ] ( main:2 [ main::b3 ] ) always clobbers reg byte a
|
||||
Statement [14] *((const byte*) main::SCREEN+(byte) 2) ← (byte) main::b3 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [17] *((byte*) setByte::ptr#3) ← (byte) setByte::b#3 [ main::b1 main::b2 main::b3 ] ( main:2::setByte:7 [ main::b1 main::b2 main::b3 ] main:2::setByte:9 [ main::b1 main::b2 main::b3 ] main:2::setByte:11 [ main::b1 main::b2 main::b3 ] ) always clobbers reg byte y
|
||||
Statement [4] (byte) main::b1 ← (byte) 0 [ main::b1 ] ( [ main::b1 ] { } ) always clobbers reg byte a
|
||||
Statement [5] (byte) main::b2 ← (byte) 0 [ main::b1 main::b2 ] ( [ main::b1 main::b2 ] { } ) always clobbers reg byte a
|
||||
Statement [6] (byte) main::b3 ← (byte) 0 [ main::b1 main::b2 main::b3 ] ( [ main::b1 main::b2 main::b3 ] { } ) always clobbers reg byte a
|
||||
Statement [12] *((const byte*) main::SCREEN) ← (byte) main::b1 [ main::b2 main::b3 ] ( [ main::b2 main::b3 ] { } ) always clobbers reg byte a
|
||||
Statement [13] *((const byte*) main::SCREEN+(byte) 1) ← (byte) main::b2 [ main::b3 ] ( [ main::b3 ] { } ) always clobbers reg byte a
|
||||
Statement [14] *((const byte*) main::SCREEN+(byte) 2) ← (byte) main::b3 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [17] *((byte*) setByte::ptr#3) ← (byte) setByte::b#3 [ main::b1 main::b2 main::b3 ] ( [ main::b1 main::b2 main::b3 ] { } ) always clobbers reg byte y
|
||||
Potential registers zp[1]:2 [ setByte::b#3 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:3 [ setByte::ptr#3 ] : zp[2]:3 ,
|
||||
Potential registers zp[1]:5 [ main::b1 ] : zp[1]:5 ,
|
||||
@ -346,8 +346,8 @@ Potential registers zp[1]:6 [ main::b2 ] : zp[1]:6 ,
|
||||
Potential registers zp[1]:7 [ main::b3 ] : zp[1]:7 ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [setByte] 2: zp[1]:2 [ setByte::b#3 ] 2: zp[2]:3 [ setByte::ptr#3 ]
|
||||
Uplift Scope [main] 0.36: zp[1]:5 [ main::b1 ] 0.36: zp[1]:6 [ main::b2 ] 0.36: zp[1]:7 [ main::b3 ]
|
||||
Uplift Scope [setByte] 101: zp[1]:2 [ setByte::b#3 ] 101: zp[2]:3 [ setByte::ptr#3 ]
|
||||
Uplift Scope [main] 2: zp[1]:5 [ main::b1 ] 2: zp[1]:6 [ main::b2 ] 2: zp[1]:7 [ main::b3 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [setByte] best 139 combination reg byte x [ setByte::b#3 ] zp[2]:3 [ setByte::ptr#3 ]
|
||||
@ -522,15 +522,15 @@ FINAL SYMBOL TABLE
|
||||
(label) main::@3
|
||||
(label) main::@return
|
||||
(const byte*) main::SCREEN = (byte*) 1024
|
||||
(byte) main::b1 loadstore zp[1]:4 0.36363636363636365
|
||||
(byte) main::b2 loadstore zp[1]:5 0.36363636363636365
|
||||
(byte) main::b3 loadstore zp[1]:6 0.36363636363636365
|
||||
(byte) main::b1 loadstore zp[1]:4 2.0
|
||||
(byte) main::b2 loadstore zp[1]:5 2.0
|
||||
(byte) main::b3 loadstore zp[1]:6 2.0
|
||||
(void()) setByte((byte*) setByte::ptr , (byte) setByte::b)
|
||||
(label) setByte::@return
|
||||
(byte) setByte::b
|
||||
(byte) setByte::b#3 reg byte x 2.0
|
||||
(byte) setByte::b#3 reg byte x 101.0
|
||||
(byte*) setByte::ptr
|
||||
(byte*) setByte::ptr#3 ptr zp[2]:2 2.0
|
||||
(byte*) setByte::ptr#3 ptr zp[2]:2 101.0
|
||||
|
||||
reg byte x [ setByte::b#3 ]
|
||||
zp[2]:2 [ setByte::ptr#3 ]
|
||||
|
@ -7,15 +7,15 @@
|
||||
(label) main::@3
|
||||
(label) main::@return
|
||||
(const byte*) main::SCREEN = (byte*) 1024
|
||||
(byte) main::b1 loadstore zp[1]:4 0.36363636363636365
|
||||
(byte) main::b2 loadstore zp[1]:5 0.36363636363636365
|
||||
(byte) main::b3 loadstore zp[1]:6 0.36363636363636365
|
||||
(byte) main::b1 loadstore zp[1]:4 2.0
|
||||
(byte) main::b2 loadstore zp[1]:5 2.0
|
||||
(byte) main::b3 loadstore zp[1]:6 2.0
|
||||
(void()) setByte((byte*) setByte::ptr , (byte) setByte::b)
|
||||
(label) setByte::@return
|
||||
(byte) setByte::b
|
||||
(byte) setByte::b#3 reg byte x 2.0
|
||||
(byte) setByte::b#3 reg byte x 101.0
|
||||
(byte*) setByte::ptr
|
||||
(byte*) setByte::ptr#3 ptr zp[2]:2 2.0
|
||||
(byte*) setByte::ptr#3 ptr zp[2]:2 101.0
|
||||
|
||||
reg byte x [ setByte::b#3 ]
|
||||
zp[2]:2 [ setByte::ptr#3 ]
|
||||
|
@ -138,8 +138,8 @@ Finalized unsigned number type (byte) 3
|
||||
Finalized unsigned number type (byte) 4
|
||||
Finalized unsigned number type (byte) 5
|
||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Alias (byte) main::idx#4 = (byte) main::idx#7
|
||||
Alias (byte) main::idx#5 = (byte) main::idx#8
|
||||
Alias main::idx#4 = main::idx#7
|
||||
Alias main::idx#5 = main::idx#8
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Identical Phi Values (byte) setv::v#1 (byte) setv::v#0
|
||||
Identical Phi Values (byte) setp::v#1 (byte) setp::v#0
|
||||
@ -294,7 +294,7 @@ VARIABLE REGISTER WEIGHTS
|
||||
(byte) setp::v
|
||||
(void()) setv((byte) setv::v)
|
||||
(byte) setv::v
|
||||
(byte) val loadstore 1.5384615384615383
|
||||
(byte) val loadstore 14.692307692307692
|
||||
|
||||
Initial phi equivalence classes
|
||||
Added variable val to live range equivalence class [ val ]
|
||||
@ -428,28 +428,28 @@ setv: {
|
||||
// File Data
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [0] (byte) val ← (byte) 0 [ val ] ( [ val ] ) always clobbers reg byte a
|
||||
Statement [4] *((const byte*) main::SCREEN1) ← (byte) val [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [5] *((const byte*) main::SCREEN2) ← (byte) '.' [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [6] (byte) val ← (byte) 1 [ val ] ( main:2 [ val ] ) always clobbers reg byte a
|
||||
Statement [7] *((const byte*) main::SCREEN1+(byte) 1) ← (byte) val [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [8] *((const byte*) main::SCREEN2+(byte) 1) ← (byte) '.' [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [9] (byte) val ← (byte) 2 [ val ] ( main:2 [ val ] ) always clobbers reg byte a
|
||||
Statement [10] *((const byte*) main::SCREEN1+(byte) 2) ← (byte) val [ val ] ( main:2 [ val ] ) always clobbers reg byte a
|
||||
Statement [11] *((const byte*) main::SCREEN2+(byte) 2) ← *((const byte*) main::ptr) [ val ] ( main:2 [ val ] ) always clobbers reg byte a
|
||||
Statement [12] *((const byte*) main::ptr) ← (byte) 3 [ val ] ( main:2 [ val ] ) always clobbers reg byte a
|
||||
Statement [13] *((const byte*) main::SCREEN1+(byte) 3) ← (byte) val [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [14] *((const byte*) main::SCREEN2+(byte) 3) ← *((const byte*) main::ptr) [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [16] *((const byte*) main::SCREEN1+(byte) 4) ← (byte) val [ val ] ( main:2 [ val ] ) always clobbers reg byte a
|
||||
Statement [17] *((const byte*) main::SCREEN2+(byte) 4) ← *((const byte*) main::ptr) [ val ] ( main:2 [ val ] ) always clobbers reg byte a
|
||||
Statement [19] *((const byte*) main::SCREEN1+(byte) 5) ← (byte) val [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [20] *((const byte*) main::SCREEN2+(byte) 5) ← *((const byte*) main::ptr) [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [22] *((const byte*) main::ptr) ← (const byte) setp::v#0 [ ] ( main:2::setp:18 [ val ] ) always clobbers reg byte a
|
||||
Statement [24] (byte) val ← (const byte) setv::v#0 [ val ] ( main:2::setv:15 [ val ] ) always clobbers reg byte a
|
||||
Statement [0] (byte) val ← (byte) 0 [ val ] ( [ val ] { } ) always clobbers reg byte a
|
||||
Statement [4] *((const byte*) main::SCREEN1) ← (byte) val [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [5] *((const byte*) main::SCREEN2) ← (byte) '.' [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [6] (byte) val ← (byte) 1 [ val ] ( [ val ] { } ) always clobbers reg byte a
|
||||
Statement [7] *((const byte*) main::SCREEN1+(byte) 1) ← (byte) val [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [8] *((const byte*) main::SCREEN2+(byte) 1) ← (byte) '.' [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [9] (byte) val ← (byte) 2 [ val ] ( [ val ] { } ) always clobbers reg byte a
|
||||
Statement [10] *((const byte*) main::SCREEN1+(byte) 2) ← (byte) val [ val ] ( [ val ] { } ) always clobbers reg byte a
|
||||
Statement [11] *((const byte*) main::SCREEN2+(byte) 2) ← *((const byte*) main::ptr) [ val ] ( [ val ] { } ) always clobbers reg byte a
|
||||
Statement [12] *((const byte*) main::ptr) ← (byte) 3 [ val ] ( [ val ] { } ) always clobbers reg byte a
|
||||
Statement [13] *((const byte*) main::SCREEN1+(byte) 3) ← (byte) val [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [14] *((const byte*) main::SCREEN2+(byte) 3) ← *((const byte*) main::ptr) [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [16] *((const byte*) main::SCREEN1+(byte) 4) ← (byte) val [ val ] ( [ val ] { } ) always clobbers reg byte a
|
||||
Statement [17] *((const byte*) main::SCREEN2+(byte) 4) ← *((const byte*) main::ptr) [ val ] ( [ val ] { } ) always clobbers reg byte a
|
||||
Statement [19] *((const byte*) main::SCREEN1+(byte) 5) ← (byte) val [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [20] *((const byte*) main::SCREEN2+(byte) 5) ← *((const byte*) main::ptr) [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [22] *((const byte*) main::ptr) ← (const byte) setp::v#0 [ ] ( [ val ] { } ) always clobbers reg byte a
|
||||
Statement [24] (byte) val ← (const byte) setv::v#0 [ val ] ( [ val ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ val ] : zp[1]:2 ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [] 1.54: zp[1]:2 [ val ]
|
||||
Uplift Scope [] 14.69: zp[1]:2 [ val ]
|
||||
Uplift Scope [main]
|
||||
Uplift Scope [setv]
|
||||
Uplift Scope [setp]
|
||||
@ -632,7 +632,7 @@ FINAL SYMBOL TABLE
|
||||
(label) setv::@return
|
||||
(byte) setv::v
|
||||
(const byte) setv::v#0 v = (byte) 4
|
||||
(byte) val loadstore zp[1]:2 1.5384615384615383
|
||||
(byte) val loadstore zp[1]:2 14.692307692307692
|
||||
|
||||
zp[1]:2 [ val ]
|
||||
|
||||
|
@ -18,6 +18,6 @@
|
||||
(label) setv::@return
|
||||
(byte) setv::v
|
||||
(const byte) setv::v#0 v = (byte) 4
|
||||
(byte) val loadstore zp[1]:2 1.5384615384615383
|
||||
(byte) val loadstore zp[1]:2 14.692307692307692
|
||||
|
||||
zp[1]:2 [ val ]
|
||||
|
@ -132,14 +132,14 @@ Simplifying constant integer cast 1
|
||||
Successful SSA optimization PassNCastSimplification
|
||||
Finalized unsigned number type (byte) 1
|
||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Alias (byte) idx#0 = (byte) idx#8
|
||||
Alias (byte) idx#1 = (byte) idx#9
|
||||
Alias (signed word*) print::p#2 = (signed word*~) main::$2
|
||||
Alias (byte) main::i#2 = (byte) main::i#3
|
||||
Alias (byte) idx#10 = (byte) idx#2 (byte) idx#11 (byte) idx#3
|
||||
Alias (byte) idx#13 = (byte) idx#5 (byte) idx#6
|
||||
Alias (byte) idx#17 = (byte) idx#4
|
||||
Alias (byte) idx#14 = (byte) idx#7
|
||||
Alias idx#0 = idx#8
|
||||
Alias idx#1 = idx#9
|
||||
Alias print::p#2 = main::$2
|
||||
Alias main::i#2 = main::i#3
|
||||
Alias idx#10 = idx#2 idx#11 idx#3
|
||||
Alias idx#13 = idx#5 idx#6
|
||||
Alias idx#17 = idx#4
|
||||
Alias idx#14 = idx#7
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Identical Phi Values (byte) idx#15 (byte) idx#17
|
||||
Identical Phi Values (byte) idx#0 (byte) idx#13
|
||||
@ -258,18 +258,18 @@ print::@return: scope:[print] from print
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte) idx
|
||||
(byte) idx#12 5.666666666666667
|
||||
(byte) idx#13 1.3636363636363638
|
||||
(byte) idx#12 704.6666666666667
|
||||
(byte) idx#13 101.18181818181819
|
||||
(void()) main()
|
||||
(byte~) main::$5 22.0
|
||||
(byte~) main::$5 202.0
|
||||
(byte) main::i
|
||||
(byte) main::i#1 16.5
|
||||
(byte) main::i#2 8.25
|
||||
(byte) main::i#1 151.5
|
||||
(byte) main::i#2 75.75
|
||||
(void()) print((signed word*) print::p)
|
||||
(byte~) print::$0 4.0
|
||||
(byte~) print::$0 2002.0
|
||||
(signed word*) print::p
|
||||
(signed word*) print::p#2 22.0
|
||||
(signed word*) print::p#3 6.5
|
||||
(signed word*) print::p#2 202.0
|
||||
(signed word*) print::p#3 551.0
|
||||
|
||||
Initial phi equivalence classes
|
||||
[ main::i#2 main::i#1 ]
|
||||
@ -422,18 +422,18 @@ print: {
|
||||
VALS: .word 1, 2, 3, 4
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [9] (byte~) main::$5 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$5 idx#13 ] ( main:2 [ main::i#2 main::$5 idx#13 ] ) always clobbers reg byte a
|
||||
Statement [9] (byte~) main::$5 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$5 idx#13 ] ( [ main::i#2 main::$5 idx#13 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ idx#12 idx#13 ]
|
||||
Statement [10] (signed word*) print::p#2 ← (const signed word*) VALS + (byte~) main::$5 [ main::i#2 print::p#2 idx#13 ] ( main:2 [ main::i#2 print::p#2 idx#13 ] ) always clobbers reg byte a
|
||||
Statement [16] (byte~) print::$0 ← (byte) idx#12 << (byte) 1 [ idx#12 print::p#3 print::$0 ] ( main:2::print:5 [ idx#12 print::p#3 print::$0 ] main:2::print:7 [ idx#12 print::p#3 print::$0 ] main:2::print:11 [ main::i#2 idx#12 print::p#3 print::$0 ] ) always clobbers reg byte a
|
||||
Statement [17] *((const signed word*) SCREEN + (byte~) print::$0) ← *((signed word*) print::p#3) [ idx#12 ] ( main:2::print:5 [ idx#12 ] main:2::print:7 [ idx#12 ] main:2::print:11 [ main::i#2 idx#12 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [10] (signed word*) print::p#2 ← (const signed word*) VALS + (byte~) main::$5 [ main::i#2 print::p#2 idx#13 ] ( [ main::i#2 print::p#2 idx#13 ] { } ) always clobbers reg byte a
|
||||
Statement [16] (byte~) print::$0 ← (byte) idx#12 << (byte) 1 [ idx#12 print::p#3 print::$0 ] ( [ idx#12 print::p#3 print::$0 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [17] *((const signed word*) SCREEN + (byte~) print::$0) ← *((signed word*) print::p#3) [ idx#12 ] ( [ idx#12 main::i#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:3 [ idx#12 idx#13 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Statement [9] (byte~) main::$5 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$5 idx#13 ] ( main:2 [ main::i#2 main::$5 idx#13 ] ) always clobbers reg byte a
|
||||
Statement [10] (signed word*) print::p#2 ← (const signed word*) VALS + (byte~) main::$5 [ main::i#2 print::p#2 idx#13 ] ( main:2 [ main::i#2 print::p#2 idx#13 ] ) always clobbers reg byte a
|
||||
Statement [16] (byte~) print::$0 ← (byte) idx#12 << (byte) 1 [ idx#12 print::p#3 print::$0 ] ( main:2::print:5 [ idx#12 print::p#3 print::$0 ] main:2::print:7 [ idx#12 print::p#3 print::$0 ] main:2::print:11 [ main::i#2 idx#12 print::p#3 print::$0 ] ) always clobbers reg byte a
|
||||
Statement [17] *((const signed word*) SCREEN + (byte~) print::$0) ← *((signed word*) print::p#3) [ idx#12 ] ( main:2::print:5 [ idx#12 ] main:2::print:7 [ idx#12 ] main:2::print:11 [ main::i#2 idx#12 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [9] (byte~) main::$5 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::$5 idx#13 ] ( [ main::i#2 main::$5 idx#13 ] { } ) always clobbers reg byte a
|
||||
Statement [10] (signed word*) print::p#2 ← (const signed word*) VALS + (byte~) main::$5 [ main::i#2 print::p#2 idx#13 ] ( [ main::i#2 print::p#2 idx#13 ] { } ) always clobbers reg byte a
|
||||
Statement [16] (byte~) print::$0 ← (byte) idx#12 << (byte) 1 [ idx#12 print::p#3 print::$0 ] ( [ idx#12 print::p#3 print::$0 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [17] *((const signed word*) SCREEN + (byte~) print::$0) ← *((signed word*) print::p#3) [ idx#12 ] ( [ idx#12 main::i#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x ,
|
||||
Potential registers zp[1]:3 [ idx#12 idx#13 ] : zp[1]:3 , reg byte x ,
|
||||
Potential registers zp[2]:4 [ print::p#3 print::p#2 ] : zp[2]:4 ,
|
||||
@ -441,17 +441,17 @@ Potential registers zp[1]:6 [ main::$5 ] : zp[1]:6 , reg byte a , reg byte x , r
|
||||
Potential registers zp[1]:7 [ print::$0 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 24.75: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:6 [ main::$5 ]
|
||||
Uplift Scope [print] 28.5: zp[2]:4 [ print::p#3 print::p#2 ] 4: zp[1]:7 [ print::$0 ]
|
||||
Uplift Scope [] 7.03: zp[1]:3 [ idx#12 idx#13 ]
|
||||
Uplift Scope [print] 2,002: zp[1]:7 [ print::$0 ] 753: zp[2]:4 [ print::p#3 print::p#2 ]
|
||||
Uplift Scope [] 805.85: zp[1]:3 [ idx#12 idx#13 ]
|
||||
Uplift Scope [main] 227.25: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:6 [ main::$5 ]
|
||||
|
||||
Uplifting [main] best 572 combination zp[1]:2 [ main::i#2 main::i#1 ] reg byte a [ main::$5 ]
|
||||
Uplifting [print] best 568 combination zp[2]:4 [ print::p#3 print::p#2 ] reg byte a [ print::$0 ]
|
||||
Uplifting [print] best 628 combination reg byte a [ print::$0 ] zp[2]:4 [ print::p#3 print::p#2 ]
|
||||
Uplifting [] best 628 combination zp[1]:3 [ idx#12 idx#13 ]
|
||||
Uplifting [main] best 568 combination zp[1]:2 [ main::i#2 main::i#1 ] reg byte a [ main::$5 ]
|
||||
Attempting to uplift remaining variables inzp[1]:3 [ idx#12 idx#13 ]
|
||||
Uplifting [] best 568 combination zp[1]:3 [ idx#12 idx#13 ]
|
||||
Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Uplifting [main] best 568 combination zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:3 [ idx#12 idx#13 ]
|
||||
Uplifting [] best 568 combination zp[1]:3 [ idx#12 idx#13 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
@ -622,23 +622,23 @@ FINAL SYMBOL TABLE
|
||||
(const byte) SIZEOF_SIGNED_WORD = (byte) 2
|
||||
(const signed word*) VALS[] = { (signed word) 1, (signed word) 2, (signed word) 3, (signed word) 4 }
|
||||
(byte) idx
|
||||
(byte) idx#12 idx zp[1]:3 5.666666666666667
|
||||
(byte) idx#13 idx zp[1]:3 1.3636363636363638
|
||||
(byte) idx#12 idx zp[1]:3 704.6666666666667
|
||||
(byte) idx#13 idx zp[1]:3 101.18181818181819
|
||||
(void()) main()
|
||||
(byte~) main::$5 reg byte a 22.0
|
||||
(byte~) main::$5 reg byte a 202.0
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@return
|
||||
(byte) main::i
|
||||
(byte) main::i#1 i zp[1]:2 16.5
|
||||
(byte) main::i#2 i zp[1]:2 8.25
|
||||
(byte) main::i#1 i zp[1]:2 151.5
|
||||
(byte) main::i#2 i zp[1]:2 75.75
|
||||
(void()) print((signed word*) print::p)
|
||||
(byte~) print::$0 reg byte a 4.0
|
||||
(byte~) print::$0 reg byte a 2002.0
|
||||
(label) print::@return
|
||||
(signed word*) print::p
|
||||
(signed word*) print::p#2 p zp[2]:4 22.0
|
||||
(signed word*) print::p#3 p zp[2]:4 6.5
|
||||
(signed word*) print::p#2 p zp[2]:4 202.0
|
||||
(signed word*) print::p#3 p zp[2]:4 551.0
|
||||
|
||||
zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
zp[1]:3 [ idx#12 idx#13 ]
|
||||
|
@ -5,23 +5,23 @@
|
||||
(const byte) SIZEOF_SIGNED_WORD = (byte) 2
|
||||
(const signed word*) VALS[] = { (signed word) 1, (signed word) 2, (signed word) 3, (signed word) 4 }
|
||||
(byte) idx
|
||||
(byte) idx#12 idx zp[1]:3 5.666666666666667
|
||||
(byte) idx#13 idx zp[1]:3 1.3636363636363638
|
||||
(byte) idx#12 idx zp[1]:3 704.6666666666667
|
||||
(byte) idx#13 idx zp[1]:3 101.18181818181819
|
||||
(void()) main()
|
||||
(byte~) main::$5 reg byte a 22.0
|
||||
(byte~) main::$5 reg byte a 202.0
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@return
|
||||
(byte) main::i
|
||||
(byte) main::i#1 i zp[1]:2 16.5
|
||||
(byte) main::i#2 i zp[1]:2 8.25
|
||||
(byte) main::i#1 i zp[1]:2 151.5
|
||||
(byte) main::i#2 i zp[1]:2 75.75
|
||||
(void()) print((signed word*) print::p)
|
||||
(byte~) print::$0 reg byte a 4.0
|
||||
(byte~) print::$0 reg byte a 2002.0
|
||||
(label) print::@return
|
||||
(signed word*) print::p
|
||||
(signed word*) print::p#2 p zp[2]:4 22.0
|
||||
(signed word*) print::p#3 p zp[2]:4 6.5
|
||||
(signed word*) print::p#2 p zp[2]:4 202.0
|
||||
(signed word*) print::p#3 p zp[2]:4 551.0
|
||||
|
||||
zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
zp[1]:3 [ idx#12 idx#13 ]
|
||||
|
@ -115,9 +115,9 @@ Inferred type updated to byte in (unumber~) getValue::$0 ← (word) getValue::in
|
||||
Inferred type updated to byte in (unumber~) getValue::$4 ← (byte~) getValue::$0 * (const byte) SIZEOF_WORD
|
||||
Inferred type updated to byte in (unumber~) getValue::$1 ← *((const word*) arr16 + (byte~) getValue::$4) & (byte) $ff
|
||||
Inferred type updated to byte in (unumber~) getValue::$2 ← (byte~) getValue::$1 >> (byte) 1
|
||||
Alias (word) getValue::return#0 = (word) getValue::return#3
|
||||
Alias (byte) main::idx#2 = (byte) main::idx#3
|
||||
Alias (word) getValue::return#1 = (word~) getValue::$3 (word) getValue::return#4 (word) getValue::return#2
|
||||
Alias getValue::return#0 = getValue::return#3
|
||||
Alias main::idx#2 = main::idx#3
|
||||
Alias getValue::return#1 = getValue::$3 getValue::return#4 getValue::return#2
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Identical Phi Values (word) getValue::index#1 (word) getValue::index#0
|
||||
Successful SSA optimization Pass2IdenticalPhiElimination
|
||||
@ -210,21 +210,21 @@ getValue::@return: scope:[getValue] from getValue
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(word()) getValue((word) getValue::index)
|
||||
(byte~) getValue::$0 4.0
|
||||
(byte~) getValue::$1 4.0
|
||||
(byte~) getValue::$2 2.0
|
||||
(byte~) getValue::$4 4.0
|
||||
(byte~) getValue::$0 2002.0
|
||||
(byte~) getValue::$1 2002.0
|
||||
(byte~) getValue::$2 1001.0
|
||||
(byte~) getValue::$4 2002.0
|
||||
(word) getValue::index
|
||||
(word) getValue::index#0 13.0
|
||||
(word) getValue::index#0 1102.0
|
||||
(word) getValue::return
|
||||
(word) getValue::return#0 22.0
|
||||
(word) getValue::return#1 4.333333333333333
|
||||
(word) getValue::return#0 202.0
|
||||
(word) getValue::return#1 367.33333333333337
|
||||
(void()) main()
|
||||
(word~) main::$0 11.0
|
||||
(byte~) main::$2 22.0
|
||||
(word~) main::$0 101.0
|
||||
(byte~) main::$2 202.0
|
||||
(byte) main::idx
|
||||
(byte) main::idx#1 16.5
|
||||
(byte) main::idx#2 6.285714285714286
|
||||
(byte) main::idx#1 151.5
|
||||
(byte) main::idx#2 57.714285714285715
|
||||
|
||||
Initial phi equivalence classes
|
||||
[ main::idx#2 main::idx#1 ]
|
||||
@ -387,27 +387,27 @@ getValue: {
|
||||
arr16: .fill 2*$80, 0
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [6] (word) getValue::index#0 ← (byte) main::idx#2 [ main::idx#2 getValue::index#0 ] ( main:2 [ main::idx#2 getValue::index#0 ] ) always clobbers reg byte a
|
||||
Statement [6] (word) getValue::index#0 ← (byte) main::idx#2 [ main::idx#2 getValue::index#0 ] ( [ main::idx#2 getValue::index#0 ] { { getValue::index#0 = main::idx#2 } } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::idx#2 main::idx#1 ]
|
||||
Statement [8] (word) getValue::return#0 ← (word) getValue::return#1 [ main::idx#2 getValue::return#0 ] ( main:2 [ main::idx#2 getValue::return#0 ] ) always clobbers reg byte a
|
||||
Statement [9] (word~) main::$0 ← (word) getValue::return#0 [ main::idx#2 main::$0 ] ( main:2 [ main::idx#2 main::$0 ] ) always clobbers reg byte a
|
||||
Statement [10] (byte~) main::$2 ← (byte) main::idx#2 << (byte) 1 [ main::idx#2 main::$0 main::$2 ] ( main:2 [ main::idx#2 main::$0 main::$2 ] ) always clobbers reg byte a
|
||||
Statement [11] *((const word*) main::SCREEN + (byte~) main::$2) ← (word~) main::$0 [ main::idx#2 ] ( main:2 [ main::idx#2 ] ) always clobbers reg byte a
|
||||
Statement [15] (byte~) getValue::$0 ← (word) getValue::index#0 & (byte) $7f [ getValue::$0 ] ( main:2::getValue:7 [ main::idx#2 getValue::$0 ] ) always clobbers reg byte a
|
||||
Statement [16] (byte~) getValue::$4 ← (byte~) getValue::$0 << (byte) 1 [ getValue::$4 ] ( main:2::getValue:7 [ main::idx#2 getValue::$4 ] ) always clobbers reg byte a
|
||||
Statement [17] (byte~) getValue::$1 ← *((const word*) arr16 + (byte~) getValue::$4) & (byte) $ff [ getValue::$1 ] ( main:2::getValue:7 [ main::idx#2 getValue::$1 ] ) always clobbers reg byte a
|
||||
Statement [18] (byte~) getValue::$2 ← (byte~) getValue::$1 >> (byte) 1 [ getValue::$2 ] ( main:2::getValue:7 [ main::idx#2 getValue::$2 ] ) always clobbers reg byte a
|
||||
Statement [19] (word) getValue::return#1 ← (word)(byte~) getValue::$2 [ getValue::return#1 ] ( main:2::getValue:7 [ main::idx#2 getValue::return#1 ] ) always clobbers reg byte a
|
||||
Statement [6] (word) getValue::index#0 ← (byte) main::idx#2 [ main::idx#2 getValue::index#0 ] ( main:2 [ main::idx#2 getValue::index#0 ] ) always clobbers reg byte a
|
||||
Statement [8] (word) getValue::return#0 ← (word) getValue::return#1 [ main::idx#2 getValue::return#0 ] ( main:2 [ main::idx#2 getValue::return#0 ] ) always clobbers reg byte a
|
||||
Statement [9] (word~) main::$0 ← (word) getValue::return#0 [ main::idx#2 main::$0 ] ( main:2 [ main::idx#2 main::$0 ] ) always clobbers reg byte a
|
||||
Statement [10] (byte~) main::$2 ← (byte) main::idx#2 << (byte) 1 [ main::idx#2 main::$0 main::$2 ] ( main:2 [ main::idx#2 main::$0 main::$2 ] ) always clobbers reg byte a
|
||||
Statement [11] *((const word*) main::SCREEN + (byte~) main::$2) ← (word~) main::$0 [ main::idx#2 ] ( main:2 [ main::idx#2 ] ) always clobbers reg byte a
|
||||
Statement [15] (byte~) getValue::$0 ← (word) getValue::index#0 & (byte) $7f [ getValue::$0 ] ( main:2::getValue:7 [ main::idx#2 getValue::$0 ] ) always clobbers reg byte a
|
||||
Statement [16] (byte~) getValue::$4 ← (byte~) getValue::$0 << (byte) 1 [ getValue::$4 ] ( main:2::getValue:7 [ main::idx#2 getValue::$4 ] ) always clobbers reg byte a
|
||||
Statement [17] (byte~) getValue::$1 ← *((const word*) arr16 + (byte~) getValue::$4) & (byte) $ff [ getValue::$1 ] ( main:2::getValue:7 [ main::idx#2 getValue::$1 ] ) always clobbers reg byte a
|
||||
Statement [18] (byte~) getValue::$2 ← (byte~) getValue::$1 >> (byte) 1 [ getValue::$2 ] ( main:2::getValue:7 [ main::idx#2 getValue::$2 ] ) always clobbers reg byte a
|
||||
Statement [19] (word) getValue::return#1 ← (word)(byte~) getValue::$2 [ getValue::return#1 ] ( main:2::getValue:7 [ main::idx#2 getValue::return#1 ] ) always clobbers reg byte a
|
||||
Statement [8] (word) getValue::return#0 ← (word) getValue::return#1 [ main::idx#2 getValue::return#0 ] ( [ main::idx#2 getValue::return#0 ] { { getValue::index#0 = main::idx#2 } { getValue::return#0 = getValue::return#1 } } ) always clobbers reg byte a
|
||||
Statement [9] (word~) main::$0 ← (word) getValue::return#0 [ main::idx#2 main::$0 ] ( [ main::idx#2 main::$0 ] { { getValue::return#0 = main::$0 } } ) always clobbers reg byte a
|
||||
Statement [10] (byte~) main::$2 ← (byte) main::idx#2 << (byte) 1 [ main::idx#2 main::$0 main::$2 ] ( [ main::idx#2 main::$0 main::$2 ] { { getValue::return#0 = main::$0 } } ) always clobbers reg byte a
|
||||
Statement [11] *((const word*) main::SCREEN + (byte~) main::$2) ← (word~) main::$0 [ main::idx#2 ] ( [ main::idx#2 ] { { getValue::return#0 = main::$0 } } ) always clobbers reg byte a
|
||||
Statement [15] (byte~) getValue::$0 ← (word) getValue::index#0 & (byte) $7f [ getValue::$0 ] ( [ getValue::$0 main::idx#2 ] { } ) always clobbers reg byte a
|
||||
Statement [16] (byte~) getValue::$4 ← (byte~) getValue::$0 << (byte) 1 [ getValue::$4 ] ( [ getValue::$4 main::idx#2 ] { } ) always clobbers reg byte a
|
||||
Statement [17] (byte~) getValue::$1 ← *((const word*) arr16 + (byte~) getValue::$4) & (byte) $ff [ getValue::$1 ] ( [ getValue::$1 main::idx#2 ] { } ) always clobbers reg byte a
|
||||
Statement [18] (byte~) getValue::$2 ← (byte~) getValue::$1 >> (byte) 1 [ getValue::$2 ] ( [ getValue::$2 main::idx#2 ] { } ) always clobbers reg byte a
|
||||
Statement [19] (word) getValue::return#1 ← (word)(byte~) getValue::$2 [ getValue::return#1 ] ( [ getValue::return#1 main::idx#2 ] { } ) always clobbers reg byte a
|
||||
Statement [6] (word) getValue::index#0 ← (byte) main::idx#2 [ main::idx#2 getValue::index#0 ] ( [ main::idx#2 getValue::index#0 ] { { getValue::index#0 = main::idx#2 } } ) always clobbers reg byte a
|
||||
Statement [8] (word) getValue::return#0 ← (word) getValue::return#1 [ main::idx#2 getValue::return#0 ] ( [ main::idx#2 getValue::return#0 ] { { getValue::index#0 = main::idx#2 } { getValue::return#0 = getValue::return#1 } } ) always clobbers reg byte a
|
||||
Statement [9] (word~) main::$0 ← (word) getValue::return#0 [ main::idx#2 main::$0 ] ( [ main::idx#2 main::$0 ] { { getValue::return#0 = main::$0 } } ) always clobbers reg byte a
|
||||
Statement [10] (byte~) main::$2 ← (byte) main::idx#2 << (byte) 1 [ main::idx#2 main::$0 main::$2 ] ( [ main::idx#2 main::$0 main::$2 ] { { getValue::return#0 = main::$0 } } ) always clobbers reg byte a
|
||||
Statement [11] *((const word*) main::SCREEN + (byte~) main::$2) ← (word~) main::$0 [ main::idx#2 ] ( [ main::idx#2 ] { { getValue::return#0 = main::$0 } } ) always clobbers reg byte a
|
||||
Statement [15] (byte~) getValue::$0 ← (word) getValue::index#0 & (byte) $7f [ getValue::$0 ] ( [ getValue::$0 main::idx#2 ] { } ) always clobbers reg byte a
|
||||
Statement [16] (byte~) getValue::$4 ← (byte~) getValue::$0 << (byte) 1 [ getValue::$4 ] ( [ getValue::$4 main::idx#2 ] { } ) always clobbers reg byte a
|
||||
Statement [17] (byte~) getValue::$1 ← *((const word*) arr16 + (byte~) getValue::$4) & (byte) $ff [ getValue::$1 ] ( [ getValue::$1 main::idx#2 ] { } ) always clobbers reg byte a
|
||||
Statement [18] (byte~) getValue::$2 ← (byte~) getValue::$1 >> (byte) 1 [ getValue::$2 ] ( [ getValue::$2 main::idx#2 ] { } ) always clobbers reg byte a
|
||||
Statement [19] (word) getValue::return#1 ← (word)(byte~) getValue::$2 [ getValue::return#1 ] ( [ getValue::return#1 main::idx#2 ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ main::idx#2 main::idx#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:3 [ getValue::index#0 ] : zp[2]:3 ,
|
||||
Potential registers zp[2]:5 [ getValue::return#0 ] : zp[2]:5 ,
|
||||
@ -420,13 +420,13 @@ Potential registers zp[1]:13 [ getValue::$2 ] : zp[1]:13 , reg byte a , reg byte
|
||||
Potential registers zp[2]:14 [ getValue::return#1 ] : zp[2]:14 ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 22.79: zp[1]:2 [ main::idx#2 main::idx#1 ] 22: zp[1]:9 [ main::$2 ] 11: zp[2]:7 [ main::$0 ]
|
||||
Uplift Scope [getValue] 22: zp[2]:5 [ getValue::return#0 ] 13: zp[2]:3 [ getValue::index#0 ] 4.33: zp[2]:14 [ getValue::return#1 ] 4: zp[1]:10 [ getValue::$0 ] 4: zp[1]:11 [ getValue::$4 ] 4: zp[1]:12 [ getValue::$1 ] 2: zp[1]:13 [ getValue::$2 ]
|
||||
Uplift Scope [getValue] 2,002: zp[1]:10 [ getValue::$0 ] 2,002: zp[1]:11 [ getValue::$4 ] 2,002: zp[1]:12 [ getValue::$1 ] 1,102: zp[2]:3 [ getValue::index#0 ] 1,001: zp[1]:13 [ getValue::$2 ] 367.33: zp[2]:14 [ getValue::return#1 ] 202: zp[2]:5 [ getValue::return#0 ]
|
||||
Uplift Scope [main] 209.21: zp[1]:2 [ main::idx#2 main::idx#1 ] 202: zp[1]:9 [ main::$2 ] 101: zp[2]:7 [ main::$0 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 899 combination reg byte x [ main::idx#2 main::idx#1 ] reg byte a [ main::$2 ] zp[2]:7 [ main::$0 ]
|
||||
Uplifting [getValue] best 877 combination zp[2]:5 [ getValue::return#0 ] zp[2]:3 [ getValue::index#0 ] zp[2]:14 [ getValue::return#1 ] reg byte a [ getValue::$0 ] reg byte a [ getValue::$4 ] reg byte a [ getValue::$1 ] reg byte a [ getValue::$2 ]
|
||||
Uplifting [getValue] best 1027 combination reg byte a [ getValue::$0 ] reg byte a [ getValue::$4 ] reg byte a [ getValue::$1 ] zp[2]:3 [ getValue::index#0 ] reg byte a [ getValue::$2 ] zp[2]:14 [ getValue::return#1 ] zp[2]:5 [ getValue::return#0 ]
|
||||
Limited combination testing to 100 combinations of 256 possible.
|
||||
Uplifting [main] best 877 combination reg byte x [ main::idx#2 main::idx#1 ] reg byte a [ main::$2 ] zp[2]:7 [ main::$0 ]
|
||||
Uplifting [] best 877 combination
|
||||
Coalescing zero page register [ zp[2]:5 [ getValue::return#0 ] ] with [ zp[2]:7 [ main::$0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:5 [ getValue::return#0 main::$0 ] ] with [ zp[2]:14 [ getValue::return#1 ] ] - score: 1
|
||||
@ -569,26 +569,26 @@ FINAL SYMBOL TABLE
|
||||
(label) @end
|
||||
(const word*) arr16[(number) $80] = { fill( $80, 0) }
|
||||
(word()) getValue((word) getValue::index)
|
||||
(byte~) getValue::$0 reg byte a 4.0
|
||||
(byte~) getValue::$1 reg byte a 4.0
|
||||
(byte~) getValue::$2 reg byte a 2.0
|
||||
(byte~) getValue::$4 reg byte a 4.0
|
||||
(byte~) getValue::$0 reg byte a 2002.0
|
||||
(byte~) getValue::$1 reg byte a 2002.0
|
||||
(byte~) getValue::$2 reg byte a 1001.0
|
||||
(byte~) getValue::$4 reg byte a 2002.0
|
||||
(label) getValue::@return
|
||||
(word) getValue::index
|
||||
(word) getValue::index#0 index zp[2]:2 13.0
|
||||
(word) getValue::index#0 index zp[2]:2 1102.0
|
||||
(word) getValue::return
|
||||
(word) getValue::return#0 return zp[2]:4 22.0
|
||||
(word) getValue::return#1 return zp[2]:4 4.333333333333333
|
||||
(word) getValue::return#0 return zp[2]:4 202.0
|
||||
(word) getValue::return#1 return zp[2]:4 367.33333333333337
|
||||
(void()) main()
|
||||
(word~) main::$0 zp[2]:4 11.0
|
||||
(byte~) main::$2 reg byte a 22.0
|
||||
(word~) main::$0 zp[2]:4 101.0
|
||||
(byte~) main::$2 reg byte a 202.0
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@return
|
||||
(const word*) main::SCREEN = (word*) 1024
|
||||
(byte) main::idx
|
||||
(byte) main::idx#1 reg byte x 16.5
|
||||
(byte) main::idx#2 reg byte x 6.285714285714286
|
||||
(byte) main::idx#1 reg byte x 151.5
|
||||
(byte) main::idx#2 reg byte x 57.714285714285715
|
||||
|
||||
reg byte x [ main::idx#2 main::idx#1 ]
|
||||
zp[2]:2 [ getValue::index#0 ]
|
||||
|
@ -3,26 +3,26 @@
|
||||
(label) @end
|
||||
(const word*) arr16[(number) $80] = { fill( $80, 0) }
|
||||
(word()) getValue((word) getValue::index)
|
||||
(byte~) getValue::$0 reg byte a 4.0
|
||||
(byte~) getValue::$1 reg byte a 4.0
|
||||
(byte~) getValue::$2 reg byte a 2.0
|
||||
(byte~) getValue::$4 reg byte a 4.0
|
||||
(byte~) getValue::$0 reg byte a 2002.0
|
||||
(byte~) getValue::$1 reg byte a 2002.0
|
||||
(byte~) getValue::$2 reg byte a 1001.0
|
||||
(byte~) getValue::$4 reg byte a 2002.0
|
||||
(label) getValue::@return
|
||||
(word) getValue::index
|
||||
(word) getValue::index#0 index zp[2]:2 13.0
|
||||
(word) getValue::index#0 index zp[2]:2 1102.0
|
||||
(word) getValue::return
|
||||
(word) getValue::return#0 return zp[2]:4 22.0
|
||||
(word) getValue::return#1 return zp[2]:4 4.333333333333333
|
||||
(word) getValue::return#0 return zp[2]:4 202.0
|
||||
(word) getValue::return#1 return zp[2]:4 367.33333333333337
|
||||
(void()) main()
|
||||
(word~) main::$0 zp[2]:4 11.0
|
||||
(byte~) main::$2 reg byte a 22.0
|
||||
(word~) main::$0 zp[2]:4 101.0
|
||||
(byte~) main::$2 reg byte a 202.0
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@return
|
||||
(const word*) main::SCREEN = (word*) 1024
|
||||
(byte) main::idx
|
||||
(byte) main::idx#1 reg byte x 16.5
|
||||
(byte) main::idx#2 reg byte x 6.285714285714286
|
||||
(byte) main::idx#1 reg byte x 151.5
|
||||
(byte) main::idx#2 reg byte x 57.714285714285715
|
||||
|
||||
reg byte x [ main::idx#2 main::idx#1 ]
|
||||
zp[2]:2 [ getValue::index#0 ]
|
||||
|
@ -109,8 +109,8 @@ main::@return: scope:[main] from main::@1
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(void()) main()
|
||||
(byte) main::sub
|
||||
(byte) main::sub#1 16.5
|
||||
(byte) main::sub#2 22.0
|
||||
(byte) main::sub#1 151.5
|
||||
(byte) main::sub#2 202.0
|
||||
|
||||
Initial phi equivalence classes
|
||||
[ main::sub#2 main::sub#1 ]
|
||||
@ -183,7 +183,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Potential registers zp[1]:2 [ main::sub#2 main::sub#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 38.5: zp[1]:2 [ main::sub#2 main::sub#1 ]
|
||||
Uplift Scope [main] 353.5: zp[1]:2 [ main::sub#2 main::sub#1 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 263 combination reg byte x [ main::sub#2 main::sub#1 ]
|
||||
@ -280,8 +280,8 @@ FINAL SYMBOL TABLE
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
(byte) main::sub
|
||||
(byte) main::sub#1 reg byte x 16.5
|
||||
(byte) main::sub#2 reg byte x 22.0
|
||||
(byte) main::sub#1 reg byte x 151.5
|
||||
(byte) main::sub#2 reg byte x 202.0
|
||||
|
||||
reg byte x [ main::sub#2 main::sub#1 ]
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
(byte) main::sub
|
||||
(byte) main::sub#1 reg byte x 16.5
|
||||
(byte) main::sub#2 reg byte x 22.0
|
||||
(byte) main::sub#1 reg byte x 151.5
|
||||
(byte) main::sub#2 reg byte x 202.0
|
||||
|
||||
reg byte x [ main::sub#2 main::sub#1 ]
|
||||
|
@ -93,8 +93,8 @@ Finalized unsigned number type (byte) 1
|
||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Inferred type updated to byte in (unumber~) main::$0 ← (byte) main::item#2 * (byte) $10
|
||||
Inferred type updated to byte in (unumber~) main::$1 ← (byte~) main::$0 | (byte) main::sub#2
|
||||
Alias (byte*) main::cur_item#2 = (byte*) main::cur_item#3
|
||||
Alias (byte) main::item#2 = (byte) main::item#3
|
||||
Alias main::cur_item#2 = main::cur_item#3
|
||||
Alias main::item#2 = main::item#3
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Identical Phi Values (byte) main::item#2 (byte) main::item#4
|
||||
Identical Phi Values (byte*) main::cur_item#2 (byte*) main::cur_item#4
|
||||
@ -194,17 +194,17 @@ main::@return: scope:[main] from main::@3
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(void()) main()
|
||||
(byte~) main::$0 202.0
|
||||
(byte~) main::$1 202.0
|
||||
(byte~) main::$0 2002.0
|
||||
(byte~) main::$1 2002.0
|
||||
(byte*) main::cur_item
|
||||
(byte*) main::cur_item#1 7.333333333333333
|
||||
(byte*) main::cur_item#4 17.571428571428573
|
||||
(byte*) main::cur_item#1 67.33333333333333
|
||||
(byte*) main::cur_item#4 171.85714285714283
|
||||
(byte) main::item
|
||||
(byte) main::item#1 16.5
|
||||
(byte) main::item#4 15.375
|
||||
(byte) main::item#1 151.5
|
||||
(byte) main::item#4 150.375
|
||||
(byte) main::sub
|
||||
(byte) main::sub#1 151.5
|
||||
(byte) main::sub#2 101.0
|
||||
(byte) main::sub#1 1501.5
|
||||
(byte) main::sub#2 1001.0
|
||||
|
||||
Initial phi equivalence classes
|
||||
[ main::item#4 main::item#1 ]
|
||||
@ -337,12 +337,12 @@ main: {
|
||||
items: .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [7] (byte~) main::$0 ← (byte) main::item#4 << (byte) 4 [ main::item#4 main::cur_item#4 main::sub#2 main::$0 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#2 main::$0 ] ) always clobbers reg byte a
|
||||
Statement [7] (byte~) main::$0 ← (byte) main::item#4 << (byte) 4 [ main::item#4 main::cur_item#4 main::sub#2 main::$0 ] ( [ main::item#4 main::cur_item#4 main::sub#2 main::$0 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::item#4 main::item#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::sub#2 main::sub#1 ]
|
||||
Statement [12] (byte*) main::cur_item#1 ← (byte*) main::cur_item#4 + (const byte) ITEM_SIZE [ main::item#4 main::cur_item#1 ] ( main:2 [ main::item#4 main::cur_item#1 ] ) always clobbers reg byte a
|
||||
Statement [7] (byte~) main::$0 ← (byte) main::item#4 << (byte) 4 [ main::item#4 main::cur_item#4 main::sub#2 main::$0 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#2 main::$0 ] ) always clobbers reg byte a
|
||||
Statement [12] (byte*) main::cur_item#1 ← (byte*) main::cur_item#4 + (const byte) ITEM_SIZE [ main::item#4 main::cur_item#1 ] ( main:2 [ main::item#4 main::cur_item#1 ] ) always clobbers reg byte a
|
||||
Statement [12] (byte*) main::cur_item#1 ← (byte*) main::cur_item#4 + (const byte) ITEM_SIZE [ main::item#4 main::cur_item#1 ] ( [ main::item#4 main::cur_item#1 ] { } ) always clobbers reg byte a
|
||||
Statement [7] (byte~) main::$0 ← (byte) main::item#4 << (byte) 4 [ main::item#4 main::cur_item#4 main::sub#2 main::$0 ] ( [ main::item#4 main::cur_item#4 main::sub#2 main::$0 ] { } ) always clobbers reg byte a
|
||||
Statement [12] (byte*) main::cur_item#1 ← (byte*) main::cur_item#4 + (const byte) ITEM_SIZE [ main::item#4 main::cur_item#1 ] ( [ main::item#4 main::cur_item#1 ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ main::item#4 main::item#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:3 [ main::cur_item#4 main::cur_item#1 ] : zp[2]:3 ,
|
||||
Potential registers zp[1]:5 [ main::sub#2 main::sub#1 ] : zp[1]:5 , reg byte x , reg byte y ,
|
||||
@ -350,7 +350,7 @@ Potential registers zp[1]:6 [ main::$0 ] : zp[1]:6 , reg byte a , reg byte x , r
|
||||
Potential registers zp[1]:7 [ main::$1 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 252.5: zp[1]:5 [ main::sub#2 main::sub#1 ] 202: zp[1]:6 [ main::$0 ] 202: zp[1]:7 [ main::$1 ] 31.88: zp[1]:2 [ main::item#4 main::item#1 ] 24.9: zp[2]:3 [ main::cur_item#4 main::cur_item#1 ]
|
||||
Uplift Scope [main] 2,502.5: zp[1]:5 [ main::sub#2 main::sub#1 ] 2,002: zp[1]:6 [ main::$0 ] 2,002: zp[1]:7 [ main::$1 ] 301.88: zp[1]:2 [ main::item#4 main::item#1 ] 239.19: zp[2]:3 [ main::cur_item#4 main::cur_item#1 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 4418 combination reg byte y [ main::sub#2 main::sub#1 ] reg byte a [ main::$0 ] reg byte a [ main::$1 ] reg byte x [ main::item#4 main::item#1 ] zp[2]:3 [ main::cur_item#4 main::cur_item#1 ]
|
||||
@ -497,21 +497,21 @@ FINAL SYMBOL TABLE
|
||||
(const byte) ITEM_SIZE = (byte) 5
|
||||
(const byte*) items[(const byte) ITEM_COUNT*(const byte) ITEM_SIZE] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
|
||||
(void()) main()
|
||||
(byte~) main::$0 reg byte a 202.0
|
||||
(byte~) main::$1 reg byte a 202.0
|
||||
(byte~) main::$0 reg byte a 2002.0
|
||||
(byte~) main::$1 reg byte a 2002.0
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@return
|
||||
(byte*) main::cur_item
|
||||
(byte*) main::cur_item#1 cur_item zp[2]:2 7.333333333333333
|
||||
(byte*) main::cur_item#4 cur_item zp[2]:2 17.571428571428573
|
||||
(byte*) main::cur_item#1 cur_item zp[2]:2 67.33333333333333
|
||||
(byte*) main::cur_item#4 cur_item zp[2]:2 171.85714285714283
|
||||
(byte) main::item
|
||||
(byte) main::item#1 reg byte x 16.5
|
||||
(byte) main::item#4 reg byte x 15.375
|
||||
(byte) main::item#1 reg byte x 151.5
|
||||
(byte) main::item#4 reg byte x 150.375
|
||||
(byte) main::sub
|
||||
(byte) main::sub#1 reg byte y 151.5
|
||||
(byte) main::sub#2 reg byte y 101.0
|
||||
(byte) main::sub#1 reg byte y 1501.5
|
||||
(byte) main::sub#2 reg byte y 1001.0
|
||||
|
||||
reg byte x [ main::item#4 main::item#1 ]
|
||||
zp[2]:2 [ main::cur_item#4 main::cur_item#1 ]
|
||||
|
@ -5,21 +5,21 @@
|
||||
(const byte) ITEM_SIZE = (byte) 5
|
||||
(const byte*) items[(const byte) ITEM_COUNT*(const byte) ITEM_SIZE] = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
|
||||
(void()) main()
|
||||
(byte~) main::$0 reg byte a 202.0
|
||||
(byte~) main::$1 reg byte a 202.0
|
||||
(byte~) main::$0 reg byte a 2002.0
|
||||
(byte~) main::$1 reg byte a 2002.0
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@return
|
||||
(byte*) main::cur_item
|
||||
(byte*) main::cur_item#1 cur_item zp[2]:2 7.333333333333333
|
||||
(byte*) main::cur_item#4 cur_item zp[2]:2 17.571428571428573
|
||||
(byte*) main::cur_item#1 cur_item zp[2]:2 67.33333333333333
|
||||
(byte*) main::cur_item#4 cur_item zp[2]:2 171.85714285714283
|
||||
(byte) main::item
|
||||
(byte) main::item#1 reg byte x 16.5
|
||||
(byte) main::item#4 reg byte x 15.375
|
||||
(byte) main::item#1 reg byte x 151.5
|
||||
(byte) main::item#4 reg byte x 150.375
|
||||
(byte) main::sub
|
||||
(byte) main::sub#1 reg byte y 151.5
|
||||
(byte) main::sub#2 reg byte y 101.0
|
||||
(byte) main::sub#1 reg byte y 1501.5
|
||||
(byte) main::sub#2 reg byte y 1001.0
|
||||
|
||||
reg byte x [ main::item#4 main::item#1 ]
|
||||
zp[2]:2 [ main::cur_item#4 main::cur_item#1 ]
|
||||
|
@ -124,7 +124,7 @@ SINTAB:
|
||||
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [4] *((const byte*) SCREEN) ← *((const byte*) SINTAB) [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [4] *((const byte*) SCREEN) ← *((const byte*) SINTAB) [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main]
|
||||
|
@ -90,8 +90,8 @@ Finalized unsigned number type (byte) 0
|
||||
Finalized unsigned number type (byte) 0
|
||||
Finalized unsigned number type (byte) $28
|
||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Alias (byte) main::i#2 = (byte) main::i#3
|
||||
Alias (byte) main::i1#2 = (byte) main::i1#3
|
||||
Alias main::i#2 = main::i#3
|
||||
Alias main::i1#2 = main::i1#3
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Simple Condition (bool~) main::$0 [3] if((byte) 0!=*((const byte*) msg1 + (byte) main::i#2)) goto main::@2
|
||||
Simple Condition (bool~) main::$1 [9] if((byte) 0!=*((const byte*) msg2 + (byte) main::i1#2)) goto main::@8
|
||||
@ -165,11 +165,11 @@ main::@2: scope:[main] from main::@1
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(void()) main()
|
||||
(byte) main::i
|
||||
(byte) main::i#1 22.0
|
||||
(byte) main::i#2 18.333333333333332
|
||||
(byte) main::i#1 202.0
|
||||
(byte) main::i#2 168.33333333333331
|
||||
(byte) main::i1
|
||||
(byte) main::i1#1 22.0
|
||||
(byte) main::i1#2 18.333333333333332
|
||||
(byte) main::i1#1 202.0
|
||||
(byte) main::i1#2 168.33333333333331
|
||||
|
||||
Initial phi equivalence classes
|
||||
[ main::i#2 main::i#1 ]
|
||||
@ -274,21 +274,21 @@ main: {
|
||||
.fill $d, 0
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [6] if((byte) 0!=*((const byte*) msg1 + (byte) main::i#2)) goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a
|
||||
Statement [6] if((byte) 0!=*((const byte*) msg1 + (byte) main::i#2)) goto main::@2 [ main::i#2 ] ( [ main::i#2 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Statement [8] if((byte) 0!=*((const byte*) msg2 + (byte) main::i1#2)) goto main::@4 [ main::i1#2 ] ( main:2 [ main::i1#2 ] ) always clobbers reg byte a
|
||||
Statement [8] if((byte) 0!=*((const byte*) msg2 + (byte) main::i1#2)) goto main::@4 [ main::i1#2 ] ( [ main::i1#2 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::i1#2 main::i1#1 ]
|
||||
Statement [10] *((const byte*) SCREEN+(byte) $28 + (byte) main::i1#2) ← *((const byte*) msg2 + (byte) main::i1#2) [ main::i1#2 ] ( main:2 [ main::i1#2 ] ) always clobbers reg byte a
|
||||
Statement [12] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) msg1 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a
|
||||
Statement [6] if((byte) 0!=*((const byte*) msg1 + (byte) main::i#2)) goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a
|
||||
Statement [8] if((byte) 0!=*((const byte*) msg2 + (byte) main::i1#2)) goto main::@4 [ main::i1#2 ] ( main:2 [ main::i1#2 ] ) always clobbers reg byte a
|
||||
Statement [10] *((const byte*) SCREEN+(byte) $28 + (byte) main::i1#2) ← *((const byte*) msg2 + (byte) main::i1#2) [ main::i1#2 ] ( main:2 [ main::i1#2 ] ) always clobbers reg byte a
|
||||
Statement [12] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) msg1 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a
|
||||
Statement [10] *((const byte*) SCREEN+(byte) $28 + (byte) main::i1#2) ← *((const byte*) msg2 + (byte) main::i1#2) [ main::i1#2 ] ( [ main::i1#2 ] { } ) always clobbers reg byte a
|
||||
Statement [12] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) msg1 + (byte) main::i#2) [ main::i#2 ] ( [ main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [6] if((byte) 0!=*((const byte*) msg1 + (byte) main::i#2)) goto main::@2 [ main::i#2 ] ( [ main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [8] if((byte) 0!=*((const byte*) msg2 + (byte) main::i1#2)) goto main::@4 [ main::i1#2 ] ( [ main::i1#2 ] { } ) always clobbers reg byte a
|
||||
Statement [10] *((const byte*) SCREEN+(byte) $28 + (byte) main::i1#2) ← *((const byte*) msg2 + (byte) main::i1#2) [ main::i1#2 ] ( [ main::i1#2 ] { } ) always clobbers reg byte a
|
||||
Statement [12] *((const byte*) SCREEN + (byte) main::i#2) ← *((const byte*) msg1 + (byte) main::i#2) [ main::i#2 ] ( [ main::i#2 ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ main::i1#2 main::i1#1 ] : zp[1]:3 , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 40.33: zp[1]:2 [ main::i#2 main::i#1 ] 40.33: zp[1]:3 [ main::i1#2 main::i1#1 ]
|
||||
Uplift Scope [main] 370.33: zp[1]:2 [ main::i#2 main::i#1 ] 370.33: zp[1]:3 [ main::i1#2 main::i1#1 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 618 combination reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::i1#2 main::i1#1 ]
|
||||
@ -415,11 +415,11 @@ FINAL SYMBOL TABLE
|
||||
(label) main::@4
|
||||
(label) main::@return
|
||||
(byte) main::i
|
||||
(byte) main::i#1 reg byte x 22.0
|
||||
(byte) main::i#2 reg byte x 18.333333333333332
|
||||
(byte) main::i#1 reg byte x 202.0
|
||||
(byte) main::i#2 reg byte x 168.33333333333331
|
||||
(byte) main::i1
|
||||
(byte) main::i1#1 reg byte x 22.0
|
||||
(byte) main::i1#2 reg byte x 18.333333333333332
|
||||
(byte) main::i1#1 reg byte x 202.0
|
||||
(byte) main::i1#2 reg byte x 168.33333333333331
|
||||
(const byte*) msg1[(number) $10] = (byte*) "camelot"
|
||||
(const byte*) msg2[(number) $10] = { (byte) 'c', (byte) 'm', (byte) 'l' }
|
||||
|
||||
|
@ -9,11 +9,11 @@
|
||||
(label) main::@4
|
||||
(label) main::@return
|
||||
(byte) main::i
|
||||
(byte) main::i#1 reg byte x 22.0
|
||||
(byte) main::i#2 reg byte x 18.333333333333332
|
||||
(byte) main::i#1 reg byte x 202.0
|
||||
(byte) main::i#2 reg byte x 168.33333333333331
|
||||
(byte) main::i1
|
||||
(byte) main::i1#1 reg byte x 22.0
|
||||
(byte) main::i1#2 reg byte x 18.333333333333332
|
||||
(byte) main::i1#1 reg byte x 202.0
|
||||
(byte) main::i1#2 reg byte x 168.33333333333331
|
||||
(const byte*) msg1[(number) $10] = (byte*) "camelot"
|
||||
(const byte*) msg2[(number) $10] = { (byte) 'c', (byte) 'm', (byte) 'l' }
|
||||
|
||||
|
@ -166,10 +166,10 @@ main: {
|
||||
d: .text "cml"
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [4] *((const byte*) b) ← (byte) 'c' [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [5] *((const byte*) SCREEN) ← *((const byte*) b) [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [6] *((const byte*) SCREEN+(byte) 1) ← *((const byte*) c+(byte) 1) [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [7] *((const byte*) SCREEN+(byte) 2) ← *((const byte*) d+(byte) 2) [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [4] *((const byte*) b) ← (byte) 'c' [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [5] *((const byte*) SCREEN) ← *((const byte*) b) [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [6] *((const byte*) SCREEN+(byte) 1) ← *((const byte*) c+(byte) 1) [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [7] *((const byte*) SCREEN+(byte) 2) ← *((const byte*) d+(byte) 2) [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main]
|
||||
|
@ -113,7 +113,7 @@ main: {
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement asm { jmpqwe .byte0,25,51,76,102,128,153,179,204,230 qwe: lda#50 } always clobbers reg byte a
|
||||
Statement [5] *((byte*) 1024) ← (byte) 'c' [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [5] *((byte*) 1024) ← (byte) 'c' [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main]
|
||||
|
@ -182,9 +182,9 @@ bne: {
|
||||
// File Data
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [4] *((const byte*) lda) ← (const byte) main::jmp [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [4] *((const byte*) lda) ← (const byte) main::jmp [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement asm { ldaa jmpa bnea a: } always clobbers reg byte a
|
||||
Statement [8] *((const byte*) lda+(byte) 1) ← (const byte) main::jmp [ ] ( main:2::bne:5 [ ] ) always clobbers reg byte a
|
||||
Statement [8] *((const byte*) lda+(byte) 1) ← (const byte) main::jmp [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main]
|
||||
|
@ -147,7 +147,7 @@ init: {
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement asm { jsrinit } always clobbers reg byte a reg byte x reg byte y
|
||||
Statement [6] *((const byte*) BGCOL) ← (byte) 0 [ ] ( [ ] ) always clobbers reg byte a
|
||||
Statement [6] *((const byte*) BGCOL) ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main]
|
||||
|
@ -138,7 +138,7 @@ main::@return: scope:[main] from main
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(void()) main()
|
||||
(byte) main::a
|
||||
(byte) main::a#2 4.0
|
||||
(byte) main::a#2 22.0
|
||||
|
||||
Initial phi equivalence classes
|
||||
Added variable main::a#2 to live range equivalence class [ main::a#2 ]
|
||||
@ -204,15 +204,15 @@ main: {
|
||||
// File Data
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [4] *((const byte*) main::screen) ← (byte) 'c' [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [5] *((const byte*) main::screen+(byte) $28) ← (byte) 'c' [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [6] *((const byte*) main::screen+(byte) 1) ← (byte) 'm' [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [9] *((const byte*) main::screen+(byte) 2) ← (byte) 1+(byte) 'l' [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [10] *((const byte*) main::screen+(byte) $2a) ← (byte) 'l' [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [4] *((const byte*) main::screen) ← (byte) 'c' [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [5] *((const byte*) main::screen+(byte) $28) ← (byte) 'c' [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [6] *((const byte*) main::screen+(byte) 1) ← (byte) 'm' [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [9] *((const byte*) main::screen+(byte) 2) ← (byte) 1+(byte) 'l' [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [10] *((const byte*) main::screen+(byte) $2a) ← (byte) 'l' [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ main::a#2 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 4: zp[1]:2 [ main::a#2 ]
|
||||
Uplift Scope [main] 22: zp[1]:2 [ main::a#2 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 59 combination reg byte a [ main::a#2 ]
|
||||
@ -299,7 +299,7 @@ FINAL SYMBOL TABLE
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
(byte) main::a
|
||||
(byte) main::a#2 reg byte a 4.0
|
||||
(byte) main::a#2 reg byte a 22.0
|
||||
(const byte*) main::screen = (byte*) 1024
|
||||
|
||||
reg byte a [ main::a#2 ]
|
||||
|
@ -4,7 +4,7 @@
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
(byte) main::a
|
||||
(byte) main::a#2 reg byte a 4.0
|
||||
(byte) main::a#2 reg byte a 22.0
|
||||
(const byte*) main::screen = (byte*) 1024
|
||||
|
||||
reg byte a [ main::a#2 ]
|
||||
|
@ -315,30 +315,30 @@ Finalized unsigned number type (byte) 6
|
||||
Finalized unsigned number type (byte) 1
|
||||
Finalized unsigned number type (byte) 1
|
||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Alias (byte*) screen2#0 = (byte*~) $0 (byte*) screen2#13
|
||||
Alias (byte) main::i#0 = (byte) main::i#12
|
||||
Alias (byte) main::a#0 = (byte) main::a#11
|
||||
Alias (byte*) screen2#10 = (byte*) screen2#3 (byte*) screen2#2 (byte*) screen2#5 (byte*) screen2#6 (byte*) screen2#7 (byte*) screen2#8 (byte*) screen2#9 (byte*) screen2#11 (byte*) screen2#12 (byte*) screen2#4
|
||||
Alias (byte) main::i#1 = (byte) main::i#13
|
||||
Alias (byte) main::a#1 = (byte) main::a#12
|
||||
Alias (byte) main::i#14 = (byte) main::i#2
|
||||
Alias (byte) main::a#13 = (byte) main::a#2
|
||||
Alias (byte) main::i#15 = (byte) main::i#3
|
||||
Alias (byte) main::a#14 = (byte) main::a#3
|
||||
Alias (byte) main::i#16 = (byte) main::i#4
|
||||
Alias (byte) main::a#15 = (byte) main::a#4
|
||||
Alias (byte) main::i#17 = (byte) main::i#5
|
||||
Alias (byte) main::a#16 = (byte) main::a#5
|
||||
Alias (byte) main::i#18 = (byte) main::i#6
|
||||
Alias (byte) main::a#17 = (byte) main::a#6
|
||||
Alias (byte) main::i#19 = (byte) main::i#7
|
||||
Alias (byte) main::a#18 = (byte) main::a#7
|
||||
Alias (byte) main::i#20 = (byte) main::i#8
|
||||
Alias (byte) main::a#19 = (byte) main::a#8
|
||||
Alias (byte) main::i#21 = (byte) main::i#9
|
||||
Alias (byte) main::a#20 = (byte) main::a#9
|
||||
Alias (byte) main::i#10 = (byte) main::i#22
|
||||
Alias (byte) test::i#11 = (byte) test::i#12 (byte) test::i#13
|
||||
Alias screen2#0 = $0 screen2#13
|
||||
Alias main::i#0 = main::i#12
|
||||
Alias main::a#0 = main::a#11
|
||||
Alias screen2#10 = screen2#3 screen2#2 screen2#5 screen2#6 screen2#7 screen2#8 screen2#9 screen2#11 screen2#12 screen2#4
|
||||
Alias main::i#1 = main::i#13
|
||||
Alias main::a#1 = main::a#12
|
||||
Alias main::i#14 = main::i#2
|
||||
Alias main::a#13 = main::a#2
|
||||
Alias main::i#15 = main::i#3
|
||||
Alias main::a#14 = main::a#3
|
||||
Alias main::i#16 = main::i#4
|
||||
Alias main::a#15 = main::a#4
|
||||
Alias main::i#17 = main::i#5
|
||||
Alias main::a#16 = main::a#5
|
||||
Alias main::i#18 = main::i#6
|
||||
Alias main::a#17 = main::a#6
|
||||
Alias main::i#19 = main::i#7
|
||||
Alias main::a#18 = main::a#7
|
||||
Alias main::i#20 = main::i#8
|
||||
Alias main::a#19 = main::a#8
|
||||
Alias main::i#21 = main::i#9
|
||||
Alias main::a#20 = main::a#9
|
||||
Alias main::i#10 = main::i#22
|
||||
Alias test::i#11 = test::i#12 test::i#13
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Identical Phi Values (byte*) screen2#10 (byte*) screen2#0
|
||||
Identical Phi Values (byte*) screen2#1 (byte*) screen2#10
|
||||
@ -686,9 +686,9 @@ VARIABLE REGISTER WEIGHTS
|
||||
(byte*) screen2
|
||||
(void()) test((byte) test::i , (byte) test::a)
|
||||
(byte) test::a
|
||||
(byte) test::a#11 1.3333333333333333
|
||||
(byte) test::a#11 67.33333333333333
|
||||
(byte) test::i
|
||||
(byte) test::i#11 3.0
|
||||
(byte) test::i#11 151.5
|
||||
|
||||
Initial phi equivalence classes
|
||||
[ test::a#11 ]
|
||||
@ -950,22 +950,22 @@ test: {
|
||||
ref: .byte 3, 4, 3, $12, 9, 1, 4, 2, 4, 5, 1, 0
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [29] *((const byte*) screen2#0 + (byte) test::i#11) ← *((const byte*) ref + (byte) test::i#11) [ test::a#11 test::i#11 ] ( main:2::test:5 [ test::a#11 test::i#11 ] main:2::test:7 [ test::a#11 test::i#11 ] main:2::test:9 [ test::a#11 test::i#11 ] main:2::test:11 [ test::a#11 test::i#11 ] main:2::test:13 [ test::a#11 test::i#11 ] main:2::test:15 [ test::a#11 test::i#11 ] main:2::test:17 [ test::a#11 test::i#11 ] main:2::test:19 [ test::a#11 test::i#11 ] main:2::test:21 [ test::a#11 test::i#11 ] main:2::test:23 [ test::a#11 test::i#11 ] main:2::test:25 [ test::a#11 test::i#11 ] ) always clobbers reg byte a
|
||||
Statement [29] *((const byte*) screen2#0 + (byte) test::i#11) ← *((const byte*) ref + (byte) test::i#11) [ test::a#11 test::i#11 ] ( [ test::a#11 test::i#11 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ test::a#11 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ test::i#11 ]
|
||||
Statement [30] if(*((const byte*) ref + (byte) test::i#11)==(byte) test::a#11) goto test::@1 [ test::i#11 ] ( main:2::test:5 [ test::i#11 ] main:2::test:7 [ test::i#11 ] main:2::test:9 [ test::i#11 ] main:2::test:11 [ test::i#11 ] main:2::test:13 [ test::i#11 ] main:2::test:15 [ test::i#11 ] main:2::test:17 [ test::i#11 ] main:2::test:19 [ test::i#11 ] main:2::test:21 [ test::i#11 ] main:2::test:23 [ test::i#11 ] main:2::test:25 [ test::i#11 ] ) always clobbers reg byte a
|
||||
Statement [31] *((const byte*) cols + (byte) test::i#11) ← (const byte) RED [ ] ( main:2::test:5 [ ] main:2::test:7 [ ] main:2::test:9 [ ] main:2::test:11 [ ] main:2::test:13 [ ] main:2::test:15 [ ] main:2::test:17 [ ] main:2::test:19 [ ] main:2::test:21 [ ] main:2::test:23 [ ] main:2::test:25 [ ] ) always clobbers reg byte a
|
||||
Statement [33] *((const byte*) cols + (byte) test::i#11) ← (const byte) GREEN [ ] ( main:2::test:5 [ ] main:2::test:7 [ ] main:2::test:9 [ ] main:2::test:11 [ ] main:2::test:13 [ ] main:2::test:15 [ ] main:2::test:17 [ ] main:2::test:19 [ ] main:2::test:21 [ ] main:2::test:23 [ ] main:2::test:25 [ ] ) always clobbers reg byte a
|
||||
Statement [28] *((const byte*) screen1 + (byte) test::i#11) ← (byte) test::a#11 [ test::a#11 test::i#11 ] ( main:2::test:5 [ test::a#11 test::i#11 ] main:2::test:7 [ test::a#11 test::i#11 ] main:2::test:9 [ test::a#11 test::i#11 ] main:2::test:11 [ test::a#11 test::i#11 ] main:2::test:13 [ test::a#11 test::i#11 ] main:2::test:15 [ test::a#11 test::i#11 ] main:2::test:17 [ test::a#11 test::i#11 ] main:2::test:19 [ test::a#11 test::i#11 ] main:2::test:21 [ test::a#11 test::i#11 ] main:2::test:23 [ test::a#11 test::i#11 ] main:2::test:25 [ test::a#11 test::i#11 ] ) always clobbers reg byte a
|
||||
Statement [29] *((const byte*) screen2#0 + (byte) test::i#11) ← *((const byte*) ref + (byte) test::i#11) [ test::a#11 test::i#11 ] ( main:2::test:5 [ test::a#11 test::i#11 ] main:2::test:7 [ test::a#11 test::i#11 ] main:2::test:9 [ test::a#11 test::i#11 ] main:2::test:11 [ test::a#11 test::i#11 ] main:2::test:13 [ test::a#11 test::i#11 ] main:2::test:15 [ test::a#11 test::i#11 ] main:2::test:17 [ test::a#11 test::i#11 ] main:2::test:19 [ test::a#11 test::i#11 ] main:2::test:21 [ test::a#11 test::i#11 ] main:2::test:23 [ test::a#11 test::i#11 ] main:2::test:25 [ test::a#11 test::i#11 ] ) always clobbers reg byte a
|
||||
Statement [30] if(*((const byte*) ref + (byte) test::i#11)==(byte) test::a#11) goto test::@1 [ test::i#11 ] ( main:2::test:5 [ test::i#11 ] main:2::test:7 [ test::i#11 ] main:2::test:9 [ test::i#11 ] main:2::test:11 [ test::i#11 ] main:2::test:13 [ test::i#11 ] main:2::test:15 [ test::i#11 ] main:2::test:17 [ test::i#11 ] main:2::test:19 [ test::i#11 ] main:2::test:21 [ test::i#11 ] main:2::test:23 [ test::i#11 ] main:2::test:25 [ test::i#11 ] ) always clobbers reg byte a
|
||||
Statement [31] *((const byte*) cols + (byte) test::i#11) ← (const byte) RED [ ] ( main:2::test:5 [ ] main:2::test:7 [ ] main:2::test:9 [ ] main:2::test:11 [ ] main:2::test:13 [ ] main:2::test:15 [ ] main:2::test:17 [ ] main:2::test:19 [ ] main:2::test:21 [ ] main:2::test:23 [ ] main:2::test:25 [ ] ) always clobbers reg byte a
|
||||
Statement [33] *((const byte*) cols + (byte) test::i#11) ← (const byte) GREEN [ ] ( main:2::test:5 [ ] main:2::test:7 [ ] main:2::test:9 [ ] main:2::test:11 [ ] main:2::test:13 [ ] main:2::test:15 [ ] main:2::test:17 [ ] main:2::test:19 [ ] main:2::test:21 [ ] main:2::test:23 [ ] main:2::test:25 [ ] ) always clobbers reg byte a
|
||||
Statement [30] if(*((const byte*) ref + (byte) test::i#11)==(byte) test::a#11) goto test::@1 [ test::i#11 ] ( [ test::i#11 ] { } ) always clobbers reg byte a
|
||||
Statement [31] *((const byte*) cols + (byte) test::i#11) ← (const byte) RED [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [33] *((const byte*) cols + (byte) test::i#11) ← (const byte) GREEN [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [28] *((const byte*) screen1 + (byte) test::i#11) ← (byte) test::a#11 [ test::a#11 test::i#11 ] ( [ test::a#11 test::i#11 ] { } ) always clobbers reg byte a
|
||||
Statement [29] *((const byte*) screen2#0 + (byte) test::i#11) ← *((const byte*) ref + (byte) test::i#11) [ test::a#11 test::i#11 ] ( [ test::a#11 test::i#11 ] { } ) always clobbers reg byte a
|
||||
Statement [30] if(*((const byte*) ref + (byte) test::i#11)==(byte) test::a#11) goto test::@1 [ test::i#11 ] ( [ test::i#11 ] { } ) always clobbers reg byte a
|
||||
Statement [31] *((const byte*) cols + (byte) test::i#11) ← (const byte) RED [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [33] *((const byte*) cols + (byte) test::i#11) ← (const byte) GREEN [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ test::a#11 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ test::i#11 ] : zp[1]:3 , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [test] 3: zp[1]:3 [ test::i#11 ] 1.33: zp[1]:2 [ test::a#11 ]
|
||||
Uplift Scope [test] 151.5: zp[1]:3 [ test::i#11 ] 67.33: zp[1]:2 [ test::a#11 ]
|
||||
Uplift Scope [main]
|
||||
Uplift Scope []
|
||||
|
||||
@ -1303,9 +1303,9 @@ FINAL SYMBOL TABLE
|
||||
(label) test::@2
|
||||
(label) test::@return
|
||||
(byte) test::a
|
||||
(byte) test::a#11 a zp[1]:2 1.3333333333333333
|
||||
(byte) test::a#11 a zp[1]:2 67.33333333333333
|
||||
(byte) test::i
|
||||
(byte) test::i#11 reg byte x 3.0
|
||||
(byte) test::i#11 reg byte x 151.5
|
||||
|
||||
zp[1]:2 [ test::a#11 ]
|
||||
reg byte x [ test::i#11 ]
|
||||
|
@ -27,9 +27,9 @@
|
||||
(label) test::@2
|
||||
(label) test::@return
|
||||
(byte) test::a
|
||||
(byte) test::a#11 a zp[1]:2 1.3333333333333333
|
||||
(byte) test::a#11 a zp[1]:2 67.33333333333333
|
||||
(byte) test::i
|
||||
(byte) test::i#11 reg byte x 3.0
|
||||
(byte) test::i#11 reg byte x 151.5
|
||||
|
||||
zp[1]:2 [ test::a#11 ]
|
||||
reg byte x [ test::i#11 ]
|
||||
|
@ -107,7 +107,7 @@ main: {
|
||||
// File Data
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [4] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [4] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main]
|
||||
|
@ -652,49 +652,49 @@ Inferred type updated to signed word in (snumber~) plot::$8 ← (signed word) pl
|
||||
Inferred type updated to byte in (unumber~) plot::$10 ← (byte~) plot::$9 & (byte) 7
|
||||
Inferred type updated to signed word in (snumber~) plot::$12 ← (signed word~) plot::$11 * (signed word) $140
|
||||
Inferred type updated to signed byte in (snumber~) plot::$13 ← (signed word) plot::x#9 & (signed byte) 7
|
||||
Alias (signed word) main::i#2 = (signed word) main::i#3 (signed word) main::i#4
|
||||
Alias (signed word) circle::y#0 = (signed word) circle::r#1
|
||||
Alias (signed word) circle::p#0 = (signed word~) circle::$1
|
||||
Alias (signed word) circle::p#3 = (signed word) circle::p#6 (signed word) circle::p#4 (signed word) circle::p#5
|
||||
Alias (signed word) circle::x1#14 = (signed word) circle::x1#2 (signed word) circle::x1#3 (signed word) circle::x1#4
|
||||
Alias (signed word) circle::y#13 = (signed word) circle::y#2 (signed word) circle::y#14 (signed word) circle::y#3
|
||||
Alias (signed word) circle::xc#10 = (signed word) circle::xc#11 (signed word) circle::xc#12 (signed word) circle::xc#9
|
||||
Alias (signed word) circle::yc#10 = (signed word) circle::yc#11 (signed word) circle::yc#12 (signed word) circle::yc#9
|
||||
Alias (signed word) circle::p#1 = (signed word~) circle::$11
|
||||
Alias (signed word) circle::y#1 = (signed word~) circle::$4
|
||||
Alias (signed word) circle::p#2 = (signed word~) circle::$8
|
||||
Alias (signed word) plot::x#0 = (signed word~) circle::$12
|
||||
Alias (signed word) plot::y#0 = (signed word~) circle::$13
|
||||
Alias (signed word) circle::xc#1 = (signed word) circle::xc#2 (signed word) circle::xc#3 (signed word) circle::xc#4 (signed word) circle::xc#5 (signed word) circle::xc#6 (signed word) circle::xc#7 (signed word) circle::xc#8 (signed word) circle::xc#14
|
||||
Alias (signed word) circle::x1#10 = (signed word) circle::x1#6 (signed word) circle::x1#5 (signed word) circle::x1#7 (signed word) circle::x1#8 (signed word) circle::x1#9 (signed word) circle::x1#11 (signed word) circle::x1#12 (signed word) circle::x1#13
|
||||
Alias (signed word) circle::yc#1 = (signed word) circle::yc#2 (signed word) circle::yc#3 (signed word) circle::yc#4 (signed word) circle::yc#5 (signed word) circle::yc#6 (signed word) circle::yc#7 (signed word) circle::yc#8 (signed word) circle::yc#14
|
||||
Alias (signed word) circle::y#10 = (signed word) circle::y#5 (signed word) circle::y#4 (signed word) circle::y#6 (signed word) circle::y#7 (signed word) circle::y#8 (signed word) circle::y#9 (signed word) circle::y#11 (signed word) circle::y#12
|
||||
Alias (signed word) circle::p#10 = (signed word) circle::p#14 (signed word) circle::p#15 (signed word) circle::p#13 (signed word) circle::p#12 (signed word) circle::p#11 (signed word) circle::p#9 (signed word) circle::p#8 (signed word) circle::p#7
|
||||
Alias (signed word) plot::x#1 = (signed word~) circle::$15
|
||||
Alias (signed word) plot::y#1 = (signed word~) circle::$16
|
||||
Alias (signed word) plot::x#2 = (signed word~) circle::$18
|
||||
Alias (signed word) plot::y#2 = (signed word~) circle::$19
|
||||
Alias (signed word) plot::x#3 = (signed word~) circle::$21
|
||||
Alias (signed word) plot::y#3 = (signed word~) circle::$22
|
||||
Alias (signed word) plot::x#4 = (signed word~) circle::$24
|
||||
Alias (signed word) plot::y#4 = (signed word~) circle::$25
|
||||
Alias (signed word) plot::x#5 = (signed word~) circle::$27
|
||||
Alias (signed word) plot::y#5 = (signed word~) circle::$28
|
||||
Alias (signed word) plot::x#6 = (signed word~) circle::$30
|
||||
Alias (signed word) plot::y#6 = (signed word~) circle::$31
|
||||
Alias (signed word) plot::x#7 = (signed word~) circle::$33
|
||||
Alias (signed word) plot::y#7 = (signed word~) circle::$34
|
||||
Alias (signed word) plot::x#8 = (signed word) plot::x#9
|
||||
Alias (signed word) plot::y#8 = (signed word) plot::y#9
|
||||
Alias (byte*) fill::end#0 = (byte*~) fill::$0
|
||||
Alias (byte*) fill::addr#0 = (byte*) fill::start#2
|
||||
Alias (byte) fill::val#2 = (byte) fill::val#3
|
||||
Alias (byte*) fill::addr#2 = (byte*) fill::addr#3
|
||||
Alias (byte*) fill::end#1 = (byte*) fill::end#2
|
||||
Alias main::i#2 = main::i#3 main::i#4
|
||||
Alias circle::y#0 = circle::r#1
|
||||
Alias circle::p#0 = circle::$1
|
||||
Alias circle::p#3 = circle::p#6 circle::p#4 circle::p#5
|
||||
Alias circle::x1#14 = circle::x1#2 circle::x1#3 circle::x1#4
|
||||
Alias circle::y#13 = circle::y#2 circle::y#14 circle::y#3
|
||||
Alias circle::xc#10 = circle::xc#11 circle::xc#12 circle::xc#9
|
||||
Alias circle::yc#10 = circle::yc#11 circle::yc#12 circle::yc#9
|
||||
Alias circle::p#1 = circle::$11
|
||||
Alias circle::y#1 = circle::$4
|
||||
Alias circle::p#2 = circle::$8
|
||||
Alias plot::x#0 = circle::$12
|
||||
Alias plot::y#0 = circle::$13
|
||||
Alias circle::xc#1 = circle::xc#2 circle::xc#3 circle::xc#4 circle::xc#5 circle::xc#6 circle::xc#7 circle::xc#8 circle::xc#14
|
||||
Alias circle::x1#10 = circle::x1#6 circle::x1#5 circle::x1#7 circle::x1#8 circle::x1#9 circle::x1#11 circle::x1#12 circle::x1#13
|
||||
Alias circle::yc#1 = circle::yc#2 circle::yc#3 circle::yc#4 circle::yc#5 circle::yc#6 circle::yc#7 circle::yc#8 circle::yc#14
|
||||
Alias circle::y#10 = circle::y#5 circle::y#4 circle::y#6 circle::y#7 circle::y#8 circle::y#9 circle::y#11 circle::y#12
|
||||
Alias circle::p#10 = circle::p#14 circle::p#15 circle::p#13 circle::p#12 circle::p#11 circle::p#9 circle::p#8 circle::p#7
|
||||
Alias plot::x#1 = circle::$15
|
||||
Alias plot::y#1 = circle::$16
|
||||
Alias plot::x#2 = circle::$18
|
||||
Alias plot::y#2 = circle::$19
|
||||
Alias plot::x#3 = circle::$21
|
||||
Alias plot::y#3 = circle::$22
|
||||
Alias plot::x#4 = circle::$24
|
||||
Alias plot::y#4 = circle::$25
|
||||
Alias plot::x#5 = circle::$27
|
||||
Alias plot::y#5 = circle::$28
|
||||
Alias plot::x#6 = circle::$30
|
||||
Alias plot::y#6 = circle::$31
|
||||
Alias plot::x#7 = circle::$33
|
||||
Alias plot::y#7 = circle::$34
|
||||
Alias plot::x#8 = plot::x#9
|
||||
Alias plot::y#8 = plot::y#9
|
||||
Alias fill::end#0 = fill::$0
|
||||
Alias fill::addr#0 = fill::start#2
|
||||
Alias fill::val#2 = fill::val#3
|
||||
Alias fill::addr#2 = fill::addr#3
|
||||
Alias fill::end#1 = fill::end#2
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Alias (signed word) circle::xc#1 = (signed word) circle::xc#10
|
||||
Alias (signed word) circle::x1#10 = (signed word) circle::x1#14
|
||||
Alias (signed word) circle::yc#1 = (signed word) circle::yc#10
|
||||
Alias circle::xc#1 = circle::xc#10
|
||||
Alias circle::x1#10 = circle::x1#14
|
||||
Alias circle::yc#1 = circle::yc#10
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Identical Phi Values (signed word) circle::y#0 (signed word) circle::r#0
|
||||
Identical Phi Values (signed word) circle::xc#13 (signed word) circle::xc#0
|
||||
@ -765,7 +765,7 @@ Constant inlined main::i#0 = (signed word) 1
|
||||
Constant inlined fill::size#1 = (signed word)(number) $28*(number) $19
|
||||
Constant inlined fill::size#0 = (signed word)(number) $28*(number) $19*(number) 8
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Alias (signed word~) plot::$12 = (signed word~) plot::$17
|
||||
Alias plot::$12 = plot::$17
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @8
|
||||
@ -1007,79 +1007,79 @@ fill::@2: scope:[fill] from fill::@1
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r)
|
||||
(signed word~) circle::$0 4.0
|
||||
(signed word~) circle::$10 202.0
|
||||
(signed word~) circle::$5 202.0
|
||||
(signed word~) circle::$6 202.0
|
||||
(signed word~) circle::$7 202.0
|
||||
(signed word~) circle::$9 202.0
|
||||
(signed word~) circle::$0 2002.0
|
||||
(signed word~) circle::$10 200002.0
|
||||
(signed word~) circle::$5 200002.0
|
||||
(signed word~) circle::$6 200002.0
|
||||
(signed word~) circle::$7 200002.0
|
||||
(signed word~) circle::$9 200002.0
|
||||
(signed word) circle::p
|
||||
(signed word) circle::p#0 4.0
|
||||
(signed word) circle::p#1 202.0
|
||||
(signed word) circle::p#10 11.653846153846153
|
||||
(signed word) circle::p#2 202.0
|
||||
(signed word) circle::p#3 58.00000000000001
|
||||
(signed word) circle::p#0 2002.0
|
||||
(signed word) circle::p#1 200002.0
|
||||
(signed word) circle::p#10 11538.576923076922
|
||||
(signed word) circle::p#2 200002.0
|
||||
(signed word) circle::p#3 57286.42857142857
|
||||
(signed word) circle::r
|
||||
(signed word) circle::r#0 5.0
|
||||
(signed word) circle::r#0 701.0
|
||||
(signed word) circle::x1
|
||||
(signed word) circle::x1#1 202.0
|
||||
(signed word) circle::x1#10 36.47222222222223
|
||||
(signed word) circle::x1#1 200002.0
|
||||
(signed word) circle::x1#10 36111.47222222222
|
||||
(signed word) circle::xc
|
||||
(signed word) circle::y
|
||||
(signed word) circle::y#1 60.599999999999994
|
||||
(signed word) circle::y#10 42.73076923076923
|
||||
(signed word) circle::y#13 67.66666666666666
|
||||
(signed word) circle::y#1 60000.600000000006
|
||||
(signed word) circle::y#10 42308.11538461538
|
||||
(signed word) circle::y#13 66834.16666666666
|
||||
(signed word) circle::yc
|
||||
(void()) fill((byte*) fill::start , (signed word) fill::size , (byte) fill::val)
|
||||
(byte*) fill::addr
|
||||
(byte*) fill::addr#0 2.0
|
||||
(byte*) fill::addr#1 22.0
|
||||
(byte*) fill::addr#2 15.333333333333332
|
||||
(byte*) fill::addr#0 101.0
|
||||
(byte*) fill::addr#1 2002.0
|
||||
(byte*) fill::addr#2 1368.3333333333335
|
||||
(byte*) fill::end
|
||||
(byte*) fill::end#0 2.6
|
||||
(byte*) fill::end#0 220.39999999999998
|
||||
(signed word) fill::size
|
||||
(signed word) fill::size#2 2.0
|
||||
(signed word) fill::size#2 101.0
|
||||
(byte*) fill::start
|
||||
(byte) fill::val
|
||||
(byte) fill::val#4 1.8333333333333333
|
||||
(byte) fill::val#4 166.83333333333334
|
||||
(void()) main()
|
||||
(signed word) main::i
|
||||
(signed word) main::i#1 22.0
|
||||
(signed word) main::i#2 11.0
|
||||
(signed word) main::i#1 202.0
|
||||
(signed word) main::i#2 101.0
|
||||
(void()) plot((signed word) plot::x , (signed word) plot::y)
|
||||
(byte~) plot::$10 4.0
|
||||
(signed word~) plot::$11 3.0
|
||||
(signed word~) plot::$12 4.0
|
||||
(signed byte~) plot::$13 4.0
|
||||
(byte~) plot::$14 4.0
|
||||
(signed word~) plot::$15 4.0
|
||||
(signed word~) plot::$16 4.0
|
||||
(signed word~) plot::$8 4.0
|
||||
(byte~) plot::$9 4.0
|
||||
(byte~) plot::$10 2000002.0
|
||||
(signed word~) plot::$11 1500001.5
|
||||
(signed word~) plot::$12 2000002.0
|
||||
(signed byte~) plot::$13 2000002.0
|
||||
(byte~) plot::$14 2000002.0
|
||||
(signed word~) plot::$15 2000002.0
|
||||
(signed word~) plot::$16 2000002.0
|
||||
(signed word~) plot::$8 2000002.0
|
||||
(byte~) plot::$9 2000002.0
|
||||
(byte*) plot::location
|
||||
(byte*) plot::location#1 1.3333333333333333
|
||||
(byte*) plot::location#2 0.8
|
||||
(byte*) plot::location#3 2.0
|
||||
(byte*) plot::location#1 666667.3333333334
|
||||
(byte*) plot::location#2 400000.4
|
||||
(byte*) plot::location#3 1000001.0
|
||||
(signed word) plot::x
|
||||
(signed word) plot::x#0 101.0
|
||||
(signed word) plot::x#1 101.0
|
||||
(signed word) plot::x#2 101.0
|
||||
(signed word) plot::x#3 101.0
|
||||
(signed word) plot::x#4 101.0
|
||||
(signed word) plot::x#5 101.0
|
||||
(signed word) plot::x#6 101.0
|
||||
(signed word) plot::x#7 101.0
|
||||
(signed word) plot::x#8 54.4
|
||||
(signed word) plot::x#0 100001.0
|
||||
(signed word) plot::x#1 100001.0
|
||||
(signed word) plot::x#2 100001.0
|
||||
(signed word) plot::x#3 100001.0
|
||||
(signed word) plot::x#4 100001.0
|
||||
(signed word) plot::x#5 100001.0
|
||||
(signed word) plot::x#6 100001.0
|
||||
(signed word) plot::x#7 100001.0
|
||||
(signed word) plot::x#8 320000.80000000005
|
||||
(signed word) plot::y
|
||||
(signed word) plot::y#0 202.0
|
||||
(signed word) plot::y#1 202.0
|
||||
(signed word) plot::y#2 202.0
|
||||
(signed word) plot::y#3 202.0
|
||||
(signed word) plot::y#4 202.0
|
||||
(signed word) plot::y#5 202.0
|
||||
(signed word) plot::y#6 202.0
|
||||
(signed word) plot::y#7 202.0
|
||||
(signed word) plot::y#8 81.60000000000001
|
||||
(signed word) plot::y#0 200002.0
|
||||
(signed word) plot::y#1 200002.0
|
||||
(signed word) plot::y#2 200002.0
|
||||
(signed word) plot::y#3 200002.0
|
||||
(signed word) plot::y#4 200002.0
|
||||
(signed word) plot::y#5 200002.0
|
||||
(signed word) plot::y#6 200002.0
|
||||
(signed word) plot::y#7 200002.0
|
||||
(signed word) plot::y#8 480001.19999999995
|
||||
|
||||
Initial phi equivalence classes
|
||||
[ main::i#2 main::i#1 ]
|
||||
@ -1872,114 +1872,112 @@ fill: {
|
||||
bitmask: .byte $80, $40, $20, $10, 8, 4, 2, 1
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [8] *((const byte*) BORDERCOL) ← (const byte) BLUE [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [9] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [10] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [12] if((signed word) main::i#2<(signed word) $b4) goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a
|
||||
Statement [14] (signed word) circle::r#0 ← (signed word) main::i#2 [ main::i#2 circle::r#0 ] ( main:2 [ main::i#2 circle::r#0 ] ) always clobbers reg byte a
|
||||
Statement [16] (signed word) main::i#1 ← (signed word) main::i#2 + (signed byte) 5 [ main::i#1 ] ( main:2 [ main::i#1 ] ) always clobbers reg byte a
|
||||
Statement [17] (signed word~) circle::$0 ← (signed word) circle::r#0 << (signed byte) 1 [ circle::r#0 circle::$0 ] ( main:2::circle:15 [ main::i#2 circle::r#0 circle::$0 ] ) always clobbers reg byte a
|
||||
Statement [18] (signed word) circle::p#0 ← (signed byte) 3 - (signed word~) circle::$0 [ circle::r#0 circle::p#0 ] ( main:2::circle:15 [ main::i#2 circle::r#0 circle::p#0 ] ) always clobbers reg byte a
|
||||
Statement [20] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2 [ circle::x1#10 circle::y#13 circle::p#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#3 ] ) always clobbers reg byte a
|
||||
Statement [22] if((signed word) circle::p#3<(signed byte) 0) goto circle::@3 [ circle::x1#10 circle::y#13 circle::p#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#3 ] ) always clobbers reg byte a
|
||||
Statement [23] (signed word) circle::y#1 ← (signed word) circle::y#13 - (signed byte) 1 [ circle::x1#10 circle::p#3 circle::y#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::p#3 circle::y#1 ] ) always clobbers reg byte a
|
||||
Statement [24] (signed word~) circle::$5 ← (signed word) circle::x1#10 - (signed word) circle::y#1 [ circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] ) always clobbers reg byte a
|
||||
Statement [25] (signed word~) circle::$6 ← (signed word~) circle::$5 << (signed byte) 2 [ circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] ) always clobbers reg byte a
|
||||
Statement [26] (signed word~) circle::$7 ← (signed word) circle::p#3 + (signed word~) circle::$6 [ circle::x1#10 circle::y#1 circle::$7 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#1 circle::$7 ] ) always clobbers reg byte a
|
||||
Statement [27] (signed word) circle::p#2 ← (signed word~) circle::$7 + (signed byte) $a [ circle::x1#10 circle::y#1 circle::p#2 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#1 circle::p#2 ] ) always clobbers reg byte a
|
||||
Statement [29] (signed word) plot::x#0 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] ) always clobbers reg byte a
|
||||
Statement [30] (signed word) plot::y#0 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] ) always clobbers reg byte a
|
||||
Statement [32] (signed word) plot::x#1 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] ) always clobbers reg byte a
|
||||
Statement [33] (signed word) plot::y#1 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] ) always clobbers reg byte a
|
||||
Statement [35] (signed word) plot::x#2 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] ) always clobbers reg byte a
|
||||
Statement [36] (signed word) plot::y#2 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] ) always clobbers reg byte a
|
||||
Statement [38] (signed word) plot::x#3 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] ) always clobbers reg byte a
|
||||
Statement [39] (signed word) plot::y#3 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] ) always clobbers reg byte a
|
||||
Statement [41] (signed word) plot::x#4 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] ) always clobbers reg byte a
|
||||
Statement [42] (signed word) plot::y#4 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] ) always clobbers reg byte a
|
||||
Statement [44] (signed word) plot::x#5 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] ) always clobbers reg byte a
|
||||
Statement [45] (signed word) plot::y#5 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] ) always clobbers reg byte a
|
||||
Statement [47] (signed word) plot::x#6 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] ) always clobbers reg byte a
|
||||
Statement [48] (signed word) plot::y#6 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] ) always clobbers reg byte a
|
||||
Statement [50] (signed word) plot::x#7 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] ) always clobbers reg byte a
|
||||
Statement [51] (signed word) plot::y#7 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] ) always clobbers reg byte a
|
||||
Statement [54] (signed word~) circle::$9 ← (signed word) circle::x1#10 << (signed byte) 2 [ circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] ) always clobbers reg byte a
|
||||
Statement [55] (signed word~) circle::$10 ← (signed word) circle::p#3 + (signed word~) circle::$9 [ circle::x1#10 circle::y#13 circle::$10 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::$10 ] ) always clobbers reg byte a
|
||||
Statement [56] (signed word) circle::p#1 ← (signed word~) circle::$10 + (signed byte) 6 [ circle::x1#10 circle::y#13 circle::p#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#1 ] ) always clobbers reg byte a
|
||||
Statement [58] if((signed word) plot::x#8<(signed byte) 0) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] ) always clobbers reg byte a
|
||||
Statement [59] if((signed word) plot::x#8>(signed word) $13f) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] ) always clobbers reg byte a
|
||||
Statement [60] if((signed word) plot::y#8<(signed byte) 0) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] ) always clobbers reg byte a
|
||||
Statement [61] if((signed word) plot::y#8>=(signed word) $c7+(signed byte) 1) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] ) always clobbers reg byte a
|
||||
Statement [62] (signed word~) plot::$8 ← (signed word) plot::x#8 & (signed dword) $fff8 [ plot::x#8 plot::y#8 plot::$8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] ) always clobbers reg byte a
|
||||
Statement [63] (byte*) plot::location#1 ← (const byte*) BITMAP + (signed word~) plot::$8 [ plot::x#8 plot::y#8 plot::location#1 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] ) always clobbers reg byte a
|
||||
Statement [64] (byte~) plot::$9 ← < (signed word) plot::y#8 [ plot::x#8 plot::y#8 plot::location#1 plot::$9 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] ) always clobbers reg byte a
|
||||
Statement [66] (byte*) plot::location#2 ← (byte*) plot::location#1 + (byte~) plot::$10 [ plot::x#8 plot::y#8 plot::location#2 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] ) always clobbers reg byte a
|
||||
Statement [67] (signed word~) plot::$11 ← (signed word) plot::y#8 >> (signed byte) 3 [ plot::x#8 plot::location#2 plot::$11 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] ) always clobbers reg byte a
|
||||
Statement [68] (signed word~) plot::$15 ← (signed word~) plot::$11 << (byte) 2 [ plot::x#8 plot::location#2 plot::$11 plot::$15 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] ) always clobbers reg byte a
|
||||
Statement [69] (signed word~) plot::$16 ← (signed word~) plot::$15 + (signed word~) plot::$11 [ plot::x#8 plot::location#2 plot::$16 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] ) always clobbers reg byte a
|
||||
Statement [70] (signed word~) plot::$12 ← (signed word~) plot::$16 << (byte) 6 [ plot::x#8 plot::location#2 plot::$12 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] ) always clobbers reg byte a
|
||||
Statement [71] (byte*) plot::location#3 ← (byte*) plot::location#2 + (signed word~) plot::$12 [ plot::x#8 plot::location#3 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] ) always clobbers reg byte a
|
||||
Statement [72] (signed byte~) plot::$13 ← (signed word) plot::x#8 & (signed byte) 7 [ plot::location#3 plot::$13 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] ) always clobbers reg byte a
|
||||
Statement [73] (byte~) plot::$14 ← *((byte*) plot::location#3) | *((const byte*) bitmask + (signed byte~) plot::$13) [ plot::location#3 plot::$14 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [74] *((byte*) plot::location#3) ← (byte~) plot::$14 [ ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] ) always clobbers reg byte y
|
||||
Statement [77] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (signed word) fill::size#2 [ fill::addr#0 fill::val#4 fill::end#0 ] ( main:2::fill:5 [ fill::addr#0 fill::val#4 fill::end#0 ] main:2::fill:7 [ fill::addr#0 fill::val#4 fill::end#0 ] ) always clobbers reg byte a
|
||||
Statement [8] *((const byte*) BORDERCOL) ← (const byte) BLUE [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [9] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [10] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [12] if((signed word) main::i#2<(signed word) $b4) goto main::@2 [ main::i#2 ] ( [ main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [14] (signed word) circle::r#0 ← (signed word) main::i#2 [ main::i#2 circle::r#0 ] ( [ main::i#2 circle::r#0 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a
|
||||
Statement [16] (signed word) main::i#1 ← (signed word) main::i#2 + (signed byte) 5 [ main::i#1 ] ( [ main::i#1 ] { } ) always clobbers reg byte a
|
||||
Statement [17] (signed word~) circle::$0 ← (signed word) circle::r#0 << (signed byte) 1 [ circle::r#0 circle::$0 ] ( [ circle::r#0 circle::$0 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [18] (signed word) circle::p#0 ← (signed byte) 3 - (signed word~) circle::$0 [ circle::r#0 circle::p#0 ] ( [ circle::r#0 circle::p#0 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [20] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2 [ circle::x1#10 circle::y#13 circle::p#3 ] ( [ circle::x1#10 circle::y#13 circle::p#3 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [22] if((signed word) circle::p#3<(signed byte) 0) goto circle::@3 [ circle::x1#10 circle::y#13 circle::p#3 ] ( [ circle::x1#10 circle::y#13 circle::p#3 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [23] (signed word) circle::y#1 ← (signed word) circle::y#13 - (signed byte) 1 [ circle::x1#10 circle::p#3 circle::y#1 ] ( [ circle::x1#10 circle::p#3 circle::y#1 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [24] (signed word~) circle::$5 ← (signed word) circle::x1#10 - (signed word) circle::y#1 [ circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] ( [ circle::x1#10 circle::p#3 circle::y#1 circle::$5 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [25] (signed word~) circle::$6 ← (signed word~) circle::$5 << (signed byte) 2 [ circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] ( [ circle::x1#10 circle::p#3 circle::y#1 circle::$6 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [26] (signed word~) circle::$7 ← (signed word) circle::p#3 + (signed word~) circle::$6 [ circle::x1#10 circle::y#1 circle::$7 ] ( [ circle::x1#10 circle::y#1 circle::$7 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [27] (signed word) circle::p#2 ← (signed word~) circle::$7 + (signed byte) $a [ circle::x1#10 circle::y#1 circle::p#2 ] ( [ circle::x1#10 circle::y#1 circle::p#2 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [29] (signed word) plot::x#0 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [30] (signed word) plot::y#0 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [32] (signed word) plot::x#1 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [33] (signed word) plot::y#1 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [35] (signed word) plot::x#2 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [36] (signed word) plot::y#2 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [38] (signed word) plot::x#3 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [39] (signed word) plot::y#3 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [41] (signed word) plot::x#4 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [42] (signed word) plot::y#4 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [44] (signed word) plot::x#5 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [45] (signed word) plot::y#5 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [47] (signed word) plot::x#6 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [48] (signed word) plot::y#6 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [50] (signed word) plot::x#7 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [51] (signed word) plot::y#7 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [54] (signed word~) circle::$9 ← (signed word) circle::x1#10 << (signed byte) 2 [ circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] ( [ circle::x1#10 circle::y#13 circle::p#3 circle::$9 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [55] (signed word~) circle::$10 ← (signed word) circle::p#3 + (signed word~) circle::$9 [ circle::x1#10 circle::y#13 circle::$10 ] ( [ circle::x1#10 circle::y#13 circle::$10 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [56] (signed word) circle::p#1 ← (signed word~) circle::$10 + (signed byte) 6 [ circle::x1#10 circle::y#13 circle::p#1 ] ( [ circle::x1#10 circle::y#13 circle::p#1 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [58] if((signed word) plot::x#8<(signed byte) 0) goto plot::@return [ plot::x#8 plot::y#8 ] ( [ plot::x#8 plot::y#8 circle::x1#10 circle::y#10 circle::p#10 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [59] if((signed word) plot::x#8>(signed word) $13f) goto plot::@return [ plot::x#8 plot::y#8 ] ( [ plot::x#8 plot::y#8 circle::x1#10 circle::y#10 circle::p#10 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [60] if((signed word) plot::y#8<(signed byte) 0) goto plot::@return [ plot::x#8 plot::y#8 ] ( [ plot::x#8 plot::y#8 circle::x1#10 circle::y#10 circle::p#10 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [61] if((signed word) plot::y#8>=(signed word) $c7+(signed byte) 1) goto plot::@return [ plot::x#8 plot::y#8 ] ( [ plot::x#8 plot::y#8 circle::x1#10 circle::y#10 circle::p#10 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [62] (signed word~) plot::$8 ← (signed word) plot::x#8 & (signed dword) $fff8 [ plot::x#8 plot::y#8 plot::$8 ] ( [ plot::x#8 plot::y#8 plot::$8 circle::x1#10 circle::y#10 circle::p#10 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [63] (byte*) plot::location#1 ← (const byte*) BITMAP + (signed word~) plot::$8 [ plot::x#8 plot::y#8 plot::location#1 ] ( [ plot::x#8 plot::y#8 plot::location#1 circle::x1#10 circle::y#10 circle::p#10 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [66] (byte*) plot::location#2 ← (byte*) plot::location#1 + (byte~) plot::$10 [ plot::x#8 plot::y#8 plot::location#2 ] ( [ plot::x#8 plot::y#8 plot::location#2 circle::x1#10 circle::y#10 circle::p#10 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [67] (signed word~) plot::$11 ← (signed word) plot::y#8 >> (signed byte) 3 [ plot::x#8 plot::location#2 plot::$11 ] ( [ plot::x#8 plot::location#2 plot::$11 circle::x1#10 circle::y#10 circle::p#10 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [68] (signed word~) plot::$15 ← (signed word~) plot::$11 << (byte) 2 [ plot::x#8 plot::location#2 plot::$11 plot::$15 ] ( [ plot::x#8 plot::location#2 plot::$11 plot::$15 circle::x1#10 circle::y#10 circle::p#10 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [69] (signed word~) plot::$16 ← (signed word~) plot::$15 + (signed word~) plot::$11 [ plot::x#8 plot::location#2 plot::$16 ] ( [ plot::x#8 plot::location#2 plot::$16 circle::x1#10 circle::y#10 circle::p#10 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [70] (signed word~) plot::$12 ← (signed word~) plot::$16 << (byte) 6 [ plot::x#8 plot::location#2 plot::$12 ] ( [ plot::x#8 plot::location#2 plot::$12 circle::x1#10 circle::y#10 circle::p#10 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [71] (byte*) plot::location#3 ← (byte*) plot::location#2 + (signed word~) plot::$12 [ plot::x#8 plot::location#3 ] ( [ plot::x#8 plot::location#3 circle::x1#10 circle::y#10 circle::p#10 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [72] (signed byte~) plot::$13 ← (signed word) plot::x#8 & (signed byte) 7 [ plot::location#3 plot::$13 ] ( [ plot::location#3 plot::$13 circle::x1#10 circle::y#10 circle::p#10 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [73] (byte~) plot::$14 ← *((byte*) plot::location#3) | *((const byte*) bitmask + (signed byte~) plot::$13) [ plot::location#3 plot::$14 ] ( [ plot::location#3 plot::$14 circle::x1#10 circle::y#10 circle::p#10 main::i#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Statement [74] *((byte*) plot::location#3) ← (byte~) plot::$14 [ ] ( [ circle::x1#10 circle::y#10 circle::p#10 main::i#2 ] { } ) always clobbers reg byte y
|
||||
Statement [77] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (signed word) fill::size#2 [ fill::addr#0 fill::val#4 fill::end#0 ] ( [ fill::addr#0 fill::val#4 fill::end#0 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:16 [ fill::val#4 ]
|
||||
Statement [79] if((byte*) fill::addr#2!=(byte*) fill::end#0) goto fill::@2 [ fill::val#4 fill::end#0 fill::addr#2 ] ( main:2::fill:5 [ fill::val#4 fill::end#0 fill::addr#2 ] main:2::fill:7 [ fill::val#4 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a
|
||||
Statement [81] *((byte*) fill::addr#2) ← (byte) fill::val#4 [ fill::val#4 fill::end#0 fill::addr#2 ] ( main:2::fill:5 [ fill::val#4 fill::end#0 fill::addr#2 ] main:2::fill:7 [ fill::val#4 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [79] if((byte*) fill::addr#2!=(byte*) fill::end#0) goto fill::@2 [ fill::val#4 fill::end#0 fill::addr#2 ] ( [ fill::val#4 fill::end#0 fill::addr#2 ] { } ) always clobbers reg byte a
|
||||
Statement [81] *((byte*) fill::addr#2) ← (byte) fill::val#4 [ fill::val#4 fill::end#0 fill::addr#2 ] ( [ fill::val#4 fill::end#0 fill::addr#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:16 [ fill::val#4 ]
|
||||
Statement [8] *((const byte*) BORDERCOL) ← (const byte) BLUE [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [9] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [10] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [12] if((signed word) main::i#2<(signed word) $b4) goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a
|
||||
Statement [14] (signed word) circle::r#0 ← (signed word) main::i#2 [ main::i#2 circle::r#0 ] ( main:2 [ main::i#2 circle::r#0 ] ) always clobbers reg byte a
|
||||
Statement [16] (signed word) main::i#1 ← (signed word) main::i#2 + (signed byte) 5 [ main::i#1 ] ( main:2 [ main::i#1 ] ) always clobbers reg byte a
|
||||
Statement [17] (signed word~) circle::$0 ← (signed word) circle::r#0 << (signed byte) 1 [ circle::r#0 circle::$0 ] ( main:2::circle:15 [ main::i#2 circle::r#0 circle::$0 ] ) always clobbers reg byte a
|
||||
Statement [18] (signed word) circle::p#0 ← (signed byte) 3 - (signed word~) circle::$0 [ circle::r#0 circle::p#0 ] ( main:2::circle:15 [ main::i#2 circle::r#0 circle::p#0 ] ) always clobbers reg byte a
|
||||
Statement [20] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2 [ circle::x1#10 circle::y#13 circle::p#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#3 ] ) always clobbers reg byte a
|
||||
Statement [22] if((signed word) circle::p#3<(signed byte) 0) goto circle::@3 [ circle::x1#10 circle::y#13 circle::p#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#3 ] ) always clobbers reg byte a
|
||||
Statement [23] (signed word) circle::y#1 ← (signed word) circle::y#13 - (signed byte) 1 [ circle::x1#10 circle::p#3 circle::y#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::p#3 circle::y#1 ] ) always clobbers reg byte a
|
||||
Statement [24] (signed word~) circle::$5 ← (signed word) circle::x1#10 - (signed word) circle::y#1 [ circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] ) always clobbers reg byte a
|
||||
Statement [25] (signed word~) circle::$6 ← (signed word~) circle::$5 << (signed byte) 2 [ circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] ) always clobbers reg byte a
|
||||
Statement [26] (signed word~) circle::$7 ← (signed word) circle::p#3 + (signed word~) circle::$6 [ circle::x1#10 circle::y#1 circle::$7 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#1 circle::$7 ] ) always clobbers reg byte a
|
||||
Statement [27] (signed word) circle::p#2 ← (signed word~) circle::$7 + (signed byte) $a [ circle::x1#10 circle::y#1 circle::p#2 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#1 circle::p#2 ] ) always clobbers reg byte a
|
||||
Statement [29] (signed word) plot::x#0 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] ) always clobbers reg byte a
|
||||
Statement [30] (signed word) plot::y#0 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] ) always clobbers reg byte a
|
||||
Statement [32] (signed word) plot::x#1 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] ) always clobbers reg byte a
|
||||
Statement [33] (signed word) plot::y#1 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] ) always clobbers reg byte a
|
||||
Statement [35] (signed word) plot::x#2 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] ) always clobbers reg byte a
|
||||
Statement [36] (signed word) plot::y#2 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] ) always clobbers reg byte a
|
||||
Statement [38] (signed word) plot::x#3 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] ) always clobbers reg byte a
|
||||
Statement [39] (signed word) plot::y#3 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] ) always clobbers reg byte a
|
||||
Statement [41] (signed word) plot::x#4 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] ) always clobbers reg byte a
|
||||
Statement [42] (signed word) plot::y#4 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] ) always clobbers reg byte a
|
||||
Statement [44] (signed word) plot::x#5 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] ) always clobbers reg byte a
|
||||
Statement [45] (signed word) plot::y#5 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] ) always clobbers reg byte a
|
||||
Statement [47] (signed word) plot::x#6 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] ) always clobbers reg byte a
|
||||
Statement [48] (signed word) plot::y#6 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] ) always clobbers reg byte a
|
||||
Statement [50] (signed word) plot::x#7 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] ) always clobbers reg byte a
|
||||
Statement [51] (signed word) plot::y#7 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] ) always clobbers reg byte a
|
||||
Statement [54] (signed word~) circle::$9 ← (signed word) circle::x1#10 << (signed byte) 2 [ circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] ) always clobbers reg byte a
|
||||
Statement [55] (signed word~) circle::$10 ← (signed word) circle::p#3 + (signed word~) circle::$9 [ circle::x1#10 circle::y#13 circle::$10 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::$10 ] ) always clobbers reg byte a
|
||||
Statement [56] (signed word) circle::p#1 ← (signed word~) circle::$10 + (signed byte) 6 [ circle::x1#10 circle::y#13 circle::p#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#1 ] ) always clobbers reg byte a
|
||||
Statement [58] if((signed word) plot::x#8<(signed byte) 0) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] ) always clobbers reg byte a
|
||||
Statement [59] if((signed word) plot::x#8>(signed word) $13f) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] ) always clobbers reg byte a
|
||||
Statement [60] if((signed word) plot::y#8<(signed byte) 0) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] ) always clobbers reg byte a
|
||||
Statement [61] if((signed word) plot::y#8>=(signed word) $c7+(signed byte) 1) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] ) always clobbers reg byte a
|
||||
Statement [62] (signed word~) plot::$8 ← (signed word) plot::x#8 & (signed dword) $fff8 [ plot::x#8 plot::y#8 plot::$8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] ) always clobbers reg byte a
|
||||
Statement [63] (byte*) plot::location#1 ← (const byte*) BITMAP + (signed word~) plot::$8 [ plot::x#8 plot::y#8 plot::location#1 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] ) always clobbers reg byte a
|
||||
Statement [64] (byte~) plot::$9 ← < (signed word) plot::y#8 [ plot::x#8 plot::y#8 plot::location#1 plot::$9 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] ) always clobbers reg byte a
|
||||
Statement [66] (byte*) plot::location#2 ← (byte*) plot::location#1 + (byte~) plot::$10 [ plot::x#8 plot::y#8 plot::location#2 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] ) always clobbers reg byte a
|
||||
Statement [67] (signed word~) plot::$11 ← (signed word) plot::y#8 >> (signed byte) 3 [ plot::x#8 plot::location#2 plot::$11 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] ) always clobbers reg byte a
|
||||
Statement [68] (signed word~) plot::$15 ← (signed word~) plot::$11 << (byte) 2 [ plot::x#8 plot::location#2 plot::$11 plot::$15 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] ) always clobbers reg byte a
|
||||
Statement [69] (signed word~) plot::$16 ← (signed word~) plot::$15 + (signed word~) plot::$11 [ plot::x#8 plot::location#2 plot::$16 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] ) always clobbers reg byte a
|
||||
Statement [70] (signed word~) plot::$12 ← (signed word~) plot::$16 << (byte) 6 [ plot::x#8 plot::location#2 plot::$12 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] ) always clobbers reg byte a
|
||||
Statement [71] (byte*) plot::location#3 ← (byte*) plot::location#2 + (signed word~) plot::$12 [ plot::x#8 plot::location#3 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] ) always clobbers reg byte a
|
||||
Statement [72] (signed byte~) plot::$13 ← (signed word) plot::x#8 & (signed byte) 7 [ plot::location#3 plot::$13 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] ) always clobbers reg byte a
|
||||
Statement [73] (byte~) plot::$14 ← *((byte*) plot::location#3) | *((const byte*) bitmask + (signed byte~) plot::$13) [ plot::location#3 plot::$14 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [74] *((byte*) plot::location#3) ← (byte~) plot::$14 [ ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] ) always clobbers reg byte y
|
||||
Statement [77] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (signed word) fill::size#2 [ fill::addr#0 fill::val#4 fill::end#0 ] ( main:2::fill:5 [ fill::addr#0 fill::val#4 fill::end#0 ] main:2::fill:7 [ fill::addr#0 fill::val#4 fill::end#0 ] ) always clobbers reg byte a
|
||||
Statement [79] if((byte*) fill::addr#2!=(byte*) fill::end#0) goto fill::@2 [ fill::val#4 fill::end#0 fill::addr#2 ] ( main:2::fill:5 [ fill::val#4 fill::end#0 fill::addr#2 ] main:2::fill:7 [ fill::val#4 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a
|
||||
Statement [81] *((byte*) fill::addr#2) ← (byte) fill::val#4 [ fill::val#4 fill::end#0 fill::addr#2 ] ( main:2::fill:5 [ fill::val#4 fill::end#0 fill::addr#2 ] main:2::fill:7 [ fill::val#4 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [8] *((const byte*) BORDERCOL) ← (const byte) BLUE [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [9] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [10] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [12] if((signed word) main::i#2<(signed word) $b4) goto main::@2 [ main::i#2 ] ( [ main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [14] (signed word) circle::r#0 ← (signed word) main::i#2 [ main::i#2 circle::r#0 ] ( [ main::i#2 circle::r#0 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a
|
||||
Statement [16] (signed word) main::i#1 ← (signed word) main::i#2 + (signed byte) 5 [ main::i#1 ] ( [ main::i#1 ] { } ) always clobbers reg byte a
|
||||
Statement [17] (signed word~) circle::$0 ← (signed word) circle::r#0 << (signed byte) 1 [ circle::r#0 circle::$0 ] ( [ circle::r#0 circle::$0 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [18] (signed word) circle::p#0 ← (signed byte) 3 - (signed word~) circle::$0 [ circle::r#0 circle::p#0 ] ( [ circle::r#0 circle::p#0 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [20] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2 [ circle::x1#10 circle::y#13 circle::p#3 ] ( [ circle::x1#10 circle::y#13 circle::p#3 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [22] if((signed word) circle::p#3<(signed byte) 0) goto circle::@3 [ circle::x1#10 circle::y#13 circle::p#3 ] ( [ circle::x1#10 circle::y#13 circle::p#3 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [23] (signed word) circle::y#1 ← (signed word) circle::y#13 - (signed byte) 1 [ circle::x1#10 circle::p#3 circle::y#1 ] ( [ circle::x1#10 circle::p#3 circle::y#1 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [24] (signed word~) circle::$5 ← (signed word) circle::x1#10 - (signed word) circle::y#1 [ circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] ( [ circle::x1#10 circle::p#3 circle::y#1 circle::$5 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [25] (signed word~) circle::$6 ← (signed word~) circle::$5 << (signed byte) 2 [ circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] ( [ circle::x1#10 circle::p#3 circle::y#1 circle::$6 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [26] (signed word~) circle::$7 ← (signed word) circle::p#3 + (signed word~) circle::$6 [ circle::x1#10 circle::y#1 circle::$7 ] ( [ circle::x1#10 circle::y#1 circle::$7 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [27] (signed word) circle::p#2 ← (signed word~) circle::$7 + (signed byte) $a [ circle::x1#10 circle::y#1 circle::p#2 ] ( [ circle::x1#10 circle::y#1 circle::p#2 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [29] (signed word) plot::x#0 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [30] (signed word) plot::y#0 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [32] (signed word) plot::x#1 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [33] (signed word) plot::y#1 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [35] (signed word) plot::x#2 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [36] (signed word) plot::y#2 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [38] (signed word) plot::x#3 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [39] (signed word) plot::y#3 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [41] (signed word) plot::x#4 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [42] (signed word) plot::y#4 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [44] (signed word) plot::x#5 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [45] (signed word) plot::y#5 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [47] (signed word) plot::x#6 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [48] (signed word) plot::y#6 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [50] (signed word) plot::x#7 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [51] (signed word) plot::y#7 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [54] (signed word~) circle::$9 ← (signed word) circle::x1#10 << (signed byte) 2 [ circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] ( [ circle::x1#10 circle::y#13 circle::p#3 circle::$9 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [55] (signed word~) circle::$10 ← (signed word) circle::p#3 + (signed word~) circle::$9 [ circle::x1#10 circle::y#13 circle::$10 ] ( [ circle::x1#10 circle::y#13 circle::$10 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [56] (signed word) circle::p#1 ← (signed word~) circle::$10 + (signed byte) 6 [ circle::x1#10 circle::y#13 circle::p#1 ] ( [ circle::x1#10 circle::y#13 circle::p#1 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [58] if((signed word) plot::x#8<(signed byte) 0) goto plot::@return [ plot::x#8 plot::y#8 ] ( [ plot::x#8 plot::y#8 circle::x1#10 circle::y#10 circle::p#10 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [59] if((signed word) plot::x#8>(signed word) $13f) goto plot::@return [ plot::x#8 plot::y#8 ] ( [ plot::x#8 plot::y#8 circle::x1#10 circle::y#10 circle::p#10 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [60] if((signed word) plot::y#8<(signed byte) 0) goto plot::@return [ plot::x#8 plot::y#8 ] ( [ plot::x#8 plot::y#8 circle::x1#10 circle::y#10 circle::p#10 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [61] if((signed word) plot::y#8>=(signed word) $c7+(signed byte) 1) goto plot::@return [ plot::x#8 plot::y#8 ] ( [ plot::x#8 plot::y#8 circle::x1#10 circle::y#10 circle::p#10 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [62] (signed word~) plot::$8 ← (signed word) plot::x#8 & (signed dword) $fff8 [ plot::x#8 plot::y#8 plot::$8 ] ( [ plot::x#8 plot::y#8 plot::$8 circle::x1#10 circle::y#10 circle::p#10 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [63] (byte*) plot::location#1 ← (const byte*) BITMAP + (signed word~) plot::$8 [ plot::x#8 plot::y#8 plot::location#1 ] ( [ plot::x#8 plot::y#8 plot::location#1 circle::x1#10 circle::y#10 circle::p#10 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [66] (byte*) plot::location#2 ← (byte*) plot::location#1 + (byte~) plot::$10 [ plot::x#8 plot::y#8 plot::location#2 ] ( [ plot::x#8 plot::y#8 plot::location#2 circle::x1#10 circle::y#10 circle::p#10 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [67] (signed word~) plot::$11 ← (signed word) plot::y#8 >> (signed byte) 3 [ plot::x#8 plot::location#2 plot::$11 ] ( [ plot::x#8 plot::location#2 plot::$11 circle::x1#10 circle::y#10 circle::p#10 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [68] (signed word~) plot::$15 ← (signed word~) plot::$11 << (byte) 2 [ plot::x#8 plot::location#2 plot::$11 plot::$15 ] ( [ plot::x#8 plot::location#2 plot::$11 plot::$15 circle::x1#10 circle::y#10 circle::p#10 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [69] (signed word~) plot::$16 ← (signed word~) plot::$15 + (signed word~) plot::$11 [ plot::x#8 plot::location#2 plot::$16 ] ( [ plot::x#8 plot::location#2 plot::$16 circle::x1#10 circle::y#10 circle::p#10 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [70] (signed word~) plot::$12 ← (signed word~) plot::$16 << (byte) 6 [ plot::x#8 plot::location#2 plot::$12 ] ( [ plot::x#8 plot::location#2 plot::$12 circle::x1#10 circle::y#10 circle::p#10 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [71] (byte*) plot::location#3 ← (byte*) plot::location#2 + (signed word~) plot::$12 [ plot::x#8 plot::location#3 ] ( [ plot::x#8 plot::location#3 circle::x1#10 circle::y#10 circle::p#10 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [72] (signed byte~) plot::$13 ← (signed word) plot::x#8 & (signed byte) 7 [ plot::location#3 plot::$13 ] ( [ plot::location#3 plot::$13 circle::x1#10 circle::y#10 circle::p#10 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [73] (byte~) plot::$14 ← *((byte*) plot::location#3) | *((const byte*) bitmask + (signed byte~) plot::$13) [ plot::location#3 plot::$14 ] ( [ plot::location#3 plot::$14 circle::x1#10 circle::y#10 circle::p#10 main::i#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Statement [74] *((byte*) plot::location#3) ← (byte~) plot::$14 [ ] ( [ circle::x1#10 circle::y#10 circle::p#10 main::i#2 ] { } ) always clobbers reg byte y
|
||||
Statement [77] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (signed word) fill::size#2 [ fill::addr#0 fill::val#4 fill::end#0 ] ( [ fill::addr#0 fill::val#4 fill::end#0 ] { } ) always clobbers reg byte a
|
||||
Statement [79] if((byte*) fill::addr#2!=(byte*) fill::end#0) goto fill::@2 [ fill::val#4 fill::end#0 fill::addr#2 ] ( [ fill::val#4 fill::end#0 fill::addr#2 ] { } ) always clobbers reg byte a
|
||||
Statement [81] *((byte*) fill::addr#2) ← (byte) fill::val#4 [ fill::val#4 fill::end#0 fill::addr#2 ] ( [ fill::val#4 fill::end#0 fill::addr#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Potential registers zp[2]:2 [ main::i#2 main::i#1 ] : zp[2]:2 ,
|
||||
Potential registers zp[2]:4 [ circle::x1#10 circle::x1#1 ] : zp[2]:4 ,
|
||||
Potential registers zp[2]:6 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ] : zp[2]:6 ,
|
||||
@ -2010,16 +2008,16 @@ Potential registers zp[1]:50 [ plot::$14 ] : zp[1]:50 , reg byte a , reg byte x
|
||||
Potential registers zp[2]:51 [ fill::end#0 ] : zp[2]:51 ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [plot] 1,697.6: zp[2]:12 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ] 862.4: zp[2]:10 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ] 4: zp[2]:31 [ plot::$8 ] 4: zp[1]:35 [ plot::$9 ] 4: zp[1]:36 [ plot::$10 ] 4: zp[2]:41 [ plot::$15 ] 4: zp[2]:43 [ plot::$16 ] 4: zp[2]:45 [ plot::$12 ] 4: zp[1]:49 [ plot::$13 ] 4: zp[1]:50 [ plot::$14 ] 3: zp[2]:39 [ plot::$11 ] 2: zp[2]:47 [ plot::location#3 ] 1.33: zp[2]:33 [ plot::location#1 ] 0.8: zp[2]:37 [ plot::location#2 ]
|
||||
Uplift Scope [circle] 477.65: zp[2]:8 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ] 238.47: zp[2]:4 [ circle::x1#10 circle::x1#1 ] 202: zp[2]:21 [ circle::$5 ] 202: zp[2]:23 [ circle::$6 ] 202: zp[2]:25 [ circle::$7 ] 202: zp[2]:27 [ circle::$9 ] 202: zp[2]:29 [ circle::$10 ] 176: zp[2]:6 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ] 4: zp[2]:19 [ circle::$0 ]
|
||||
Uplift Scope [fill] 39.33: zp[2]:17 [ fill::addr#2 fill::addr#0 fill::addr#1 ] 2.6: zp[2]:51 [ fill::end#0 ] 2: zp[2]:14 [ fill::size#2 ] 1.83: zp[1]:16 [ fill::val#4 ]
|
||||
Uplift Scope [main] 33: zp[2]:2 [ main::i#2 main::i#1 ]
|
||||
Uplift Scope [plot] 2,080,017.2: zp[2]:12 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ] 2,000,002: zp[2]:31 [ plot::$8 ] 2,000,002: zp[1]:35 [ plot::$9 ] 2,000,002: zp[1]:36 [ plot::$10 ] 2,000,002: zp[2]:41 [ plot::$15 ] 2,000,002: zp[2]:43 [ plot::$16 ] 2,000,002: zp[2]:45 [ plot::$12 ] 2,000,002: zp[1]:49 [ plot::$13 ] 2,000,002: zp[1]:50 [ plot::$14 ] 1,500,001.5: zp[2]:39 [ plot::$11 ] 1,120,008.8: zp[2]:10 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ] 1,000,001: zp[2]:47 [ plot::location#3 ] 666,667.33: zp[2]:33 [ plot::location#1 ] 400,000.4: zp[2]:37 [ plot::location#2 ]
|
||||
Uplift Scope [circle] 470,831.01: zp[2]:8 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ] 236,113.47: zp[2]:4 [ circle::x1#10 circle::x1#1 ] 200,002: zp[2]:21 [ circle::$5 ] 200,002: zp[2]:23 [ circle::$6 ] 200,002: zp[2]:25 [ circle::$7 ] 200,002: zp[2]:27 [ circle::$9 ] 200,002: zp[2]:29 [ circle::$10 ] 169,843.88: zp[2]:6 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ] 2,002: zp[2]:19 [ circle::$0 ]
|
||||
Uplift Scope [fill] 3,471.33: zp[2]:17 [ fill::addr#2 fill::addr#0 fill::addr#1 ] 220.4: zp[2]:51 [ fill::end#0 ] 166.83: zp[1]:16 [ fill::val#4 ] 101: zp[2]:14 [ fill::size#2 ]
|
||||
Uplift Scope [main] 303: zp[2]:2 [ main::i#2 main::i#1 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [plot] best 53688 combination zp[2]:12 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ] zp[2]:10 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ] zp[2]:31 [ plot::$8 ] reg byte a [ plot::$9 ] reg byte a [ plot::$10 ] zp[2]:41 [ plot::$15 ] zp[2]:43 [ plot::$16 ] zp[2]:45 [ plot::$12 ] reg byte a [ plot::$13 ] reg byte a [ plot::$14 ] zp[2]:39 [ plot::$11 ] zp[2]:47 [ plot::location#3 ] zp[2]:33 [ plot::location#1 ] zp[2]:37 [ plot::location#2 ]
|
||||
Uplifting [plot] best 53688 combination zp[2]:12 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ] zp[2]:31 [ plot::$8 ] reg byte a [ plot::$9 ] reg byte a [ plot::$10 ] zp[2]:41 [ plot::$15 ] zp[2]:43 [ plot::$16 ] zp[2]:45 [ plot::$12 ] reg byte a [ plot::$13 ] reg byte a [ plot::$14 ] zp[2]:39 [ plot::$11 ] zp[2]:10 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ] zp[2]:47 [ plot::location#3 ] zp[2]:33 [ plot::location#1 ] zp[2]:37 [ plot::location#2 ]
|
||||
Limited combination testing to 100 combinations of 256 possible.
|
||||
Uplifting [circle] best 53688 combination zp[2]:8 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ] zp[2]:4 [ circle::x1#10 circle::x1#1 ] zp[2]:21 [ circle::$5 ] zp[2]:23 [ circle::$6 ] zp[2]:25 [ circle::$7 ] zp[2]:27 [ circle::$9 ] zp[2]:29 [ circle::$10 ] zp[2]:6 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ] zp[2]:19 [ circle::$0 ]
|
||||
Uplifting [fill] best 53672 combination zp[2]:17 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp[2]:51 [ fill::end#0 ] zp[2]:14 [ fill::size#2 ] reg byte x [ fill::val#4 ]
|
||||
Uplifting [fill] best 53672 combination zp[2]:17 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp[2]:51 [ fill::end#0 ] reg byte x [ fill::val#4 ] zp[2]:14 [ fill::size#2 ]
|
||||
Uplifting [main] best 53672 combination zp[2]:2 [ main::i#2 main::i#1 ]
|
||||
Uplifting [] best 53672 combination
|
||||
Coalescing zero page register [ zp[2]:8 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ] ] with [ zp[2]:25 [ circle::$7 ] ] - score: 2
|
||||
@ -2826,12 +2824,12 @@ FINAL SYMBOL TABLE
|
||||
(const byte) VIC_RSEL = (byte) 8
|
||||
(const byte*) bitmask[] = { (byte) $80, (byte) $40, (byte) $20, (byte) $10, (byte) 8, (byte) 4, (byte) 2, (byte) 1 }
|
||||
(void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r)
|
||||
(signed word~) circle::$0 zp[2]:4 4.0
|
||||
(signed word~) circle::$10 zp[2]:4 202.0
|
||||
(signed word~) circle::$5 zp[2]:10 202.0
|
||||
(signed word~) circle::$6 zp[2]:10 202.0
|
||||
(signed word~) circle::$7 zp[2]:4 202.0
|
||||
(signed word~) circle::$9 zp[2]:12 202.0
|
||||
(signed word~) circle::$0 zp[2]:4 2002.0
|
||||
(signed word~) circle::$10 zp[2]:4 200002.0
|
||||
(signed word~) circle::$5 zp[2]:10 200002.0
|
||||
(signed word~) circle::$6 zp[2]:10 200002.0
|
||||
(signed word~) circle::$7 zp[2]:4 200002.0
|
||||
(signed word~) circle::$9 zp[2]:12 200002.0
|
||||
(label) circle::@1
|
||||
(label) circle::@10
|
||||
(label) circle::@11
|
||||
@ -2847,22 +2845,22 @@ FINAL SYMBOL TABLE
|
||||
(label) circle::@9
|
||||
(label) circle::@return
|
||||
(signed word) circle::p
|
||||
(signed word) circle::p#0 p zp[2]:4 4.0
|
||||
(signed word) circle::p#1 p zp[2]:4 202.0
|
||||
(signed word) circle::p#10 p zp[2]:4 11.653846153846153
|
||||
(signed word) circle::p#2 p zp[2]:4 202.0
|
||||
(signed word) circle::p#3 p zp[2]:4 58.00000000000001
|
||||
(signed word) circle::p#0 p zp[2]:4 2002.0
|
||||
(signed word) circle::p#1 p zp[2]:4 200002.0
|
||||
(signed word) circle::p#10 p zp[2]:4 11538.576923076922
|
||||
(signed word) circle::p#2 p zp[2]:4 200002.0
|
||||
(signed word) circle::p#3 p zp[2]:4 57286.42857142857
|
||||
(signed word) circle::r
|
||||
(signed word) circle::r#0 r zp[2]:8 5.0
|
||||
(signed word) circle::r#0 r zp[2]:8 701.0
|
||||
(signed word) circle::x1
|
||||
(signed word) circle::x1#1 x1 zp[2]:6 202.0
|
||||
(signed word) circle::x1#10 x1 zp[2]:6 36.47222222222223
|
||||
(signed word) circle::x1#1 x1 zp[2]:6 200002.0
|
||||
(signed word) circle::x1#10 x1 zp[2]:6 36111.47222222222
|
||||
(signed word) circle::xc
|
||||
(const signed word) circle::xc#0 xc = (signed word) $a0
|
||||
(signed word) circle::y
|
||||
(signed word) circle::y#1 y zp[2]:8 60.599999999999994
|
||||
(signed word) circle::y#10 y zp[2]:8 42.73076923076923
|
||||
(signed word) circle::y#13 y zp[2]:8 67.66666666666666
|
||||
(signed word) circle::y#1 y zp[2]:8 60000.600000000006
|
||||
(signed word) circle::y#10 y zp[2]:8 42308.11538461538
|
||||
(signed word) circle::y#13 y zp[2]:8 66834.16666666666
|
||||
(signed word) circle::yc
|
||||
(const signed word) circle::yc#0 yc = (signed byte) $64
|
||||
(void()) fill((byte*) fill::start , (signed word) fill::size , (byte) fill::val)
|
||||
@ -2870,16 +2868,16 @@ FINAL SYMBOL TABLE
|
||||
(label) fill::@2
|
||||
(label) fill::@return
|
||||
(byte*) fill::addr
|
||||
(byte*) fill::addr#0 addr zp[2]:8 2.0
|
||||
(byte*) fill::addr#1 addr zp[2]:8 22.0
|
||||
(byte*) fill::addr#2 addr zp[2]:8 15.333333333333332
|
||||
(byte*) fill::addr#0 addr zp[2]:8 101.0
|
||||
(byte*) fill::addr#1 addr zp[2]:8 2002.0
|
||||
(byte*) fill::addr#2 addr zp[2]:8 1368.3333333333335
|
||||
(byte*) fill::end
|
||||
(byte*) fill::end#0 end zp[2]:6 2.6
|
||||
(byte*) fill::end#0 end zp[2]:6 220.39999999999998
|
||||
(signed word) fill::size
|
||||
(signed word) fill::size#2 size zp[2]:6 2.0
|
||||
(signed word) fill::size#2 size zp[2]:6 101.0
|
||||
(byte*) fill::start
|
||||
(byte) fill::val
|
||||
(byte) fill::val#4 reg byte x 1.8333333333333333
|
||||
(byte) fill::val#4 reg byte x 166.83333333333334
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
@ -2888,47 +2886,47 @@ FINAL SYMBOL TABLE
|
||||
(label) main::@5
|
||||
(label) main::@6
|
||||
(signed word) main::i
|
||||
(signed word) main::i#1 i zp[2]:2 22.0
|
||||
(signed word) main::i#2 i zp[2]:2 11.0
|
||||
(signed word) main::i#1 i zp[2]:2 202.0
|
||||
(signed word) main::i#2 i zp[2]:2 101.0
|
||||
(void()) plot((signed word) plot::x , (signed word) plot::y)
|
||||
(byte~) plot::$10 reg byte a 4.0
|
||||
(signed word~) plot::$11 zp[2]:12 3.0
|
||||
(signed word~) plot::$12 zp[2]:16 4.0
|
||||
(signed byte~) plot::$13 reg byte a 4.0
|
||||
(byte~) plot::$14 reg byte a 4.0
|
||||
(signed word~) plot::$15 zp[2]:16 4.0
|
||||
(signed word~) plot::$16 zp[2]:16 4.0
|
||||
(signed word~) plot::$8 zp[2]:14 4.0
|
||||
(byte~) plot::$9 reg byte a 4.0
|
||||
(byte~) plot::$10 reg byte a 2000002.0
|
||||
(signed word~) plot::$11 zp[2]:12 1500001.5
|
||||
(signed word~) plot::$12 zp[2]:16 2000002.0
|
||||
(signed byte~) plot::$13 reg byte a 2000002.0
|
||||
(byte~) plot::$14 reg byte a 2000002.0
|
||||
(signed word~) plot::$15 zp[2]:16 2000002.0
|
||||
(signed word~) plot::$16 zp[2]:16 2000002.0
|
||||
(signed word~) plot::$8 zp[2]:14 2000002.0
|
||||
(byte~) plot::$9 reg byte a 2000002.0
|
||||
(label) plot::@1
|
||||
(label) plot::@2
|
||||
(label) plot::@3
|
||||
(label) plot::@4
|
||||
(label) plot::@return
|
||||
(byte*) plot::location
|
||||
(byte*) plot::location#1 location zp[2]:14 1.3333333333333333
|
||||
(byte*) plot::location#2 location zp[2]:14 0.8
|
||||
(byte*) plot::location#3 location zp[2]:14 2.0
|
||||
(byte*) plot::location#1 location zp[2]:14 666667.3333333334
|
||||
(byte*) plot::location#2 location zp[2]:14 400000.4
|
||||
(byte*) plot::location#3 location zp[2]:14 1000001.0
|
||||
(signed word) plot::x
|
||||
(signed word) plot::x#0 x zp[2]:10 101.0
|
||||
(signed word) plot::x#1 x zp[2]:10 101.0
|
||||
(signed word) plot::x#2 x zp[2]:10 101.0
|
||||
(signed word) plot::x#3 x zp[2]:10 101.0
|
||||
(signed word) plot::x#4 x zp[2]:10 101.0
|
||||
(signed word) plot::x#5 x zp[2]:10 101.0
|
||||
(signed word) plot::x#6 x zp[2]:10 101.0
|
||||
(signed word) plot::x#7 x zp[2]:10 101.0
|
||||
(signed word) plot::x#8 x zp[2]:10 54.4
|
||||
(signed word) plot::x#0 x zp[2]:10 100001.0
|
||||
(signed word) plot::x#1 x zp[2]:10 100001.0
|
||||
(signed word) plot::x#2 x zp[2]:10 100001.0
|
||||
(signed word) plot::x#3 x zp[2]:10 100001.0
|
||||
(signed word) plot::x#4 x zp[2]:10 100001.0
|
||||
(signed word) plot::x#5 x zp[2]:10 100001.0
|
||||
(signed word) plot::x#6 x zp[2]:10 100001.0
|
||||
(signed word) plot::x#7 x zp[2]:10 100001.0
|
||||
(signed word) plot::x#8 x zp[2]:10 320000.80000000005
|
||||
(signed word) plot::y
|
||||
(signed word) plot::y#0 y zp[2]:12 202.0
|
||||
(signed word) plot::y#1 y zp[2]:12 202.0
|
||||
(signed word) plot::y#2 y zp[2]:12 202.0
|
||||
(signed word) plot::y#3 y zp[2]:12 202.0
|
||||
(signed word) plot::y#4 y zp[2]:12 202.0
|
||||
(signed word) plot::y#5 y zp[2]:12 202.0
|
||||
(signed word) plot::y#6 y zp[2]:12 202.0
|
||||
(signed word) plot::y#7 y zp[2]:12 202.0
|
||||
(signed word) plot::y#8 y zp[2]:12 81.60000000000001
|
||||
(signed word) plot::y#0 y zp[2]:12 200002.0
|
||||
(signed word) plot::y#1 y zp[2]:12 200002.0
|
||||
(signed word) plot::y#2 y zp[2]:12 200002.0
|
||||
(signed word) plot::y#3 y zp[2]:12 200002.0
|
||||
(signed word) plot::y#4 y zp[2]:12 200002.0
|
||||
(signed word) plot::y#5 y zp[2]:12 200002.0
|
||||
(signed word) plot::y#6 y zp[2]:12 200002.0
|
||||
(signed word) plot::y#7 y zp[2]:12 200002.0
|
||||
(signed word) plot::y#8 y zp[2]:12 480001.19999999995
|
||||
|
||||
zp[2]:2 [ main::i#2 main::i#1 ]
|
||||
zp[2]:4 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 circle::$0 ]
|
||||
|
@ -12,12 +12,12 @@
|
||||
(const byte) VIC_RSEL = (byte) 8
|
||||
(const byte*) bitmask[] = { (byte) $80, (byte) $40, (byte) $20, (byte) $10, (byte) 8, (byte) 4, (byte) 2, (byte) 1 }
|
||||
(void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r)
|
||||
(signed word~) circle::$0 zp[2]:4 4.0
|
||||
(signed word~) circle::$10 zp[2]:4 202.0
|
||||
(signed word~) circle::$5 zp[2]:10 202.0
|
||||
(signed word~) circle::$6 zp[2]:10 202.0
|
||||
(signed word~) circle::$7 zp[2]:4 202.0
|
||||
(signed word~) circle::$9 zp[2]:12 202.0
|
||||
(signed word~) circle::$0 zp[2]:4 2002.0
|
||||
(signed word~) circle::$10 zp[2]:4 200002.0
|
||||
(signed word~) circle::$5 zp[2]:10 200002.0
|
||||
(signed word~) circle::$6 zp[2]:10 200002.0
|
||||
(signed word~) circle::$7 zp[2]:4 200002.0
|
||||
(signed word~) circle::$9 zp[2]:12 200002.0
|
||||
(label) circle::@1
|
||||
(label) circle::@10
|
||||
(label) circle::@11
|
||||
@ -33,22 +33,22 @@
|
||||
(label) circle::@9
|
||||
(label) circle::@return
|
||||
(signed word) circle::p
|
||||
(signed word) circle::p#0 p zp[2]:4 4.0
|
||||
(signed word) circle::p#1 p zp[2]:4 202.0
|
||||
(signed word) circle::p#10 p zp[2]:4 11.653846153846153
|
||||
(signed word) circle::p#2 p zp[2]:4 202.0
|
||||
(signed word) circle::p#3 p zp[2]:4 58.00000000000001
|
||||
(signed word) circle::p#0 p zp[2]:4 2002.0
|
||||
(signed word) circle::p#1 p zp[2]:4 200002.0
|
||||
(signed word) circle::p#10 p zp[2]:4 11538.576923076922
|
||||
(signed word) circle::p#2 p zp[2]:4 200002.0
|
||||
(signed word) circle::p#3 p zp[2]:4 57286.42857142857
|
||||
(signed word) circle::r
|
||||
(signed word) circle::r#0 r zp[2]:8 5.0
|
||||
(signed word) circle::r#0 r zp[2]:8 701.0
|
||||
(signed word) circle::x1
|
||||
(signed word) circle::x1#1 x1 zp[2]:6 202.0
|
||||
(signed word) circle::x1#10 x1 zp[2]:6 36.47222222222223
|
||||
(signed word) circle::x1#1 x1 zp[2]:6 200002.0
|
||||
(signed word) circle::x1#10 x1 zp[2]:6 36111.47222222222
|
||||
(signed word) circle::xc
|
||||
(const signed word) circle::xc#0 xc = (signed word) $a0
|
||||
(signed word) circle::y
|
||||
(signed word) circle::y#1 y zp[2]:8 60.599999999999994
|
||||
(signed word) circle::y#10 y zp[2]:8 42.73076923076923
|
||||
(signed word) circle::y#13 y zp[2]:8 67.66666666666666
|
||||
(signed word) circle::y#1 y zp[2]:8 60000.600000000006
|
||||
(signed word) circle::y#10 y zp[2]:8 42308.11538461538
|
||||
(signed word) circle::y#13 y zp[2]:8 66834.16666666666
|
||||
(signed word) circle::yc
|
||||
(const signed word) circle::yc#0 yc = (signed byte) $64
|
||||
(void()) fill((byte*) fill::start , (signed word) fill::size , (byte) fill::val)
|
||||
@ -56,16 +56,16 @@
|
||||
(label) fill::@2
|
||||
(label) fill::@return
|
||||
(byte*) fill::addr
|
||||
(byte*) fill::addr#0 addr zp[2]:8 2.0
|
||||
(byte*) fill::addr#1 addr zp[2]:8 22.0
|
||||
(byte*) fill::addr#2 addr zp[2]:8 15.333333333333332
|
||||
(byte*) fill::addr#0 addr zp[2]:8 101.0
|
||||
(byte*) fill::addr#1 addr zp[2]:8 2002.0
|
||||
(byte*) fill::addr#2 addr zp[2]:8 1368.3333333333335
|
||||
(byte*) fill::end
|
||||
(byte*) fill::end#0 end zp[2]:6 2.6
|
||||
(byte*) fill::end#0 end zp[2]:6 220.39999999999998
|
||||
(signed word) fill::size
|
||||
(signed word) fill::size#2 size zp[2]:6 2.0
|
||||
(signed word) fill::size#2 size zp[2]:6 101.0
|
||||
(byte*) fill::start
|
||||
(byte) fill::val
|
||||
(byte) fill::val#4 reg byte x 1.8333333333333333
|
||||
(byte) fill::val#4 reg byte x 166.83333333333334
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
@ -74,47 +74,47 @@
|
||||
(label) main::@5
|
||||
(label) main::@6
|
||||
(signed word) main::i
|
||||
(signed word) main::i#1 i zp[2]:2 22.0
|
||||
(signed word) main::i#2 i zp[2]:2 11.0
|
||||
(signed word) main::i#1 i zp[2]:2 202.0
|
||||
(signed word) main::i#2 i zp[2]:2 101.0
|
||||
(void()) plot((signed word) plot::x , (signed word) plot::y)
|
||||
(byte~) plot::$10 reg byte a 4.0
|
||||
(signed word~) plot::$11 zp[2]:12 3.0
|
||||
(signed word~) plot::$12 zp[2]:16 4.0
|
||||
(signed byte~) plot::$13 reg byte a 4.0
|
||||
(byte~) plot::$14 reg byte a 4.0
|
||||
(signed word~) plot::$15 zp[2]:16 4.0
|
||||
(signed word~) plot::$16 zp[2]:16 4.0
|
||||
(signed word~) plot::$8 zp[2]:14 4.0
|
||||
(byte~) plot::$9 reg byte a 4.0
|
||||
(byte~) plot::$10 reg byte a 2000002.0
|
||||
(signed word~) plot::$11 zp[2]:12 1500001.5
|
||||
(signed word~) plot::$12 zp[2]:16 2000002.0
|
||||
(signed byte~) plot::$13 reg byte a 2000002.0
|
||||
(byte~) plot::$14 reg byte a 2000002.0
|
||||
(signed word~) plot::$15 zp[2]:16 2000002.0
|
||||
(signed word~) plot::$16 zp[2]:16 2000002.0
|
||||
(signed word~) plot::$8 zp[2]:14 2000002.0
|
||||
(byte~) plot::$9 reg byte a 2000002.0
|
||||
(label) plot::@1
|
||||
(label) plot::@2
|
||||
(label) plot::@3
|
||||
(label) plot::@4
|
||||
(label) plot::@return
|
||||
(byte*) plot::location
|
||||
(byte*) plot::location#1 location zp[2]:14 1.3333333333333333
|
||||
(byte*) plot::location#2 location zp[2]:14 0.8
|
||||
(byte*) plot::location#3 location zp[2]:14 2.0
|
||||
(byte*) plot::location#1 location zp[2]:14 666667.3333333334
|
||||
(byte*) plot::location#2 location zp[2]:14 400000.4
|
||||
(byte*) plot::location#3 location zp[2]:14 1000001.0
|
||||
(signed word) plot::x
|
||||
(signed word) plot::x#0 x zp[2]:10 101.0
|
||||
(signed word) plot::x#1 x zp[2]:10 101.0
|
||||
(signed word) plot::x#2 x zp[2]:10 101.0
|
||||
(signed word) plot::x#3 x zp[2]:10 101.0
|
||||
(signed word) plot::x#4 x zp[2]:10 101.0
|
||||
(signed word) plot::x#5 x zp[2]:10 101.0
|
||||
(signed word) plot::x#6 x zp[2]:10 101.0
|
||||
(signed word) plot::x#7 x zp[2]:10 101.0
|
||||
(signed word) plot::x#8 x zp[2]:10 54.4
|
||||
(signed word) plot::x#0 x zp[2]:10 100001.0
|
||||
(signed word) plot::x#1 x zp[2]:10 100001.0
|
||||
(signed word) plot::x#2 x zp[2]:10 100001.0
|
||||
(signed word) plot::x#3 x zp[2]:10 100001.0
|
||||
(signed word) plot::x#4 x zp[2]:10 100001.0
|
||||
(signed word) plot::x#5 x zp[2]:10 100001.0
|
||||
(signed word) plot::x#6 x zp[2]:10 100001.0
|
||||
(signed word) plot::x#7 x zp[2]:10 100001.0
|
||||
(signed word) plot::x#8 x zp[2]:10 320000.80000000005
|
||||
(signed word) plot::y
|
||||
(signed word) plot::y#0 y zp[2]:12 202.0
|
||||
(signed word) plot::y#1 y zp[2]:12 202.0
|
||||
(signed word) plot::y#2 y zp[2]:12 202.0
|
||||
(signed word) plot::y#3 y zp[2]:12 202.0
|
||||
(signed word) plot::y#4 y zp[2]:12 202.0
|
||||
(signed word) plot::y#5 y zp[2]:12 202.0
|
||||
(signed word) plot::y#6 y zp[2]:12 202.0
|
||||
(signed word) plot::y#7 y zp[2]:12 202.0
|
||||
(signed word) plot::y#8 y zp[2]:12 81.60000000000001
|
||||
(signed word) plot::y#0 y zp[2]:12 200002.0
|
||||
(signed word) plot::y#1 y zp[2]:12 200002.0
|
||||
(signed word) plot::y#2 y zp[2]:12 200002.0
|
||||
(signed word) plot::y#3 y zp[2]:12 200002.0
|
||||
(signed word) plot::y#4 y zp[2]:12 200002.0
|
||||
(signed word) plot::y#5 y zp[2]:12 200002.0
|
||||
(signed word) plot::y#6 y zp[2]:12 200002.0
|
||||
(signed word) plot::y#7 y zp[2]:12 200002.0
|
||||
(signed word) plot::y#8 y zp[2]:12 480001.19999999995
|
||||
|
||||
zp[2]:2 [ main::i#2 main::i#1 ]
|
||||
zp[2]:4 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 circle::$0 ]
|
||||
|
@ -588,46 +588,46 @@ Inferred type updated to signed word in (snumber~) plot::$0 ← (signed word) pl
|
||||
Inferred type updated to byte in (unumber~) plot::$2 ← (byte~) plot::$1 & (byte) 7
|
||||
Inferred type updated to signed word in (snumber~) plot::$4 ← (signed word~) plot::$3 * (signed word) $140
|
||||
Inferred type updated to signed byte in (snumber~) plot::$5 ← (signed word) plot::x#8 & (signed byte) 7
|
||||
Alias (signed word) circle::y#0 = (signed word) circle::r#1
|
||||
Alias (signed word) circle::p#0 = (signed word~) circle::$1
|
||||
Alias (signed word) circle::p#3 = (signed word) circle::p#6 (signed word) circle::p#4 (signed word) circle::p#5
|
||||
Alias (signed word) circle::x1#14 = (signed word) circle::x1#2 (signed word) circle::x1#3 (signed word) circle::x1#4
|
||||
Alias (signed word) circle::y#13 = (signed word) circle::y#2 (signed word) circle::y#14 (signed word) circle::y#3
|
||||
Alias (signed word) circle::xc#10 = (signed word) circle::xc#11 (signed word) circle::xc#12 (signed word) circle::xc#9
|
||||
Alias (signed word) circle::yc#10 = (signed word) circle::yc#11 (signed word) circle::yc#12 (signed word) circle::yc#9
|
||||
Alias (signed word) circle::p#1 = (signed word~) circle::$11
|
||||
Alias (signed word) circle::y#1 = (signed word~) circle::$4
|
||||
Alias (signed word) circle::p#2 = (signed word~) circle::$8
|
||||
Alias (signed word) plot::x#0 = (signed word~) circle::$12
|
||||
Alias (signed word) plot::y#0 = (signed word~) circle::$13
|
||||
Alias (signed word) circle::xc#1 = (signed word) circle::xc#2 (signed word) circle::xc#3 (signed word) circle::xc#4 (signed word) circle::xc#5 (signed word) circle::xc#6 (signed word) circle::xc#7 (signed word) circle::xc#8 (signed word) circle::xc#14
|
||||
Alias (signed word) circle::x1#10 = (signed word) circle::x1#6 (signed word) circle::x1#5 (signed word) circle::x1#7 (signed word) circle::x1#8 (signed word) circle::x1#9 (signed word) circle::x1#11 (signed word) circle::x1#12 (signed word) circle::x1#13
|
||||
Alias (signed word) circle::yc#1 = (signed word) circle::yc#2 (signed word) circle::yc#3 (signed word) circle::yc#4 (signed word) circle::yc#5 (signed word) circle::yc#6 (signed word) circle::yc#7 (signed word) circle::yc#8 (signed word) circle::yc#14
|
||||
Alias (signed word) circle::y#10 = (signed word) circle::y#5 (signed word) circle::y#4 (signed word) circle::y#6 (signed word) circle::y#7 (signed word) circle::y#8 (signed word) circle::y#9 (signed word) circle::y#11 (signed word) circle::y#12
|
||||
Alias (signed word) circle::p#10 = (signed word) circle::p#14 (signed word) circle::p#15 (signed word) circle::p#13 (signed word) circle::p#12 (signed word) circle::p#11 (signed word) circle::p#9 (signed word) circle::p#8 (signed word) circle::p#7
|
||||
Alias (signed word) plot::x#1 = (signed word~) circle::$15
|
||||
Alias (signed word) plot::y#1 = (signed word~) circle::$16
|
||||
Alias (signed word) plot::x#2 = (signed word~) circle::$18
|
||||
Alias (signed word) plot::y#2 = (signed word~) circle::$19
|
||||
Alias (signed word) plot::x#3 = (signed word~) circle::$21
|
||||
Alias (signed word) plot::y#3 = (signed word~) circle::$22
|
||||
Alias (signed word) plot::x#4 = (signed word~) circle::$24
|
||||
Alias (signed word) plot::y#4 = (signed word~) circle::$25
|
||||
Alias (signed word) plot::x#5 = (signed word~) circle::$27
|
||||
Alias (signed word) plot::y#5 = (signed word~) circle::$28
|
||||
Alias (signed word) plot::x#6 = (signed word~) circle::$30
|
||||
Alias (signed word) plot::y#6 = (signed word~) circle::$31
|
||||
Alias (signed word) plot::x#7 = (signed word~) circle::$33
|
||||
Alias (signed word) plot::y#7 = (signed word~) circle::$34
|
||||
Alias (byte*) fill::end#0 = (byte*~) fill::$0
|
||||
Alias (byte*) fill::addr#0 = (byte*) fill::start#2
|
||||
Alias (byte) fill::val#2 = (byte) fill::val#3
|
||||
Alias (byte*) fill::addr#2 = (byte*) fill::addr#3
|
||||
Alias (byte*) fill::end#1 = (byte*) fill::end#2
|
||||
Alias circle::y#0 = circle::r#1
|
||||
Alias circle::p#0 = circle::$1
|
||||
Alias circle::p#3 = circle::p#6 circle::p#4 circle::p#5
|
||||
Alias circle::x1#14 = circle::x1#2 circle::x1#3 circle::x1#4
|
||||
Alias circle::y#13 = circle::y#2 circle::y#14 circle::y#3
|
||||
Alias circle::xc#10 = circle::xc#11 circle::xc#12 circle::xc#9
|
||||
Alias circle::yc#10 = circle::yc#11 circle::yc#12 circle::yc#9
|
||||
Alias circle::p#1 = circle::$11
|
||||
Alias circle::y#1 = circle::$4
|
||||
Alias circle::p#2 = circle::$8
|
||||
Alias plot::x#0 = circle::$12
|
||||
Alias plot::y#0 = circle::$13
|
||||
Alias circle::xc#1 = circle::xc#2 circle::xc#3 circle::xc#4 circle::xc#5 circle::xc#6 circle::xc#7 circle::xc#8 circle::xc#14
|
||||
Alias circle::x1#10 = circle::x1#6 circle::x1#5 circle::x1#7 circle::x1#8 circle::x1#9 circle::x1#11 circle::x1#12 circle::x1#13
|
||||
Alias circle::yc#1 = circle::yc#2 circle::yc#3 circle::yc#4 circle::yc#5 circle::yc#6 circle::yc#7 circle::yc#8 circle::yc#14
|
||||
Alias circle::y#10 = circle::y#5 circle::y#4 circle::y#6 circle::y#7 circle::y#8 circle::y#9 circle::y#11 circle::y#12
|
||||
Alias circle::p#10 = circle::p#14 circle::p#15 circle::p#13 circle::p#12 circle::p#11 circle::p#9 circle::p#8 circle::p#7
|
||||
Alias plot::x#1 = circle::$15
|
||||
Alias plot::y#1 = circle::$16
|
||||
Alias plot::x#2 = circle::$18
|
||||
Alias plot::y#2 = circle::$19
|
||||
Alias plot::x#3 = circle::$21
|
||||
Alias plot::y#3 = circle::$22
|
||||
Alias plot::x#4 = circle::$24
|
||||
Alias plot::y#4 = circle::$25
|
||||
Alias plot::x#5 = circle::$27
|
||||
Alias plot::y#5 = circle::$28
|
||||
Alias plot::x#6 = circle::$30
|
||||
Alias plot::y#6 = circle::$31
|
||||
Alias plot::x#7 = circle::$33
|
||||
Alias plot::y#7 = circle::$34
|
||||
Alias fill::end#0 = fill::$0
|
||||
Alias fill::addr#0 = fill::start#2
|
||||
Alias fill::val#2 = fill::val#3
|
||||
Alias fill::addr#2 = fill::addr#3
|
||||
Alias fill::end#1 = fill::end#2
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Alias (signed word) circle::xc#1 = (signed word) circle::xc#10
|
||||
Alias (signed word) circle::x1#10 = (signed word) circle::x1#14
|
||||
Alias (signed word) circle::yc#1 = (signed word) circle::yc#10
|
||||
Alias circle::xc#1 = circle::xc#10
|
||||
Alias circle::x1#10 = circle::x1#14
|
||||
Alias circle::yc#1 = circle::yc#10
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Identical Phi Values (signed word) circle::y#0 (signed word) circle::r#0
|
||||
Identical Phi Values (signed word) circle::xc#13 (signed word) circle::xc#0
|
||||
@ -687,7 +687,7 @@ Constant inlined fill::size#1 = (signed word)(number) $28*(number) $19
|
||||
Constant inlined fill::size#0 = (signed word)(number) $28*(number) $19*(number) 8
|
||||
Constant inlined circle::p#0 = (signed byte) 3-(const signed word) circle::r#0<<(signed byte) 1
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Alias (signed word~) plot::$4 = (signed word~) plot::$9
|
||||
Alias plot::$4 = plot::$9
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @8
|
||||
@ -902,73 +902,73 @@ fill::@2: scope:[fill] from fill::@1
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r)
|
||||
(signed word~) circle::$10 22.0
|
||||
(signed word~) circle::$5 22.0
|
||||
(signed word~) circle::$6 22.0
|
||||
(signed word~) circle::$7 22.0
|
||||
(signed word~) circle::$9 22.0
|
||||
(signed word~) circle::$10 2002.0
|
||||
(signed word~) circle::$5 2002.0
|
||||
(signed word~) circle::$6 2002.0
|
||||
(signed word~) circle::$7 2002.0
|
||||
(signed word~) circle::$9 2002.0
|
||||
(signed word) circle::p
|
||||
(signed word) circle::p#1 22.0
|
||||
(signed word) circle::p#10 1.2692307692307692
|
||||
(signed word) circle::p#2 22.0
|
||||
(signed word) circle::p#3 6.285714285714286
|
||||
(signed word) circle::p#1 2002.0
|
||||
(signed word) circle::p#10 115.5
|
||||
(signed word) circle::p#2 2002.0
|
||||
(signed word) circle::p#3 572.0
|
||||
(signed word) circle::r
|
||||
(signed word) circle::x1
|
||||
(signed word) circle::x1#1 22.0
|
||||
(signed word) circle::x1#10 3.9722222222222214
|
||||
(signed word) circle::x1#1 2002.0
|
||||
(signed word) circle::x1#10 361.4722222222221
|
||||
(signed word) circle::xc
|
||||
(signed word) circle::y
|
||||
(signed word) circle::y#1 6.6000000000000005
|
||||
(signed word) circle::y#10 4.653846153846153
|
||||
(signed word) circle::y#13 7.333333333333333
|
||||
(signed word) circle::y#1 600.5999999999999
|
||||
(signed word) circle::y#10 423.5
|
||||
(signed word) circle::y#13 667.3333333333334
|
||||
(signed word) circle::yc
|
||||
(void()) fill((byte*) fill::start , (signed word) fill::size , (byte) fill::val)
|
||||
(byte*) fill::addr
|
||||
(byte*) fill::addr#0 2.0
|
||||
(byte*) fill::addr#1 22.0
|
||||
(byte*) fill::addr#2 15.333333333333332
|
||||
(byte*) fill::addr#0 101.0
|
||||
(byte*) fill::addr#1 2002.0
|
||||
(byte*) fill::addr#2 1368.3333333333335
|
||||
(byte*) fill::end
|
||||
(byte*) fill::end#0 2.6
|
||||
(byte*) fill::end#0 220.39999999999998
|
||||
(signed word) fill::size
|
||||
(signed word) fill::size#2 2.0
|
||||
(signed word) fill::size#2 101.0
|
||||
(byte*) fill::start
|
||||
(byte) fill::val
|
||||
(byte) fill::val#4 1.8333333333333333
|
||||
(byte) fill::val#4 166.83333333333334
|
||||
(void()) main()
|
||||
(void()) plot((signed word) plot::x , (signed word) plot::y)
|
||||
(signed word~) plot::$0 4.0
|
||||
(byte~) plot::$1 4.0
|
||||
(byte~) plot::$2 4.0
|
||||
(signed word~) plot::$3 3.0
|
||||
(signed word~) plot::$4 4.0
|
||||
(signed byte~) plot::$5 4.0
|
||||
(byte~) plot::$6 4.0
|
||||
(signed word~) plot::$7 4.0
|
||||
(signed word~) plot::$8 4.0
|
||||
(signed word~) plot::$0 20002.0
|
||||
(byte~) plot::$1 20002.0
|
||||
(byte~) plot::$2 20002.0
|
||||
(signed word~) plot::$3 15001.5
|
||||
(signed word~) plot::$4 20002.0
|
||||
(signed byte~) plot::$5 20002.0
|
||||
(byte~) plot::$6 20002.0
|
||||
(signed word~) plot::$7 20002.0
|
||||
(signed word~) plot::$8 20002.0
|
||||
(byte*) plot::location
|
||||
(byte*) plot::location#1 1.3333333333333333
|
||||
(byte*) plot::location#2 0.8
|
||||
(byte*) plot::location#3 2.0
|
||||
(byte*) plot::location#1 6667.333333333333
|
||||
(byte*) plot::location#2 4000.4
|
||||
(byte*) plot::location#3 10001.0
|
||||
(signed word) plot::x
|
||||
(signed word) plot::x#0 11.0
|
||||
(signed word) plot::x#1 11.0
|
||||
(signed word) plot::x#2 11.0
|
||||
(signed word) plot::x#3 11.0
|
||||
(signed word) plot::x#4 11.0
|
||||
(signed word) plot::x#5 11.0
|
||||
(signed word) plot::x#6 11.0
|
||||
(signed word) plot::x#7 11.0
|
||||
(signed word) plot::x#8 8.363636363636363
|
||||
(signed word) plot::x#0 1001.0
|
||||
(signed word) plot::x#1 1001.0
|
||||
(signed word) plot::x#2 1001.0
|
||||
(signed word) plot::x#3 1001.0
|
||||
(signed word) plot::x#4 1001.0
|
||||
(signed word) plot::x#5 1001.0
|
||||
(signed word) plot::x#6 1001.0
|
||||
(signed word) plot::x#7 1001.0
|
||||
(signed word) plot::x#8 2546.363636363636
|
||||
(signed word) plot::y
|
||||
(signed word) plot::y#0 22.0
|
||||
(signed word) plot::y#1 22.0
|
||||
(signed word) plot::y#2 22.0
|
||||
(signed word) plot::y#3 22.0
|
||||
(signed word) plot::y#4 22.0
|
||||
(signed word) plot::y#5 22.0
|
||||
(signed word) plot::y#6 22.0
|
||||
(signed word) plot::y#7 22.0
|
||||
(signed word) plot::y#8 15.333333333333336
|
||||
(signed word) plot::y#0 2002.0
|
||||
(signed word) plot::y#1 2002.0
|
||||
(signed word) plot::y#2 2002.0
|
||||
(signed word) plot::y#3 2002.0
|
||||
(signed word) plot::y#4 2002.0
|
||||
(signed word) plot::y#5 2002.0
|
||||
(signed word) plot::y#6 2002.0
|
||||
(signed word) plot::y#7 2002.0
|
||||
(signed word) plot::y#8 4668.333333333333
|
||||
|
||||
Initial phi equivalence classes
|
||||
[ circle::x1#10 circle::x1#1 ]
|
||||
@ -1673,96 +1673,94 @@ fill: {
|
||||
bitmask: .byte $80, $40, $20, $10, 8, 4, 2, 1
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [8] *((const byte*) BORDERCOL) ← (const byte) BLUE [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [9] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [10] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [15] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2 [ circle::x1#10 circle::y#13 circle::p#3 ] ( main:2::circle:11 [ circle::x1#10 circle::y#13 circle::p#3 ] ) always clobbers reg byte a
|
||||
Statement [17] if((signed word) circle::p#3<(signed byte) 0) goto circle::@3 [ circle::x1#10 circle::y#13 circle::p#3 ] ( main:2::circle:11 [ circle::x1#10 circle::y#13 circle::p#3 ] ) always clobbers reg byte a
|
||||
Statement [18] (signed word) circle::y#1 ← (signed word) circle::y#13 - (signed byte) 1 [ circle::x1#10 circle::p#3 circle::y#1 ] ( main:2::circle:11 [ circle::x1#10 circle::p#3 circle::y#1 ] ) always clobbers reg byte a
|
||||
Statement [19] (signed word~) circle::$5 ← (signed word) circle::x1#10 - (signed word) circle::y#1 [ circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] ( main:2::circle:11 [ circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] ) always clobbers reg byte a
|
||||
Statement [20] (signed word~) circle::$6 ← (signed word~) circle::$5 << (signed byte) 2 [ circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] ( main:2::circle:11 [ circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] ) always clobbers reg byte a
|
||||
Statement [21] (signed word~) circle::$7 ← (signed word) circle::p#3 + (signed word~) circle::$6 [ circle::x1#10 circle::y#1 circle::$7 ] ( main:2::circle:11 [ circle::x1#10 circle::y#1 circle::$7 ] ) always clobbers reg byte a
|
||||
Statement [22] (signed word) circle::p#2 ← (signed word~) circle::$7 + (signed byte) $a [ circle::x1#10 circle::y#1 circle::p#2 ] ( main:2::circle:11 [ circle::x1#10 circle::y#1 circle::p#2 ] ) always clobbers reg byte a
|
||||
Statement [24] (signed word) plot::x#0 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] ) always clobbers reg byte a
|
||||
Statement [25] (signed word) plot::y#0 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] ) always clobbers reg byte a
|
||||
Statement [27] (signed word) plot::x#1 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] ) always clobbers reg byte a
|
||||
Statement [28] (signed word) plot::y#1 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] ) always clobbers reg byte a
|
||||
Statement [30] (signed word) plot::x#2 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] ) always clobbers reg byte a
|
||||
Statement [31] (signed word) plot::y#2 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] ) always clobbers reg byte a
|
||||
Statement [33] (signed word) plot::x#3 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] ) always clobbers reg byte a
|
||||
Statement [34] (signed word) plot::y#3 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] ) always clobbers reg byte a
|
||||
Statement [36] (signed word) plot::x#4 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] ) always clobbers reg byte a
|
||||
Statement [37] (signed word) plot::y#4 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] ) always clobbers reg byte a
|
||||
Statement [39] (signed word) plot::x#5 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] ) always clobbers reg byte a
|
||||
Statement [40] (signed word) plot::y#5 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] ) always clobbers reg byte a
|
||||
Statement [42] (signed word) plot::x#6 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] ) always clobbers reg byte a
|
||||
Statement [43] (signed word) plot::y#6 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] ) always clobbers reg byte a
|
||||
Statement [45] (signed word) plot::x#7 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] ) always clobbers reg byte a
|
||||
Statement [46] (signed word) plot::y#7 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] ) always clobbers reg byte a
|
||||
Statement [49] (signed word~) circle::$9 ← (signed word) circle::x1#10 << (signed byte) 2 [ circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] ( main:2::circle:11 [ circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] ) always clobbers reg byte a
|
||||
Statement [50] (signed word~) circle::$10 ← (signed word) circle::p#3 + (signed word~) circle::$9 [ circle::x1#10 circle::y#13 circle::$10 ] ( main:2::circle:11 [ circle::x1#10 circle::y#13 circle::$10 ] ) always clobbers reg byte a
|
||||
Statement [51] (signed word) circle::p#1 ← (signed word~) circle::$10 + (signed byte) 6 [ circle::x1#10 circle::y#13 circle::p#1 ] ( main:2::circle:11 [ circle::x1#10 circle::y#13 circle::p#1 ] ) always clobbers reg byte a
|
||||
Statement [53] (signed word~) plot::$0 ← (signed word) plot::x#8 & (signed dword) $fff8 [ plot::x#8 plot::y#8 plot::$0 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] ) always clobbers reg byte a
|
||||
Statement [54] (byte*) plot::location#1 ← (const byte*) BITMAP + (signed word~) plot::$0 [ plot::x#8 plot::y#8 plot::location#1 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] ) always clobbers reg byte a
|
||||
Statement [55] (byte~) plot::$1 ← < (signed word) plot::y#8 [ plot::x#8 plot::y#8 plot::location#1 plot::$1 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] ) always clobbers reg byte a
|
||||
Statement [57] (byte*) plot::location#2 ← (byte*) plot::location#1 + (byte~) plot::$2 [ plot::x#8 plot::y#8 plot::location#2 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] ) always clobbers reg byte a
|
||||
Statement [58] (signed word~) plot::$3 ← (signed word) plot::y#8 >> (signed byte) 3 [ plot::x#8 plot::location#2 plot::$3 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] ) always clobbers reg byte a
|
||||
Statement [59] (signed word~) plot::$7 ← (signed word~) plot::$3 << (byte) 2 [ plot::x#8 plot::location#2 plot::$3 plot::$7 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] ) always clobbers reg byte a
|
||||
Statement [60] (signed word~) plot::$8 ← (signed word~) plot::$7 + (signed word~) plot::$3 [ plot::x#8 plot::location#2 plot::$8 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] ) always clobbers reg byte a
|
||||
Statement [61] (signed word~) plot::$4 ← (signed word~) plot::$8 << (byte) 6 [ plot::x#8 plot::location#2 plot::$4 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] ) always clobbers reg byte a
|
||||
Statement [62] (byte*) plot::location#3 ← (byte*) plot::location#2 + (signed word~) plot::$4 [ plot::x#8 plot::location#3 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] ) always clobbers reg byte a
|
||||
Statement [63] (signed byte~) plot::$5 ← (signed word) plot::x#8 & (signed byte) 7 [ plot::location#3 plot::$5 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] ) always clobbers reg byte a
|
||||
Statement [64] (byte~) plot::$6 ← *((byte*) plot::location#3) | *((const byte*) bitmask + (signed byte~) plot::$5) [ plot::location#3 plot::$6 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [65] *((byte*) plot::location#3) ← (byte~) plot::$6 [ ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 ] ) always clobbers reg byte y
|
||||
Statement [68] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (signed word) fill::size#2 [ fill::addr#0 fill::val#4 fill::end#0 ] ( main:2::fill:5 [ fill::addr#0 fill::val#4 fill::end#0 ] main:2::fill:7 [ fill::addr#0 fill::val#4 fill::end#0 ] ) always clobbers reg byte a
|
||||
Statement [8] *((const byte*) BORDERCOL) ← (const byte) BLUE [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [9] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [10] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [15] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2 [ circle::x1#10 circle::y#13 circle::p#3 ] ( [ circle::x1#10 circle::y#13 circle::p#3 ] { } ) always clobbers reg byte a
|
||||
Statement [17] if((signed word) circle::p#3<(signed byte) 0) goto circle::@3 [ circle::x1#10 circle::y#13 circle::p#3 ] ( [ circle::x1#10 circle::y#13 circle::p#3 ] { } ) always clobbers reg byte a
|
||||
Statement [18] (signed word) circle::y#1 ← (signed word) circle::y#13 - (signed byte) 1 [ circle::x1#10 circle::p#3 circle::y#1 ] ( [ circle::x1#10 circle::p#3 circle::y#1 ] { } ) always clobbers reg byte a
|
||||
Statement [19] (signed word~) circle::$5 ← (signed word) circle::x1#10 - (signed word) circle::y#1 [ circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] ( [ circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] { } ) always clobbers reg byte a
|
||||
Statement [20] (signed word~) circle::$6 ← (signed word~) circle::$5 << (signed byte) 2 [ circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] ( [ circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] { } ) always clobbers reg byte a
|
||||
Statement [21] (signed word~) circle::$7 ← (signed word) circle::p#3 + (signed word~) circle::$6 [ circle::x1#10 circle::y#1 circle::$7 ] ( [ circle::x1#10 circle::y#1 circle::$7 ] { } ) always clobbers reg byte a
|
||||
Statement [22] (signed word) circle::p#2 ← (signed word~) circle::$7 + (signed byte) $a [ circle::x1#10 circle::y#1 circle::p#2 ] ( [ circle::x1#10 circle::y#1 circle::p#2 ] { } ) always clobbers reg byte a
|
||||
Statement [24] (signed word) plot::x#0 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] { } ) always clobbers reg byte a
|
||||
Statement [25] (signed word) plot::y#0 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] { } ) always clobbers reg byte a
|
||||
Statement [27] (signed word) plot::x#1 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] { } ) always clobbers reg byte a
|
||||
Statement [28] (signed word) plot::y#1 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] { } ) always clobbers reg byte a
|
||||
Statement [30] (signed word) plot::x#2 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] { } ) always clobbers reg byte a
|
||||
Statement [31] (signed word) plot::y#2 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] { } ) always clobbers reg byte a
|
||||
Statement [33] (signed word) plot::x#3 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] { } ) always clobbers reg byte a
|
||||
Statement [34] (signed word) plot::y#3 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] { } ) always clobbers reg byte a
|
||||
Statement [36] (signed word) plot::x#4 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] { } ) always clobbers reg byte a
|
||||
Statement [37] (signed word) plot::y#4 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] { } ) always clobbers reg byte a
|
||||
Statement [39] (signed word) plot::x#5 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] { } ) always clobbers reg byte a
|
||||
Statement [40] (signed word) plot::y#5 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] { } ) always clobbers reg byte a
|
||||
Statement [42] (signed word) plot::x#6 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] { } ) always clobbers reg byte a
|
||||
Statement [43] (signed word) plot::y#6 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] { } ) always clobbers reg byte a
|
||||
Statement [45] (signed word) plot::x#7 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] { } ) always clobbers reg byte a
|
||||
Statement [46] (signed word) plot::y#7 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] { } ) always clobbers reg byte a
|
||||
Statement [49] (signed word~) circle::$9 ← (signed word) circle::x1#10 << (signed byte) 2 [ circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] ( [ circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] { } ) always clobbers reg byte a
|
||||
Statement [50] (signed word~) circle::$10 ← (signed word) circle::p#3 + (signed word~) circle::$9 [ circle::x1#10 circle::y#13 circle::$10 ] ( [ circle::x1#10 circle::y#13 circle::$10 ] { } ) always clobbers reg byte a
|
||||
Statement [51] (signed word) circle::p#1 ← (signed word~) circle::$10 + (signed byte) 6 [ circle::x1#10 circle::y#13 circle::p#1 ] ( [ circle::x1#10 circle::y#13 circle::p#1 ] { } ) always clobbers reg byte a
|
||||
Statement [53] (signed word~) plot::$0 ← (signed word) plot::x#8 & (signed dword) $fff8 [ plot::x#8 plot::y#8 plot::$0 ] ( [ plot::x#8 plot::y#8 plot::$0 circle::x1#10 circle::y#10 circle::p#10 ] { } ) always clobbers reg byte a
|
||||
Statement [54] (byte*) plot::location#1 ← (const byte*) BITMAP + (signed word~) plot::$0 [ plot::x#8 plot::y#8 plot::location#1 ] ( [ plot::x#8 plot::y#8 plot::location#1 circle::x1#10 circle::y#10 circle::p#10 ] { } ) always clobbers reg byte a
|
||||
Statement [57] (byte*) plot::location#2 ← (byte*) plot::location#1 + (byte~) plot::$2 [ plot::x#8 plot::y#8 plot::location#2 ] ( [ plot::x#8 plot::y#8 plot::location#2 circle::x1#10 circle::y#10 circle::p#10 ] { } ) always clobbers reg byte a
|
||||
Statement [58] (signed word~) plot::$3 ← (signed word) plot::y#8 >> (signed byte) 3 [ plot::x#8 plot::location#2 plot::$3 ] ( [ plot::x#8 plot::location#2 plot::$3 circle::x1#10 circle::y#10 circle::p#10 ] { } ) always clobbers reg byte a
|
||||
Statement [59] (signed word~) plot::$7 ← (signed word~) plot::$3 << (byte) 2 [ plot::x#8 plot::location#2 plot::$3 plot::$7 ] ( [ plot::x#8 plot::location#2 plot::$3 plot::$7 circle::x1#10 circle::y#10 circle::p#10 ] { } ) always clobbers reg byte a
|
||||
Statement [60] (signed word~) plot::$8 ← (signed word~) plot::$7 + (signed word~) plot::$3 [ plot::x#8 plot::location#2 plot::$8 ] ( [ plot::x#8 plot::location#2 plot::$8 circle::x1#10 circle::y#10 circle::p#10 ] { } ) always clobbers reg byte a
|
||||
Statement [61] (signed word~) plot::$4 ← (signed word~) plot::$8 << (byte) 6 [ plot::x#8 plot::location#2 plot::$4 ] ( [ plot::x#8 plot::location#2 plot::$4 circle::x1#10 circle::y#10 circle::p#10 ] { } ) always clobbers reg byte a
|
||||
Statement [62] (byte*) plot::location#3 ← (byte*) plot::location#2 + (signed word~) plot::$4 [ plot::x#8 plot::location#3 ] ( [ plot::x#8 plot::location#3 circle::x1#10 circle::y#10 circle::p#10 ] { } ) always clobbers reg byte a
|
||||
Statement [63] (signed byte~) plot::$5 ← (signed word) plot::x#8 & (signed byte) 7 [ plot::location#3 plot::$5 ] ( [ plot::location#3 plot::$5 circle::x1#10 circle::y#10 circle::p#10 ] { } ) always clobbers reg byte a
|
||||
Statement [64] (byte~) plot::$6 ← *((byte*) plot::location#3) | *((const byte*) bitmask + (signed byte~) plot::$5) [ plot::location#3 plot::$6 ] ( [ plot::location#3 plot::$6 circle::x1#10 circle::y#10 circle::p#10 ] { } ) always clobbers reg byte a reg byte y
|
||||
Statement [65] *((byte*) plot::location#3) ← (byte~) plot::$6 [ ] ( [ circle::x1#10 circle::y#10 circle::p#10 ] { } ) always clobbers reg byte y
|
||||
Statement [68] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (signed word) fill::size#2 [ fill::addr#0 fill::val#4 fill::end#0 ] ( [ fill::addr#0 fill::val#4 fill::end#0 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:14 [ fill::val#4 ]
|
||||
Statement [70] if((byte*) fill::addr#2!=(byte*) fill::end#0) goto fill::@2 [ fill::val#4 fill::end#0 fill::addr#2 ] ( main:2::fill:5 [ fill::val#4 fill::end#0 fill::addr#2 ] main:2::fill:7 [ fill::val#4 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a
|
||||
Statement [72] *((byte*) fill::addr#2) ← (byte) fill::val#4 [ fill::val#4 fill::end#0 fill::addr#2 ] ( main:2::fill:5 [ fill::val#4 fill::end#0 fill::addr#2 ] main:2::fill:7 [ fill::val#4 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [70] if((byte*) fill::addr#2!=(byte*) fill::end#0) goto fill::@2 [ fill::val#4 fill::end#0 fill::addr#2 ] ( [ fill::val#4 fill::end#0 fill::addr#2 ] { } ) always clobbers reg byte a
|
||||
Statement [72] *((byte*) fill::addr#2) ← (byte) fill::val#4 [ fill::val#4 fill::end#0 fill::addr#2 ] ( [ fill::val#4 fill::end#0 fill::addr#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:14 [ fill::val#4 ]
|
||||
Statement [8] *((const byte*) BORDERCOL) ← (const byte) BLUE [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [9] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [10] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [15] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2 [ circle::x1#10 circle::y#13 circle::p#3 ] ( main:2::circle:11 [ circle::x1#10 circle::y#13 circle::p#3 ] ) always clobbers reg byte a
|
||||
Statement [17] if((signed word) circle::p#3<(signed byte) 0) goto circle::@3 [ circle::x1#10 circle::y#13 circle::p#3 ] ( main:2::circle:11 [ circle::x1#10 circle::y#13 circle::p#3 ] ) always clobbers reg byte a
|
||||
Statement [18] (signed word) circle::y#1 ← (signed word) circle::y#13 - (signed byte) 1 [ circle::x1#10 circle::p#3 circle::y#1 ] ( main:2::circle:11 [ circle::x1#10 circle::p#3 circle::y#1 ] ) always clobbers reg byte a
|
||||
Statement [19] (signed word~) circle::$5 ← (signed word) circle::x1#10 - (signed word) circle::y#1 [ circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] ( main:2::circle:11 [ circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] ) always clobbers reg byte a
|
||||
Statement [20] (signed word~) circle::$6 ← (signed word~) circle::$5 << (signed byte) 2 [ circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] ( main:2::circle:11 [ circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] ) always clobbers reg byte a
|
||||
Statement [21] (signed word~) circle::$7 ← (signed word) circle::p#3 + (signed word~) circle::$6 [ circle::x1#10 circle::y#1 circle::$7 ] ( main:2::circle:11 [ circle::x1#10 circle::y#1 circle::$7 ] ) always clobbers reg byte a
|
||||
Statement [22] (signed word) circle::p#2 ← (signed word~) circle::$7 + (signed byte) $a [ circle::x1#10 circle::y#1 circle::p#2 ] ( main:2::circle:11 [ circle::x1#10 circle::y#1 circle::p#2 ] ) always clobbers reg byte a
|
||||
Statement [24] (signed word) plot::x#0 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] ) always clobbers reg byte a
|
||||
Statement [25] (signed word) plot::y#0 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] ) always clobbers reg byte a
|
||||
Statement [27] (signed word) plot::x#1 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] ) always clobbers reg byte a
|
||||
Statement [28] (signed word) plot::y#1 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] ) always clobbers reg byte a
|
||||
Statement [30] (signed word) plot::x#2 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] ) always clobbers reg byte a
|
||||
Statement [31] (signed word) plot::y#2 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] ) always clobbers reg byte a
|
||||
Statement [33] (signed word) plot::x#3 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] ) always clobbers reg byte a
|
||||
Statement [34] (signed word) plot::y#3 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] ) always clobbers reg byte a
|
||||
Statement [36] (signed word) plot::x#4 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] ) always clobbers reg byte a
|
||||
Statement [37] (signed word) plot::y#4 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] ) always clobbers reg byte a
|
||||
Statement [39] (signed word) plot::x#5 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] ) always clobbers reg byte a
|
||||
Statement [40] (signed word) plot::y#5 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] ) always clobbers reg byte a
|
||||
Statement [42] (signed word) plot::x#6 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] ) always clobbers reg byte a
|
||||
Statement [43] (signed word) plot::y#6 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] ) always clobbers reg byte a
|
||||
Statement [45] (signed word) plot::x#7 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] ) always clobbers reg byte a
|
||||
Statement [46] (signed word) plot::y#7 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] ( main:2::circle:11 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] ) always clobbers reg byte a
|
||||
Statement [49] (signed word~) circle::$9 ← (signed word) circle::x1#10 << (signed byte) 2 [ circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] ( main:2::circle:11 [ circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] ) always clobbers reg byte a
|
||||
Statement [50] (signed word~) circle::$10 ← (signed word) circle::p#3 + (signed word~) circle::$9 [ circle::x1#10 circle::y#13 circle::$10 ] ( main:2::circle:11 [ circle::x1#10 circle::y#13 circle::$10 ] ) always clobbers reg byte a
|
||||
Statement [51] (signed word) circle::p#1 ← (signed word~) circle::$10 + (signed byte) 6 [ circle::x1#10 circle::y#13 circle::p#1 ] ( main:2::circle:11 [ circle::x1#10 circle::y#13 circle::p#1 ] ) always clobbers reg byte a
|
||||
Statement [53] (signed word~) plot::$0 ← (signed word) plot::x#8 & (signed dword) $fff8 [ plot::x#8 plot::y#8 plot::$0 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] ) always clobbers reg byte a
|
||||
Statement [54] (byte*) plot::location#1 ← (const byte*) BITMAP + (signed word~) plot::$0 [ plot::x#8 plot::y#8 plot::location#1 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] ) always clobbers reg byte a
|
||||
Statement [55] (byte~) plot::$1 ← < (signed word) plot::y#8 [ plot::x#8 plot::y#8 plot::location#1 plot::$1 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$1 ] ) always clobbers reg byte a
|
||||
Statement [57] (byte*) plot::location#2 ← (byte*) plot::location#1 + (byte~) plot::$2 [ plot::x#8 plot::y#8 plot::location#2 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] ) always clobbers reg byte a
|
||||
Statement [58] (signed word~) plot::$3 ← (signed word) plot::y#8 >> (signed byte) 3 [ plot::x#8 plot::location#2 plot::$3 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] ) always clobbers reg byte a
|
||||
Statement [59] (signed word~) plot::$7 ← (signed word~) plot::$3 << (byte) 2 [ plot::x#8 plot::location#2 plot::$3 plot::$7 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] ) always clobbers reg byte a
|
||||
Statement [60] (signed word~) plot::$8 ← (signed word~) plot::$7 + (signed word~) plot::$3 [ plot::x#8 plot::location#2 plot::$8 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] ) always clobbers reg byte a
|
||||
Statement [61] (signed word~) plot::$4 ← (signed word~) plot::$8 << (byte) 6 [ plot::x#8 plot::location#2 plot::$4 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] ) always clobbers reg byte a
|
||||
Statement [62] (byte*) plot::location#3 ← (byte*) plot::location#2 + (signed word~) plot::$4 [ plot::x#8 plot::location#3 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] ) always clobbers reg byte a
|
||||
Statement [63] (signed byte~) plot::$5 ← (signed word) plot::x#8 & (signed byte) 7 [ plot::location#3 plot::$5 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] ) always clobbers reg byte a
|
||||
Statement [64] (byte~) plot::$6 ← *((byte*) plot::location#3) | *((const byte*) bitmask + (signed byte~) plot::$5) [ plot::location#3 plot::$6 ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [65] *((byte*) plot::location#3) ← (byte~) plot::$6 [ ] ( main:2::circle:11::plot:26 [ circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:11::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:11::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:11::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:11::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:11::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:11::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:11::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 ] ) always clobbers reg byte y
|
||||
Statement [68] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (signed word) fill::size#2 [ fill::addr#0 fill::val#4 fill::end#0 ] ( main:2::fill:5 [ fill::addr#0 fill::val#4 fill::end#0 ] main:2::fill:7 [ fill::addr#0 fill::val#4 fill::end#0 ] ) always clobbers reg byte a
|
||||
Statement [70] if((byte*) fill::addr#2!=(byte*) fill::end#0) goto fill::@2 [ fill::val#4 fill::end#0 fill::addr#2 ] ( main:2::fill:5 [ fill::val#4 fill::end#0 fill::addr#2 ] main:2::fill:7 [ fill::val#4 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a
|
||||
Statement [72] *((byte*) fill::addr#2) ← (byte) fill::val#4 [ fill::val#4 fill::end#0 fill::addr#2 ] ( main:2::fill:5 [ fill::val#4 fill::end#0 fill::addr#2 ] main:2::fill:7 [ fill::val#4 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [8] *((const byte*) BORDERCOL) ← (const byte) BLUE [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [9] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [10] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [15] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2 [ circle::x1#10 circle::y#13 circle::p#3 ] ( [ circle::x1#10 circle::y#13 circle::p#3 ] { } ) always clobbers reg byte a
|
||||
Statement [17] if((signed word) circle::p#3<(signed byte) 0) goto circle::@3 [ circle::x1#10 circle::y#13 circle::p#3 ] ( [ circle::x1#10 circle::y#13 circle::p#3 ] { } ) always clobbers reg byte a
|
||||
Statement [18] (signed word) circle::y#1 ← (signed word) circle::y#13 - (signed byte) 1 [ circle::x1#10 circle::p#3 circle::y#1 ] ( [ circle::x1#10 circle::p#3 circle::y#1 ] { } ) always clobbers reg byte a
|
||||
Statement [19] (signed word~) circle::$5 ← (signed word) circle::x1#10 - (signed word) circle::y#1 [ circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] ( [ circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] { } ) always clobbers reg byte a
|
||||
Statement [20] (signed word~) circle::$6 ← (signed word~) circle::$5 << (signed byte) 2 [ circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] ( [ circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] { } ) always clobbers reg byte a
|
||||
Statement [21] (signed word~) circle::$7 ← (signed word) circle::p#3 + (signed word~) circle::$6 [ circle::x1#10 circle::y#1 circle::$7 ] ( [ circle::x1#10 circle::y#1 circle::$7 ] { } ) always clobbers reg byte a
|
||||
Statement [22] (signed word) circle::p#2 ← (signed word~) circle::$7 + (signed byte) $a [ circle::x1#10 circle::y#1 circle::p#2 ] ( [ circle::x1#10 circle::y#1 circle::p#2 ] { } ) always clobbers reg byte a
|
||||
Statement [24] (signed word) plot::x#0 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] { } ) always clobbers reg byte a
|
||||
Statement [25] (signed word) plot::y#0 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] { } ) always clobbers reg byte a
|
||||
Statement [27] (signed word) plot::x#1 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] { } ) always clobbers reg byte a
|
||||
Statement [28] (signed word) plot::y#1 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] { } ) always clobbers reg byte a
|
||||
Statement [30] (signed word) plot::x#2 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] { } ) always clobbers reg byte a
|
||||
Statement [31] (signed word) plot::y#2 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] { } ) always clobbers reg byte a
|
||||
Statement [33] (signed word) plot::x#3 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] { } ) always clobbers reg byte a
|
||||
Statement [34] (signed word) plot::y#3 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] { } ) always clobbers reg byte a
|
||||
Statement [36] (signed word) plot::x#4 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] { } ) always clobbers reg byte a
|
||||
Statement [37] (signed word) plot::y#4 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] { } ) always clobbers reg byte a
|
||||
Statement [39] (signed word) plot::x#5 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] { } ) always clobbers reg byte a
|
||||
Statement [40] (signed word) plot::y#5 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] { } ) always clobbers reg byte a
|
||||
Statement [42] (signed word) plot::x#6 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] { } ) always clobbers reg byte a
|
||||
Statement [43] (signed word) plot::y#6 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] { } ) always clobbers reg byte a
|
||||
Statement [45] (signed word) plot::x#7 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] { } ) always clobbers reg byte a
|
||||
Statement [46] (signed word) plot::y#7 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] ( [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] { } ) always clobbers reg byte a
|
||||
Statement [49] (signed word~) circle::$9 ← (signed word) circle::x1#10 << (signed byte) 2 [ circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] ( [ circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] { } ) always clobbers reg byte a
|
||||
Statement [50] (signed word~) circle::$10 ← (signed word) circle::p#3 + (signed word~) circle::$9 [ circle::x1#10 circle::y#13 circle::$10 ] ( [ circle::x1#10 circle::y#13 circle::$10 ] { } ) always clobbers reg byte a
|
||||
Statement [51] (signed word) circle::p#1 ← (signed word~) circle::$10 + (signed byte) 6 [ circle::x1#10 circle::y#13 circle::p#1 ] ( [ circle::x1#10 circle::y#13 circle::p#1 ] { } ) always clobbers reg byte a
|
||||
Statement [53] (signed word~) plot::$0 ← (signed word) plot::x#8 & (signed dword) $fff8 [ plot::x#8 plot::y#8 plot::$0 ] ( [ plot::x#8 plot::y#8 plot::$0 circle::x1#10 circle::y#10 circle::p#10 ] { } ) always clobbers reg byte a
|
||||
Statement [54] (byte*) plot::location#1 ← (const byte*) BITMAP + (signed word~) plot::$0 [ plot::x#8 plot::y#8 plot::location#1 ] ( [ plot::x#8 plot::y#8 plot::location#1 circle::x1#10 circle::y#10 circle::p#10 ] { } ) always clobbers reg byte a
|
||||
Statement [57] (byte*) plot::location#2 ← (byte*) plot::location#1 + (byte~) plot::$2 [ plot::x#8 plot::y#8 plot::location#2 ] ( [ plot::x#8 plot::y#8 plot::location#2 circle::x1#10 circle::y#10 circle::p#10 ] { } ) always clobbers reg byte a
|
||||
Statement [58] (signed word~) plot::$3 ← (signed word) plot::y#8 >> (signed byte) 3 [ plot::x#8 plot::location#2 plot::$3 ] ( [ plot::x#8 plot::location#2 plot::$3 circle::x1#10 circle::y#10 circle::p#10 ] { } ) always clobbers reg byte a
|
||||
Statement [59] (signed word~) plot::$7 ← (signed word~) plot::$3 << (byte) 2 [ plot::x#8 plot::location#2 plot::$3 plot::$7 ] ( [ plot::x#8 plot::location#2 plot::$3 plot::$7 circle::x1#10 circle::y#10 circle::p#10 ] { } ) always clobbers reg byte a
|
||||
Statement [60] (signed word~) plot::$8 ← (signed word~) plot::$7 + (signed word~) plot::$3 [ plot::x#8 plot::location#2 plot::$8 ] ( [ plot::x#8 plot::location#2 plot::$8 circle::x1#10 circle::y#10 circle::p#10 ] { } ) always clobbers reg byte a
|
||||
Statement [61] (signed word~) plot::$4 ← (signed word~) plot::$8 << (byte) 6 [ plot::x#8 plot::location#2 plot::$4 ] ( [ plot::x#8 plot::location#2 plot::$4 circle::x1#10 circle::y#10 circle::p#10 ] { } ) always clobbers reg byte a
|
||||
Statement [62] (byte*) plot::location#3 ← (byte*) plot::location#2 + (signed word~) plot::$4 [ plot::x#8 plot::location#3 ] ( [ plot::x#8 plot::location#3 circle::x1#10 circle::y#10 circle::p#10 ] { } ) always clobbers reg byte a
|
||||
Statement [63] (signed byte~) plot::$5 ← (signed word) plot::x#8 & (signed byte) 7 [ plot::location#3 plot::$5 ] ( [ plot::location#3 plot::$5 circle::x1#10 circle::y#10 circle::p#10 ] { } ) always clobbers reg byte a
|
||||
Statement [64] (byte~) plot::$6 ← *((byte*) plot::location#3) | *((const byte*) bitmask + (signed byte~) plot::$5) [ plot::location#3 plot::$6 ] ( [ plot::location#3 plot::$6 circle::x1#10 circle::y#10 circle::p#10 ] { } ) always clobbers reg byte a reg byte y
|
||||
Statement [65] *((byte*) plot::location#3) ← (byte~) plot::$6 [ ] ( [ circle::x1#10 circle::y#10 circle::p#10 ] { } ) always clobbers reg byte y
|
||||
Statement [68] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (signed word) fill::size#2 [ fill::addr#0 fill::val#4 fill::end#0 ] ( [ fill::addr#0 fill::val#4 fill::end#0 ] { } ) always clobbers reg byte a
|
||||
Statement [70] if((byte*) fill::addr#2!=(byte*) fill::end#0) goto fill::@2 [ fill::val#4 fill::end#0 fill::addr#2 ] ( [ fill::val#4 fill::end#0 fill::addr#2 ] { } ) always clobbers reg byte a
|
||||
Statement [72] *((byte*) fill::addr#2) ← (byte) fill::val#4 [ fill::val#4 fill::end#0 fill::addr#2 ] ( [ fill::val#4 fill::end#0 fill::addr#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Potential registers zp[2]:2 [ circle::x1#10 circle::x1#1 ] : zp[2]:2 ,
|
||||
Potential registers zp[2]:4 [ circle::y#13 circle::y#10 circle::y#1 ] : zp[2]:4 ,
|
||||
Potential registers zp[2]:6 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 ] : zp[2]:6 ,
|
||||
@ -1791,16 +1789,16 @@ Potential registers zp[1]:46 [ plot::$6 ] : zp[1]:46 , reg byte a , reg byte x ,
|
||||
Potential registers zp[2]:47 [ fill::end#0 ] : zp[2]:47 ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [plot] 191.33: zp[2]:10 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ] 96.36: zp[2]:8 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ] 4: zp[2]:27 [ plot::$0 ] 4: zp[1]:31 [ plot::$1 ] 4: zp[1]:32 [ plot::$2 ] 4: zp[2]:37 [ plot::$7 ] 4: zp[2]:39 [ plot::$8 ] 4: zp[2]:41 [ plot::$4 ] 4: zp[1]:45 [ plot::$5 ] 4: zp[1]:46 [ plot::$6 ] 3: zp[2]:35 [ plot::$3 ] 2: zp[2]:43 [ plot::location#3 ] 1.33: zp[2]:29 [ plot::location#1 ] 0.8: zp[2]:33 [ plot::location#2 ]
|
||||
Uplift Scope [circle] 51.55: zp[2]:6 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 ] 25.97: zp[2]:2 [ circle::x1#10 circle::x1#1 ] 22: zp[2]:17 [ circle::$5 ] 22: zp[2]:19 [ circle::$6 ] 22: zp[2]:21 [ circle::$7 ] 22: zp[2]:23 [ circle::$9 ] 22: zp[2]:25 [ circle::$10 ] 18.59: zp[2]:4 [ circle::y#13 circle::y#10 circle::y#1 ]
|
||||
Uplift Scope [fill] 39.33: zp[2]:15 [ fill::addr#2 fill::addr#0 fill::addr#1 ] 2.6: zp[2]:47 [ fill::end#0 ] 2: zp[2]:12 [ fill::size#2 ] 1.83: zp[1]:14 [ fill::val#4 ]
|
||||
Uplift Scope [plot] 20,684.33: zp[2]:10 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ] 20,002: zp[2]:27 [ plot::$0 ] 20,002: zp[1]:31 [ plot::$1 ] 20,002: zp[1]:32 [ plot::$2 ] 20,002: zp[2]:37 [ plot::$7 ] 20,002: zp[2]:39 [ plot::$8 ] 20,002: zp[2]:41 [ plot::$4 ] 20,002: zp[1]:45 [ plot::$5 ] 20,002: zp[1]:46 [ plot::$6 ] 15,001.5: zp[2]:35 [ plot::$3 ] 10,554.36: zp[2]:8 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ] 10,001: zp[2]:43 [ plot::location#3 ] 6,667.33: zp[2]:29 [ plot::location#1 ] 4,000.4: zp[2]:33 [ plot::location#2 ]
|
||||
Uplift Scope [circle] 4,691.5: zp[2]:6 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 ] 2,363.47: zp[2]:2 [ circle::x1#10 circle::x1#1 ] 2,002: zp[2]:17 [ circle::$5 ] 2,002: zp[2]:19 [ circle::$6 ] 2,002: zp[2]:21 [ circle::$7 ] 2,002: zp[2]:23 [ circle::$9 ] 2,002: zp[2]:25 [ circle::$10 ] 1,691.43: zp[2]:4 [ circle::y#13 circle::y#10 circle::y#1 ]
|
||||
Uplift Scope [fill] 3,471.33: zp[2]:15 [ fill::addr#2 fill::addr#0 fill::addr#1 ] 220.4: zp[2]:47 [ fill::end#0 ] 166.83: zp[1]:14 [ fill::val#4 ] 101: zp[2]:12 [ fill::size#2 ]
|
||||
Uplift Scope [main]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [plot] best 6419 combination zp[2]:10 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ] zp[2]:8 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ] zp[2]:27 [ plot::$0 ] reg byte a [ plot::$1 ] reg byte a [ plot::$2 ] zp[2]:37 [ plot::$7 ] zp[2]:39 [ plot::$8 ] zp[2]:41 [ plot::$4 ] reg byte a [ plot::$5 ] reg byte a [ plot::$6 ] zp[2]:35 [ plot::$3 ] zp[2]:43 [ plot::location#3 ] zp[2]:29 [ plot::location#1 ] zp[2]:33 [ plot::location#2 ]
|
||||
Uplifting [plot] best 6419 combination zp[2]:10 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ] zp[2]:27 [ plot::$0 ] reg byte a [ plot::$1 ] reg byte a [ plot::$2 ] zp[2]:37 [ plot::$7 ] zp[2]:39 [ plot::$8 ] zp[2]:41 [ plot::$4 ] reg byte a [ plot::$5 ] reg byte a [ plot::$6 ] zp[2]:35 [ plot::$3 ] zp[2]:8 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ] zp[2]:43 [ plot::location#3 ] zp[2]:29 [ plot::location#1 ] zp[2]:33 [ plot::location#2 ]
|
||||
Limited combination testing to 100 combinations of 256 possible.
|
||||
Uplifting [circle] best 6419 combination zp[2]:6 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 ] zp[2]:2 [ circle::x1#10 circle::x1#1 ] zp[2]:17 [ circle::$5 ] zp[2]:19 [ circle::$6 ] zp[2]:21 [ circle::$7 ] zp[2]:23 [ circle::$9 ] zp[2]:25 [ circle::$10 ] zp[2]:4 [ circle::y#13 circle::y#10 circle::y#1 ]
|
||||
Uplifting [fill] best 6403 combination zp[2]:15 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp[2]:47 [ fill::end#0 ] zp[2]:12 [ fill::size#2 ] reg byte x [ fill::val#4 ]
|
||||
Uplifting [fill] best 6403 combination zp[2]:15 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp[2]:47 [ fill::end#0 ] reg byte x [ fill::val#4 ] zp[2]:12 [ fill::size#2 ]
|
||||
Uplifting [main] best 6403 combination
|
||||
Uplifting [] best 6403 combination
|
||||
Coalescing zero page register [ zp[2]:6 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 ] ] with [ zp[2]:21 [ circle::$7 ] ] - score: 2
|
||||
@ -2509,11 +2507,11 @@ FINAL SYMBOL TABLE
|
||||
(const byte) VIC_RSEL = (byte) 8
|
||||
(const byte*) bitmask[] = { (byte) $80, (byte) $40, (byte) $20, (byte) $10, (byte) 8, (byte) 4, (byte) 2, (byte) 1 }
|
||||
(void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r)
|
||||
(signed word~) circle::$10 zp[2]:2 22.0
|
||||
(signed word~) circle::$5 zp[2]:8 22.0
|
||||
(signed word~) circle::$6 zp[2]:8 22.0
|
||||
(signed word~) circle::$7 zp[2]:2 22.0
|
||||
(signed word~) circle::$9 zp[2]:10 22.0
|
||||
(signed word~) circle::$10 zp[2]:2 2002.0
|
||||
(signed word~) circle::$5 zp[2]:8 2002.0
|
||||
(signed word~) circle::$6 zp[2]:8 2002.0
|
||||
(signed word~) circle::$7 zp[2]:2 2002.0
|
||||
(signed word~) circle::$9 zp[2]:10 2002.0
|
||||
(label) circle::@1
|
||||
(label) circle::@10
|
||||
(label) circle::@11
|
||||
@ -2529,21 +2527,21 @@ FINAL SYMBOL TABLE
|
||||
(label) circle::@9
|
||||
(label) circle::@return
|
||||
(signed word) circle::p
|
||||
(signed word) circle::p#1 p zp[2]:2 22.0
|
||||
(signed word) circle::p#10 p zp[2]:2 1.2692307692307692
|
||||
(signed word) circle::p#2 p zp[2]:2 22.0
|
||||
(signed word) circle::p#3 p zp[2]:2 6.285714285714286
|
||||
(signed word) circle::p#1 p zp[2]:2 2002.0
|
||||
(signed word) circle::p#10 p zp[2]:2 115.5
|
||||
(signed word) circle::p#2 p zp[2]:2 2002.0
|
||||
(signed word) circle::p#3 p zp[2]:2 572.0
|
||||
(signed word) circle::r
|
||||
(const signed word) circle::r#0 r = (signed byte) $32
|
||||
(signed word) circle::x1
|
||||
(signed word) circle::x1#1 x1 zp[2]:4 22.0
|
||||
(signed word) circle::x1#10 x1 zp[2]:4 3.9722222222222214
|
||||
(signed word) circle::x1#1 x1 zp[2]:4 2002.0
|
||||
(signed word) circle::x1#10 x1 zp[2]:4 361.4722222222221
|
||||
(signed word) circle::xc
|
||||
(const signed word) circle::xc#0 xc = (signed byte) $64
|
||||
(signed word) circle::y
|
||||
(signed word) circle::y#1 y zp[2]:6 6.6000000000000005
|
||||
(signed word) circle::y#10 y zp[2]:6 4.653846153846153
|
||||
(signed word) circle::y#13 y zp[2]:6 7.333333333333333
|
||||
(signed word) circle::y#1 y zp[2]:6 600.5999999999999
|
||||
(signed word) circle::y#10 y zp[2]:6 423.5
|
||||
(signed word) circle::y#13 y zp[2]:6 667.3333333333334
|
||||
(signed word) circle::yc
|
||||
(const signed word) circle::yc#0 yc = (signed byte) $64
|
||||
(void()) fill((byte*) fill::start , (signed word) fill::size , (byte) fill::val)
|
||||
@ -2551,55 +2549,55 @@ FINAL SYMBOL TABLE
|
||||
(label) fill::@2
|
||||
(label) fill::@return
|
||||
(byte*) fill::addr
|
||||
(byte*) fill::addr#0 addr zp[2]:6 2.0
|
||||
(byte*) fill::addr#1 addr zp[2]:6 22.0
|
||||
(byte*) fill::addr#2 addr zp[2]:6 15.333333333333332
|
||||
(byte*) fill::addr#0 addr zp[2]:6 101.0
|
||||
(byte*) fill::addr#1 addr zp[2]:6 2002.0
|
||||
(byte*) fill::addr#2 addr zp[2]:6 1368.3333333333335
|
||||
(byte*) fill::end
|
||||
(byte*) fill::end#0 end zp[2]:4 2.6
|
||||
(byte*) fill::end#0 end zp[2]:4 220.39999999999998
|
||||
(signed word) fill::size
|
||||
(signed word) fill::size#2 size zp[2]:4 2.0
|
||||
(signed word) fill::size#2 size zp[2]:4 101.0
|
||||
(byte*) fill::start
|
||||
(byte) fill::val
|
||||
(byte) fill::val#4 reg byte x 1.8333333333333333
|
||||
(byte) fill::val#4 reg byte x 166.83333333333334
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(void()) plot((signed word) plot::x , (signed word) plot::y)
|
||||
(signed word~) plot::$0 zp[2]:12 4.0
|
||||
(byte~) plot::$1 reg byte a 4.0
|
||||
(byte~) plot::$2 reg byte a 4.0
|
||||
(signed word~) plot::$3 zp[2]:10 3.0
|
||||
(signed word~) plot::$4 zp[2]:14 4.0
|
||||
(signed byte~) plot::$5 reg byte a 4.0
|
||||
(byte~) plot::$6 reg byte a 4.0
|
||||
(signed word~) plot::$7 zp[2]:14 4.0
|
||||
(signed word~) plot::$8 zp[2]:14 4.0
|
||||
(signed word~) plot::$0 zp[2]:12 20002.0
|
||||
(byte~) plot::$1 reg byte a 20002.0
|
||||
(byte~) plot::$2 reg byte a 20002.0
|
||||
(signed word~) plot::$3 zp[2]:10 15001.5
|
||||
(signed word~) plot::$4 zp[2]:14 20002.0
|
||||
(signed byte~) plot::$5 reg byte a 20002.0
|
||||
(byte~) plot::$6 reg byte a 20002.0
|
||||
(signed word~) plot::$7 zp[2]:14 20002.0
|
||||
(signed word~) plot::$8 zp[2]:14 20002.0
|
||||
(label) plot::@return
|
||||
(byte*) plot::location
|
||||
(byte*) plot::location#1 location zp[2]:12 1.3333333333333333
|
||||
(byte*) plot::location#2 location zp[2]:12 0.8
|
||||
(byte*) plot::location#3 location zp[2]:12 2.0
|
||||
(byte*) plot::location#1 location zp[2]:12 6667.333333333333
|
||||
(byte*) plot::location#2 location zp[2]:12 4000.4
|
||||
(byte*) plot::location#3 location zp[2]:12 10001.0
|
||||
(signed word) plot::x
|
||||
(signed word) plot::x#0 x zp[2]:8 11.0
|
||||
(signed word) plot::x#1 x zp[2]:8 11.0
|
||||
(signed word) plot::x#2 x zp[2]:8 11.0
|
||||
(signed word) plot::x#3 x zp[2]:8 11.0
|
||||
(signed word) plot::x#4 x zp[2]:8 11.0
|
||||
(signed word) plot::x#5 x zp[2]:8 11.0
|
||||
(signed word) plot::x#6 x zp[2]:8 11.0
|
||||
(signed word) plot::x#7 x zp[2]:8 11.0
|
||||
(signed word) plot::x#8 x zp[2]:8 8.363636363636363
|
||||
(signed word) plot::x#0 x zp[2]:8 1001.0
|
||||
(signed word) plot::x#1 x zp[2]:8 1001.0
|
||||
(signed word) plot::x#2 x zp[2]:8 1001.0
|
||||
(signed word) plot::x#3 x zp[2]:8 1001.0
|
||||
(signed word) plot::x#4 x zp[2]:8 1001.0
|
||||
(signed word) plot::x#5 x zp[2]:8 1001.0
|
||||
(signed word) plot::x#6 x zp[2]:8 1001.0
|
||||
(signed word) plot::x#7 x zp[2]:8 1001.0
|
||||
(signed word) plot::x#8 x zp[2]:8 2546.363636363636
|
||||
(signed word) plot::y
|
||||
(signed word) plot::y#0 y zp[2]:10 22.0
|
||||
(signed word) plot::y#1 y zp[2]:10 22.0
|
||||
(signed word) plot::y#2 y zp[2]:10 22.0
|
||||
(signed word) plot::y#3 y zp[2]:10 22.0
|
||||
(signed word) plot::y#4 y zp[2]:10 22.0
|
||||
(signed word) plot::y#5 y zp[2]:10 22.0
|
||||
(signed word) plot::y#6 y zp[2]:10 22.0
|
||||
(signed word) plot::y#7 y zp[2]:10 22.0
|
||||
(signed word) plot::y#8 y zp[2]:10 15.333333333333336
|
||||
(signed word) plot::y#0 y zp[2]:10 2002.0
|
||||
(signed word) plot::y#1 y zp[2]:10 2002.0
|
||||
(signed word) plot::y#2 y zp[2]:10 2002.0
|
||||
(signed word) plot::y#3 y zp[2]:10 2002.0
|
||||
(signed word) plot::y#4 y zp[2]:10 2002.0
|
||||
(signed word) plot::y#5 y zp[2]:10 2002.0
|
||||
(signed word) plot::y#6 y zp[2]:10 2002.0
|
||||
(signed word) plot::y#7 y zp[2]:10 2002.0
|
||||
(signed word) plot::y#8 y zp[2]:10 4668.333333333333
|
||||
|
||||
zp[2]:2 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 ]
|
||||
zp[2]:4 [ fill::size#2 fill::end#0 circle::x1#10 circle::x1#1 ]
|
||||
|
@ -12,11 +12,11 @@
|
||||
(const byte) VIC_RSEL = (byte) 8
|
||||
(const byte*) bitmask[] = { (byte) $80, (byte) $40, (byte) $20, (byte) $10, (byte) 8, (byte) 4, (byte) 2, (byte) 1 }
|
||||
(void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r)
|
||||
(signed word~) circle::$10 zp[2]:2 22.0
|
||||
(signed word~) circle::$5 zp[2]:8 22.0
|
||||
(signed word~) circle::$6 zp[2]:8 22.0
|
||||
(signed word~) circle::$7 zp[2]:2 22.0
|
||||
(signed word~) circle::$9 zp[2]:10 22.0
|
||||
(signed word~) circle::$10 zp[2]:2 2002.0
|
||||
(signed word~) circle::$5 zp[2]:8 2002.0
|
||||
(signed word~) circle::$6 zp[2]:8 2002.0
|
||||
(signed word~) circle::$7 zp[2]:2 2002.0
|
||||
(signed word~) circle::$9 zp[2]:10 2002.0
|
||||
(label) circle::@1
|
||||
(label) circle::@10
|
||||
(label) circle::@11
|
||||
@ -32,21 +32,21 @@
|
||||
(label) circle::@9
|
||||
(label) circle::@return
|
||||
(signed word) circle::p
|
||||
(signed word) circle::p#1 p zp[2]:2 22.0
|
||||
(signed word) circle::p#10 p zp[2]:2 1.2692307692307692
|
||||
(signed word) circle::p#2 p zp[2]:2 22.0
|
||||
(signed word) circle::p#3 p zp[2]:2 6.285714285714286
|
||||
(signed word) circle::p#1 p zp[2]:2 2002.0
|
||||
(signed word) circle::p#10 p zp[2]:2 115.5
|
||||
(signed word) circle::p#2 p zp[2]:2 2002.0
|
||||
(signed word) circle::p#3 p zp[2]:2 572.0
|
||||
(signed word) circle::r
|
||||
(const signed word) circle::r#0 r = (signed byte) $32
|
||||
(signed word) circle::x1
|
||||
(signed word) circle::x1#1 x1 zp[2]:4 22.0
|
||||
(signed word) circle::x1#10 x1 zp[2]:4 3.9722222222222214
|
||||
(signed word) circle::x1#1 x1 zp[2]:4 2002.0
|
||||
(signed word) circle::x1#10 x1 zp[2]:4 361.4722222222221
|
||||
(signed word) circle::xc
|
||||
(const signed word) circle::xc#0 xc = (signed byte) $64
|
||||
(signed word) circle::y
|
||||
(signed word) circle::y#1 y zp[2]:6 6.6000000000000005
|
||||
(signed word) circle::y#10 y zp[2]:6 4.653846153846153
|
||||
(signed word) circle::y#13 y zp[2]:6 7.333333333333333
|
||||
(signed word) circle::y#1 y zp[2]:6 600.5999999999999
|
||||
(signed word) circle::y#10 y zp[2]:6 423.5
|
||||
(signed word) circle::y#13 y zp[2]:6 667.3333333333334
|
||||
(signed word) circle::yc
|
||||
(const signed word) circle::yc#0 yc = (signed byte) $64
|
||||
(void()) fill((byte*) fill::start , (signed word) fill::size , (byte) fill::val)
|
||||
@ -54,55 +54,55 @@
|
||||
(label) fill::@2
|
||||
(label) fill::@return
|
||||
(byte*) fill::addr
|
||||
(byte*) fill::addr#0 addr zp[2]:6 2.0
|
||||
(byte*) fill::addr#1 addr zp[2]:6 22.0
|
||||
(byte*) fill::addr#2 addr zp[2]:6 15.333333333333332
|
||||
(byte*) fill::addr#0 addr zp[2]:6 101.0
|
||||
(byte*) fill::addr#1 addr zp[2]:6 2002.0
|
||||
(byte*) fill::addr#2 addr zp[2]:6 1368.3333333333335
|
||||
(byte*) fill::end
|
||||
(byte*) fill::end#0 end zp[2]:4 2.6
|
||||
(byte*) fill::end#0 end zp[2]:4 220.39999999999998
|
||||
(signed word) fill::size
|
||||
(signed word) fill::size#2 size zp[2]:4 2.0
|
||||
(signed word) fill::size#2 size zp[2]:4 101.0
|
||||
(byte*) fill::start
|
||||
(byte) fill::val
|
||||
(byte) fill::val#4 reg byte x 1.8333333333333333
|
||||
(byte) fill::val#4 reg byte x 166.83333333333334
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(void()) plot((signed word) plot::x , (signed word) plot::y)
|
||||
(signed word~) plot::$0 zp[2]:12 4.0
|
||||
(byte~) plot::$1 reg byte a 4.0
|
||||
(byte~) plot::$2 reg byte a 4.0
|
||||
(signed word~) plot::$3 zp[2]:10 3.0
|
||||
(signed word~) plot::$4 zp[2]:14 4.0
|
||||
(signed byte~) plot::$5 reg byte a 4.0
|
||||
(byte~) plot::$6 reg byte a 4.0
|
||||
(signed word~) plot::$7 zp[2]:14 4.0
|
||||
(signed word~) plot::$8 zp[2]:14 4.0
|
||||
(signed word~) plot::$0 zp[2]:12 20002.0
|
||||
(byte~) plot::$1 reg byte a 20002.0
|
||||
(byte~) plot::$2 reg byte a 20002.0
|
||||
(signed word~) plot::$3 zp[2]:10 15001.5
|
||||
(signed word~) plot::$4 zp[2]:14 20002.0
|
||||
(signed byte~) plot::$5 reg byte a 20002.0
|
||||
(byte~) plot::$6 reg byte a 20002.0
|
||||
(signed word~) plot::$7 zp[2]:14 20002.0
|
||||
(signed word~) plot::$8 zp[2]:14 20002.0
|
||||
(label) plot::@return
|
||||
(byte*) plot::location
|
||||
(byte*) plot::location#1 location zp[2]:12 1.3333333333333333
|
||||
(byte*) plot::location#2 location zp[2]:12 0.8
|
||||
(byte*) plot::location#3 location zp[2]:12 2.0
|
||||
(byte*) plot::location#1 location zp[2]:12 6667.333333333333
|
||||
(byte*) plot::location#2 location zp[2]:12 4000.4
|
||||
(byte*) plot::location#3 location zp[2]:12 10001.0
|
||||
(signed word) plot::x
|
||||
(signed word) plot::x#0 x zp[2]:8 11.0
|
||||
(signed word) plot::x#1 x zp[2]:8 11.0
|
||||
(signed word) plot::x#2 x zp[2]:8 11.0
|
||||
(signed word) plot::x#3 x zp[2]:8 11.0
|
||||
(signed word) plot::x#4 x zp[2]:8 11.0
|
||||
(signed word) plot::x#5 x zp[2]:8 11.0
|
||||
(signed word) plot::x#6 x zp[2]:8 11.0
|
||||
(signed word) plot::x#7 x zp[2]:8 11.0
|
||||
(signed word) plot::x#8 x zp[2]:8 8.363636363636363
|
||||
(signed word) plot::x#0 x zp[2]:8 1001.0
|
||||
(signed word) plot::x#1 x zp[2]:8 1001.0
|
||||
(signed word) plot::x#2 x zp[2]:8 1001.0
|
||||
(signed word) plot::x#3 x zp[2]:8 1001.0
|
||||
(signed word) plot::x#4 x zp[2]:8 1001.0
|
||||
(signed word) plot::x#5 x zp[2]:8 1001.0
|
||||
(signed word) plot::x#6 x zp[2]:8 1001.0
|
||||
(signed word) plot::x#7 x zp[2]:8 1001.0
|
||||
(signed word) plot::x#8 x zp[2]:8 2546.363636363636
|
||||
(signed word) plot::y
|
||||
(signed word) plot::y#0 y zp[2]:10 22.0
|
||||
(signed word) plot::y#1 y zp[2]:10 22.0
|
||||
(signed word) plot::y#2 y zp[2]:10 22.0
|
||||
(signed word) plot::y#3 y zp[2]:10 22.0
|
||||
(signed word) plot::y#4 y zp[2]:10 22.0
|
||||
(signed word) plot::y#5 y zp[2]:10 22.0
|
||||
(signed word) plot::y#6 y zp[2]:10 22.0
|
||||
(signed word) plot::y#7 y zp[2]:10 22.0
|
||||
(signed word) plot::y#8 y zp[2]:10 15.333333333333336
|
||||
(signed word) plot::y#0 y zp[2]:10 2002.0
|
||||
(signed word) plot::y#1 y zp[2]:10 2002.0
|
||||
(signed word) plot::y#2 y zp[2]:10 2002.0
|
||||
(signed word) plot::y#3 y zp[2]:10 2002.0
|
||||
(signed word) plot::y#4 y zp[2]:10 2002.0
|
||||
(signed word) plot::y#5 y zp[2]:10 2002.0
|
||||
(signed word) plot::y#6 y zp[2]:10 2002.0
|
||||
(signed word) plot::y#7 y zp[2]:10 2002.0
|
||||
(signed word) plot::y#8 y zp[2]:10 4668.333333333333
|
||||
|
||||
zp[2]:2 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 ]
|
||||
zp[2]:4 [ fill::size#2 fill::end#0 circle::x1#10 circle::x1#1 ]
|
||||
|
@ -35,67 +35,67 @@ main: {
|
||||
sta.z next
|
||||
__b1:
|
||||
// bitmap_line(0,next,0,100)
|
||||
ldx.z next
|
||||
lda.z next
|
||||
jsr bitmap_line
|
||||
// next++;
|
||||
inc.z next
|
||||
jmp __b1
|
||||
}
|
||||
// Draw a line on the bitmap
|
||||
// bitmap_line(byte register(X) x1)
|
||||
// bitmap_line(byte register(A) x1)
|
||||
bitmap_line: {
|
||||
.label x0 = 0
|
||||
.label y0 = 0
|
||||
.label y1 = $64
|
||||
// if(x0<x1)
|
||||
cpx #x0
|
||||
cmp #x0
|
||||
beq !+
|
||||
bcs __b1
|
||||
!:
|
||||
// xd = x0-x1
|
||||
txa
|
||||
tax
|
||||
// if(yd<xd)
|
||||
cmp #y1
|
||||
cpx #y1
|
||||
beq !+
|
||||
bcs __b4
|
||||
!:
|
||||
// bitmap_line_ydxd(y0, x0, y1, yd, xd)
|
||||
sta.z bitmap_line_ydxd.xd
|
||||
stx.z bitmap_line_ydxd.xd
|
||||
jsr bitmap_line_ydxd
|
||||
// }
|
||||
rts
|
||||
__b4:
|
||||
// bitmap_line_xdyd(x1, y1, x0, xd, yd)
|
||||
stx.z bitmap_line_xdyd.x
|
||||
sta.z bitmap_line_xdyd.xd
|
||||
sta.z bitmap_line_xdyd.x
|
||||
stx.z bitmap_line_xdyd.xd
|
||||
jsr bitmap_line_xdyd
|
||||
rts
|
||||
__b1:
|
||||
// xd = x1-x0
|
||||
txa
|
||||
tax
|
||||
// if(yd<xd)
|
||||
cmp #y1
|
||||
cpx #y1
|
||||
beq !+
|
||||
bcs __b7
|
||||
!:
|
||||
// bitmap_line_ydxi(y0, x0, y1, yd, xd)
|
||||
sta.z bitmap_line_ydxi.xd
|
||||
stx.z bitmap_line_ydxi.xd
|
||||
jsr bitmap_line_ydxi
|
||||
rts
|
||||
__b7:
|
||||
// bitmap_line_xdyi(x0, y0, x1, xd, yd)
|
||||
stx.z bitmap_line_xdyi.x1
|
||||
sta.z bitmap_line_xdyi.xd
|
||||
sta.z bitmap_line_xdyi.x1
|
||||
stx.z bitmap_line_xdyi.xd
|
||||
jsr bitmap_line_xdyi
|
||||
rts
|
||||
}
|
||||
// bitmap_line_xdyi(byte zp(3) x, byte zp(4) y, byte zp($b) x1, byte zp(6) xd)
|
||||
// bitmap_line_xdyi(byte zp($d) x, byte zp($17) y, byte zp($11) x1, byte zp($12) xd)
|
||||
bitmap_line_xdyi: {
|
||||
.label x1 = $b
|
||||
.label xd = 6
|
||||
.label x = 3
|
||||
.label e = 5
|
||||
.label y = 4
|
||||
.label x1 = $11
|
||||
.label xd = $12
|
||||
.label x = $d
|
||||
.label e = 3
|
||||
.label y = $17
|
||||
lda #bitmap_line.y1>>1
|
||||
sta.z e
|
||||
lda #bitmap_line.y0
|
||||
@ -136,9 +136,9 @@ bitmap_line_xdyi: {
|
||||
}
|
||||
// bitmap_plot(byte register(X) x, byte register(Y) y)
|
||||
bitmap_plot: {
|
||||
.label plotter_x = 7
|
||||
.label plotter_y = 9
|
||||
.label plotter = 7
|
||||
.label plotter_x = $13
|
||||
.label plotter_y = $15
|
||||
.label plotter = $13
|
||||
// plotter_x = { bitmap_plot_xhi[x], bitmap_plot_xlo[x] }
|
||||
lda bitmap_plot_xhi,x
|
||||
sta.z plotter_x+1
|
||||
@ -166,12 +166,12 @@ bitmap_plot: {
|
||||
// }
|
||||
rts
|
||||
}
|
||||
// bitmap_line_ydxi(byte zp(4) y, byte zp(3) x, byte zp(6) xd)
|
||||
// bitmap_line_ydxi(byte zp(5) y, byte zp(4) x, byte zp($10) xd)
|
||||
bitmap_line_ydxi: {
|
||||
.label xd = 6
|
||||
.label e = 5
|
||||
.label y = 4
|
||||
.label x = 3
|
||||
.label xd = $10
|
||||
.label e = 6
|
||||
.label y = 5
|
||||
.label x = 4
|
||||
// e = xd>>1
|
||||
lda.z xd
|
||||
lsr
|
||||
@ -210,12 +210,12 @@ bitmap_line_ydxi: {
|
||||
// }
|
||||
rts
|
||||
}
|
||||
// bitmap_line_xdyd(byte zp(3) x, byte zp(4) y, byte zp(6) xd)
|
||||
// bitmap_line_xdyd(byte zp(7) x, byte zp(8) y, byte zp($f) xd)
|
||||
bitmap_line_xdyd: {
|
||||
.label x = 3
|
||||
.label xd = 6
|
||||
.label e = 5
|
||||
.label y = 4
|
||||
.label x = 7
|
||||
.label xd = $f
|
||||
.label e = 9
|
||||
.label y = 8
|
||||
lda #bitmap_line.y1>>1
|
||||
sta.z e
|
||||
lda #bitmap_line.y1
|
||||
@ -250,12 +250,12 @@ bitmap_line_xdyd: {
|
||||
// }
|
||||
rts
|
||||
}
|
||||
// bitmap_line_ydxd(byte zp(4) y, byte zp(3) x, byte zp(6) xd)
|
||||
// bitmap_line_ydxd(byte zp($b) y, byte zp($a) x, byte zp($e) xd)
|
||||
bitmap_line_ydxd: {
|
||||
.label xd = 6
|
||||
.label e = 5
|
||||
.label y = 4
|
||||
.label x = 3
|
||||
.label xd = $e
|
||||
.label e = $c
|
||||
.label y = $b
|
||||
.label x = $a
|
||||
// e = xd>>1
|
||||
lda.z xd
|
||||
lsr
|
||||
@ -295,7 +295,7 @@ bitmap_line_ydxd: {
|
||||
rts
|
||||
}
|
||||
init_screen: {
|
||||
.label c = 7
|
||||
.label c = $13
|
||||
lda #<SCREEN
|
||||
sta.z c
|
||||
lda #>SCREEN
|
||||
@ -324,8 +324,8 @@ init_screen: {
|
||||
}
|
||||
// Clear all graphics on the bitmap
|
||||
bitmap_clear: {
|
||||
.label bitmap = 7
|
||||
.label y = 6
|
||||
.label bitmap = $13
|
||||
.label y = $d
|
||||
// (byte*) { bitmap_plot_xhi[0], bitmap_plot_xlo[0] }
|
||||
lda bitmap_plot_xlo
|
||||
sta.z bitmap
|
||||
@ -359,8 +359,8 @@ bitmap_clear: {
|
||||
}
|
||||
// Initialize the bitmap plotter tables for a specific bitmap
|
||||
bitmap_init: {
|
||||
.label __10 = $b
|
||||
.label yoffs = 7
|
||||
.label __10 = $17
|
||||
.label yoffs = $13
|
||||
ldy #$80
|
||||
ldx #0
|
||||
__b1:
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -16,23 +16,23 @@
|
||||
(label) bitmap_clear::@3
|
||||
(label) bitmap_clear::@return
|
||||
(byte*) bitmap_clear::bitmap
|
||||
(word) bitmap_clear::bitmap#0 bitmap zp[2]:7 2.0
|
||||
(byte*) bitmap_clear::bitmap#1 bitmap zp[2]:7 42.599999999999994
|
||||
(byte*) bitmap_clear::bitmap#2 bitmap zp[2]:7 157.0
|
||||
(byte*) bitmap_clear::bitmap#3 bitmap zp[2]:7 24.0
|
||||
(byte*) bitmap_clear::bitmap#5 bitmap zp[2]:7 4.0
|
||||
(word) bitmap_clear::bitmap#0 bitmap zp[2]:19 101.0
|
||||
(byte*) bitmap_clear::bitmap#1 bitmap zp[2]:19 4200.6
|
||||
(byte*) bitmap_clear::bitmap#2 bitmap zp[2]:19 15502.0
|
||||
(byte*) bitmap_clear::bitmap#3 bitmap zp[2]:19 2103.0
|
||||
(byte*) bitmap_clear::bitmap#5 bitmap zp[2]:19 202.0
|
||||
(byte) bitmap_clear::x
|
||||
(byte) bitmap_clear::x#1 reg byte x 151.5
|
||||
(byte) bitmap_clear::x#2 reg byte x 67.33333333333333
|
||||
(byte) bitmap_clear::x#1 reg byte x 15001.5
|
||||
(byte) bitmap_clear::x#2 reg byte x 6667.333333333333
|
||||
(byte) bitmap_clear::y
|
||||
(byte) bitmap_clear::y#1 y zp[1]:6 16.5
|
||||
(byte) bitmap_clear::y#4 y zp[1]:6 3.6666666666666665
|
||||
(byte) bitmap_clear::y#1 y zp[1]:13 1501.5
|
||||
(byte) bitmap_clear::y#4 y zp[1]:13 333.6666666666667
|
||||
(void()) bitmap_init((byte*) bitmap_init::bitmap)
|
||||
(byte~) bitmap_init::$0 reg byte a 22.0
|
||||
(byte~) bitmap_init::$10 zp[1]:11 5.5
|
||||
(byte~) bitmap_init::$7 reg byte a 22.0
|
||||
(byte~) bitmap_init::$8 reg byte a 22.0
|
||||
(byte~) bitmap_init::$9 reg byte a 22.0
|
||||
(byte~) bitmap_init::$0 reg byte a 2002.0
|
||||
(byte~) bitmap_init::$10 zp[1]:23 500.5
|
||||
(byte~) bitmap_init::$7 reg byte a 2002.0
|
||||
(byte~) bitmap_init::$8 reg byte a 2002.0
|
||||
(byte~) bitmap_init::$9 reg byte a 2002.0
|
||||
(label) bitmap_init::@1
|
||||
(label) bitmap_init::@2
|
||||
(label) bitmap_init::@3
|
||||
@ -42,19 +42,19 @@
|
||||
(label) bitmap_init::@return
|
||||
(byte*) bitmap_init::bitmap
|
||||
(byte) bitmap_init::bits
|
||||
(byte) bitmap_init::bits#1 reg byte y 11.0
|
||||
(byte) bitmap_init::bits#3 reg byte y 6.6000000000000005
|
||||
(byte) bitmap_init::bits#4 reg byte y 7.333333333333333
|
||||
(byte) bitmap_init::bits#1 reg byte y 1001.0
|
||||
(byte) bitmap_init::bits#3 reg byte y 600.5999999999999
|
||||
(byte) bitmap_init::bits#4 reg byte y 667.3333333333334
|
||||
(byte) bitmap_init::x
|
||||
(byte) bitmap_init::x#1 reg byte x 16.5
|
||||
(byte) bitmap_init::x#2 reg byte x 7.333333333333334
|
||||
(byte) bitmap_init::x#1 reg byte x 1501.5
|
||||
(byte) bitmap_init::x#2 reg byte x 667.3333333333333
|
||||
(byte) bitmap_init::y
|
||||
(byte) bitmap_init::y#1 reg byte x 16.5
|
||||
(byte) bitmap_init::y#2 reg byte x 5.5
|
||||
(byte) bitmap_init::y#1 reg byte x 1501.5
|
||||
(byte) bitmap_init::y#2 reg byte x 500.5
|
||||
(byte*) bitmap_init::yoffs
|
||||
(byte*) bitmap_init::yoffs#1 yoffs zp[2]:7 22.0
|
||||
(byte*) bitmap_init::yoffs#2 yoffs zp[2]:7 6.875
|
||||
(byte*) bitmap_init::yoffs#4 yoffs zp[2]:7 11.0
|
||||
(byte*) bitmap_init::yoffs#1 yoffs zp[2]:19 2002.0
|
||||
(byte*) bitmap_init::yoffs#2 yoffs zp[2]:19 625.625
|
||||
(byte*) bitmap_init::yoffs#4 yoffs zp[2]:19 1001.0
|
||||
(void()) bitmap_line((byte) bitmap_line::x0 , (byte) bitmap_line::x1 , (byte) bitmap_line::y0 , (byte) bitmap_line::y1)
|
||||
(label) bitmap_line::@1
|
||||
(label) bitmap_line::@2
|
||||
@ -68,10 +68,10 @@
|
||||
(byte) bitmap_line::x0
|
||||
(const byte) bitmap_line::x0#0 x0 = (byte) 0
|
||||
(byte) bitmap_line::x1
|
||||
(byte) bitmap_line::x1#0 reg byte x 3.5000000000000004
|
||||
(byte) bitmap_line::x1#0 reg byte a 851.0000000000001
|
||||
(byte) bitmap_line::xd
|
||||
(byte) bitmap_line::xd#1 reg byte a 2.6666666666666665
|
||||
(byte) bitmap_line::xd#2 reg byte a 2.6666666666666665
|
||||
(byte) bitmap_line::xd#1 reg byte x 1334.6666666666667
|
||||
(byte) bitmap_line::xd#2 reg byte x 1334.6666666666667
|
||||
(byte) bitmap_line::y0
|
||||
(const byte) bitmap_line::y0#0 y0 = (byte) 0
|
||||
(byte) bitmap_line::y1
|
||||
@ -84,45 +84,45 @@
|
||||
(label) bitmap_line_xdyd::@4
|
||||
(label) bitmap_line_xdyd::@return
|
||||
(byte) bitmap_line_xdyd::e
|
||||
(byte) bitmap_line_xdyd::e#1 e zp[1]:5 134.66666666666666
|
||||
(byte) bitmap_line_xdyd::e#2 e zp[1]:5 202.0
|
||||
(byte) bitmap_line_xdyd::e#3 e zp[1]:5 40.4
|
||||
(byte) bitmap_line_xdyd::e#6 e zp[1]:5 151.5
|
||||
(byte) bitmap_line_xdyd::e#1 e zp[1]:9 1333334.6666666667
|
||||
(byte) bitmap_line_xdyd::e#2 e zp[1]:9 2000002.0
|
||||
(byte) bitmap_line_xdyd::e#3 e zp[1]:9 400000.4
|
||||
(byte) bitmap_line_xdyd::e#6 e zp[1]:9 1500001.5
|
||||
(byte) bitmap_line_xdyd::x
|
||||
(byte) bitmap_line_xdyd::x#0 x zp[1]:3 1.3333333333333333
|
||||
(byte) bitmap_line_xdyd::x#2 x zp[1]:3 43.285714285714285
|
||||
(byte) bitmap_line_xdyd::x#3 x zp[1]:3 76.25
|
||||
(byte) bitmap_line_xdyd::x#0 x zp[1]:7 3667.333333333333
|
||||
(byte) bitmap_line_xdyd::x#2 x zp[1]:7 428571.85714285716
|
||||
(byte) bitmap_line_xdyd::x#3 x zp[1]:7 752501.0
|
||||
(byte) bitmap_line_xdyd::x1
|
||||
(byte) bitmap_line_xdyd::xd
|
||||
(byte) bitmap_line_xdyd::xd#0 xd zp[1]:6 15.692307692307693
|
||||
(byte) bitmap_line_xdyd::xd#0 xd zp[1]:15 153923.3076923077
|
||||
(byte) bitmap_line_xdyd::y
|
||||
(byte) bitmap_line_xdyd::y#2 y zp[1]:4 101.0
|
||||
(byte) bitmap_line_xdyd::y#3 y zp[1]:4 57.714285714285715
|
||||
(byte) bitmap_line_xdyd::y#6 y zp[1]:4 151.5
|
||||
(byte) bitmap_line_xdyd::y#2 y zp[1]:8 1000001.0
|
||||
(byte) bitmap_line_xdyd::y#3 y zp[1]:8 571429.1428571428
|
||||
(byte) bitmap_line_xdyd::y#6 y zp[1]:8 1500001.5
|
||||
(byte) bitmap_line_xdyd::yd
|
||||
(void()) bitmap_line_xdyi((byte) bitmap_line_xdyi::x , (byte) bitmap_line_xdyi::y , (byte) bitmap_line_xdyi::x1 , (byte) bitmap_line_xdyi::xd , (byte) bitmap_line_xdyi::yd)
|
||||
(byte~) bitmap_line_xdyi::$6 reg byte x 202.0
|
||||
(byte~) bitmap_line_xdyi::$6 reg byte x 2000002.0
|
||||
(label) bitmap_line_xdyi::@1
|
||||
(label) bitmap_line_xdyi::@2
|
||||
(label) bitmap_line_xdyi::@3
|
||||
(label) bitmap_line_xdyi::@4
|
||||
(label) bitmap_line_xdyi::@return
|
||||
(byte) bitmap_line_xdyi::e
|
||||
(byte) bitmap_line_xdyi::e#1 e zp[1]:5 134.66666666666666
|
||||
(byte) bitmap_line_xdyi::e#2 e zp[1]:5 202.0
|
||||
(byte) bitmap_line_xdyi::e#3 e zp[1]:5 40.4
|
||||
(byte) bitmap_line_xdyi::e#6 e zp[1]:5 101.0
|
||||
(byte) bitmap_line_xdyi::e#1 e zp[1]:3 1333334.6666666667
|
||||
(byte) bitmap_line_xdyi::e#2 e zp[1]:3 2000002.0
|
||||
(byte) bitmap_line_xdyi::e#3 e zp[1]:3 400000.4
|
||||
(byte) bitmap_line_xdyi::e#6 e zp[1]:3 1000001.0
|
||||
(byte) bitmap_line_xdyi::x
|
||||
(byte) bitmap_line_xdyi::x#2 x zp[1]:3 37.875
|
||||
(byte) bitmap_line_xdyi::x#3 x zp[1]:3 75.75
|
||||
(byte) bitmap_line_xdyi::x#2 x zp[1]:13 375000.375
|
||||
(byte) bitmap_line_xdyi::x#3 x zp[1]:13 750000.75
|
||||
(byte) bitmap_line_xdyi::x1
|
||||
(byte) bitmap_line_xdyi::x1#1 x1 zp[1]:11 6.866666666666667
|
||||
(byte) bitmap_line_xdyi::x1#1 x1 zp[1]:17 66733.46666666667
|
||||
(byte) bitmap_line_xdyi::xd
|
||||
(byte) bitmap_line_xdyi::xd#1 xd zp[1]:6 14.571428571428573
|
||||
(byte) bitmap_line_xdyi::xd#1 xd zp[1]:18 142928.7857142857
|
||||
(byte) bitmap_line_xdyi::y
|
||||
(byte) bitmap_line_xdyi::y#2 y zp[1]:4 101.0
|
||||
(byte) bitmap_line_xdyi::y#3 y zp[1]:4 57.714285714285715
|
||||
(byte) bitmap_line_xdyi::y#6 y zp[1]:4 101.0
|
||||
(byte) bitmap_line_xdyi::y#2 y zp[1]:23 1000001.0
|
||||
(byte) bitmap_line_xdyi::y#3 y zp[1]:23 571429.1428571428
|
||||
(byte) bitmap_line_xdyi::y#6 y zp[1]:23 1000001.0
|
||||
(byte) bitmap_line_xdyi::yd
|
||||
(void()) bitmap_line_ydxd((byte) bitmap_line_ydxd::y , (byte) bitmap_line_ydxd::x , (byte) bitmap_line_ydxd::y1 , (byte) bitmap_line_ydxd::yd , (byte) bitmap_line_ydxd::xd)
|
||||
(label) bitmap_line_ydxd::@1
|
||||
@ -131,20 +131,20 @@
|
||||
(label) bitmap_line_ydxd::@4
|
||||
(label) bitmap_line_ydxd::@return
|
||||
(byte) bitmap_line_ydxd::e
|
||||
(byte) bitmap_line_ydxd::e#0 e zp[1]:5 4.0
|
||||
(byte) bitmap_line_ydxd::e#1 e zp[1]:5 134.66666666666666
|
||||
(byte) bitmap_line_ydxd::e#2 e zp[1]:5 202.0
|
||||
(byte) bitmap_line_ydxd::e#3 e zp[1]:5 40.8
|
||||
(byte) bitmap_line_ydxd::e#6 e zp[1]:5 151.5
|
||||
(byte) bitmap_line_ydxd::e#0 e zp[1]:12 20002.0
|
||||
(byte) bitmap_line_ydxd::e#1 e zp[1]:12 1333334.6666666667
|
||||
(byte) bitmap_line_ydxd::e#2 e zp[1]:12 2000002.0
|
||||
(byte) bitmap_line_ydxd::e#3 e zp[1]:12 402000.60000000003
|
||||
(byte) bitmap_line_ydxd::e#6 e zp[1]:12 1500001.5
|
||||
(byte) bitmap_line_ydxd::x
|
||||
(byte) bitmap_line_ydxd::x#2 x zp[1]:3 101.0
|
||||
(byte) bitmap_line_ydxd::x#3 x zp[1]:3 57.714285714285715
|
||||
(byte) bitmap_line_ydxd::x#6 x zp[1]:3 151.5
|
||||
(byte) bitmap_line_ydxd::x#2 x zp[1]:10 1000001.0
|
||||
(byte) bitmap_line_ydxd::x#3 x zp[1]:10 571429.1428571428
|
||||
(byte) bitmap_line_ydxd::x#6 x zp[1]:10 1500001.5
|
||||
(byte) bitmap_line_ydxd::xd
|
||||
(byte) bitmap_line_ydxd::xd#0 xd zp[1]:6 8.076923076923077
|
||||
(byte) bitmap_line_ydxd::xd#0 xd zp[1]:14 77769.46153846153
|
||||
(byte) bitmap_line_ydxd::y
|
||||
(byte) bitmap_line_ydxd::y#2 y zp[1]:4 75.75
|
||||
(byte) bitmap_line_ydxd::y#3 y zp[1]:4 43.285714285714285
|
||||
(byte) bitmap_line_ydxd::y#2 y zp[1]:11 750000.75
|
||||
(byte) bitmap_line_ydxd::y#3 y zp[1]:11 428571.85714285716
|
||||
(byte) bitmap_line_ydxd::y1
|
||||
(byte) bitmap_line_ydxd::yd
|
||||
(void()) bitmap_line_ydxi((byte) bitmap_line_ydxi::y , (byte) bitmap_line_ydxi::x , (byte) bitmap_line_ydxi::y1 , (byte) bitmap_line_ydxi::yd , (byte) bitmap_line_ydxi::xd)
|
||||
@ -154,43 +154,43 @@
|
||||
(label) bitmap_line_ydxi::@4
|
||||
(label) bitmap_line_ydxi::@return
|
||||
(byte) bitmap_line_ydxi::e
|
||||
(byte) bitmap_line_ydxi::e#0 e zp[1]:5 4.0
|
||||
(byte) bitmap_line_ydxi::e#1 e zp[1]:5 134.66666666666666
|
||||
(byte) bitmap_line_ydxi::e#2 e zp[1]:5 202.0
|
||||
(byte) bitmap_line_ydxi::e#3 e zp[1]:5 40.8
|
||||
(byte) bitmap_line_ydxi::e#6 e zp[1]:5 151.5
|
||||
(byte) bitmap_line_ydxi::e#0 e zp[1]:6 20002.0
|
||||
(byte) bitmap_line_ydxi::e#1 e zp[1]:6 1333334.6666666667
|
||||
(byte) bitmap_line_ydxi::e#2 e zp[1]:6 2000002.0
|
||||
(byte) bitmap_line_ydxi::e#3 e zp[1]:6 402000.60000000003
|
||||
(byte) bitmap_line_ydxi::e#6 e zp[1]:6 1500001.5
|
||||
(byte) bitmap_line_ydxi::x
|
||||
(byte) bitmap_line_ydxi::x#2 x zp[1]:3 101.0
|
||||
(byte) bitmap_line_ydxi::x#3 x zp[1]:3 57.714285714285715
|
||||
(byte) bitmap_line_ydxi::x#6 x zp[1]:3 151.5
|
||||
(byte) bitmap_line_ydxi::x#2 x zp[1]:4 1000001.0
|
||||
(byte) bitmap_line_ydxi::x#3 x zp[1]:4 571429.1428571428
|
||||
(byte) bitmap_line_ydxi::x#6 x zp[1]:4 1500001.5
|
||||
(byte) bitmap_line_ydxi::xd
|
||||
(byte) bitmap_line_ydxi::xd#1 xd zp[1]:6 8.076923076923077
|
||||
(byte) bitmap_line_ydxi::xd#1 xd zp[1]:16 77769.46153846153
|
||||
(byte) bitmap_line_ydxi::y
|
||||
(byte) bitmap_line_ydxi::y#2 y zp[1]:4 43.285714285714285
|
||||
(byte) bitmap_line_ydxi::y#3 y zp[1]:4 75.75
|
||||
(byte) bitmap_line_ydxi::y#2 y zp[1]:5 428571.85714285716
|
||||
(byte) bitmap_line_ydxi::y#3 y zp[1]:5 750000.75
|
||||
(byte) bitmap_line_ydxi::y1
|
||||
(byte) bitmap_line_ydxi::yd
|
||||
(void()) bitmap_plot((byte) bitmap_plot::x , (byte) bitmap_plot::y)
|
||||
(byte~) bitmap_plot::$1 reg byte a 4.0
|
||||
(byte~) bitmap_plot::$1 reg byte a 2.0000002E7
|
||||
(label) bitmap_plot::@return
|
||||
(byte*) bitmap_plot::plotter
|
||||
(word) bitmap_plot::plotter#0 plotter zp[2]:7 1.0
|
||||
(word) bitmap_plot::plotter#0 plotter zp[2]:19 5000000.5
|
||||
(word) bitmap_plot::plotter_x
|
||||
(word) bitmap_plot::plotter_x#0 plotter_x zp[2]:7 2.0
|
||||
(word) bitmap_plot::plotter_x#0 plotter_x zp[2]:19 1.0000001E7
|
||||
(word) bitmap_plot::plotter_y
|
||||
(word) bitmap_plot::plotter_y#0 plotter_y zp[2]:9 4.0
|
||||
(word) bitmap_plot::plotter_y#0 plotter_y zp[2]:21 2.0000002E7
|
||||
(byte) bitmap_plot::x
|
||||
(byte) bitmap_plot::x#0 reg byte x 101.0
|
||||
(byte) bitmap_plot::x#1 reg byte x 101.0
|
||||
(byte) bitmap_plot::x#2 reg byte x 101.0
|
||||
(byte) bitmap_plot::x#3 reg byte x 101.0
|
||||
(byte) bitmap_plot::x#4 reg byte x 102.5
|
||||
(byte) bitmap_plot::x#0 reg byte x 1000001.0
|
||||
(byte) bitmap_plot::x#1 reg byte x 1000001.0
|
||||
(byte) bitmap_plot::x#2 reg byte x 1000001.0
|
||||
(byte) bitmap_plot::x#3 reg byte x 1000001.0
|
||||
(byte) bitmap_plot::x#4 reg byte x 8500001.75
|
||||
(byte) bitmap_plot::y
|
||||
(byte) bitmap_plot::y#0 reg byte y 202.0
|
||||
(byte) bitmap_plot::y#1 reg byte y 202.0
|
||||
(byte) bitmap_plot::y#2 reg byte y 202.0
|
||||
(byte) bitmap_plot::y#3 reg byte y 202.0
|
||||
(byte) bitmap_plot::y#4 reg byte y 204.0
|
||||
(byte) bitmap_plot::y#0 reg byte y 2000002.0
|
||||
(byte) bitmap_plot::y#1 reg byte y 2000002.0
|
||||
(byte) bitmap_plot::y#2 reg byte y 2000002.0
|
||||
(byte) bitmap_plot::y#3 reg byte y 2000002.0
|
||||
(byte) bitmap_plot::y#4 reg byte y 1.2000003E7
|
||||
(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
|
||||
(const byte*) bitmap_plot_xhi[(number) $100] = { fill( $100, 0) }
|
||||
(const byte*) bitmap_plot_xlo[(number) $100] = { fill( $100, 0) }
|
||||
@ -201,37 +201,49 @@
|
||||
(label) init_screen::@2
|
||||
(label) init_screen::@return
|
||||
(byte*) init_screen::c
|
||||
(byte*) init_screen::c#1 c zp[2]:7 22.0
|
||||
(byte*) init_screen::c#2 c zp[2]:7 14.666666666666666
|
||||
(byte*) init_screen::c#1 c zp[2]:19 2002.0
|
||||
(byte*) init_screen::c#2 c zp[2]:19 1334.6666666666667
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@4
|
||||
(byte) next
|
||||
(byte) next#1 next zp[1]:2 22.0
|
||||
(byte) next#4 next zp[1]:2 11.0
|
||||
(byte) next#1 next zp[1]:2 202.0
|
||||
(byte) next#4 next zp[1]:2 101.0
|
||||
|
||||
zp[1]:2 [ next#4 next#1 ]
|
||||
zp[1]:3 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ]
|
||||
reg byte x [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ]
|
||||
reg byte y [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ]
|
||||
zp[1]:3 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ]
|
||||
zp[1]:4 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ]
|
||||
zp[1]:5 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ]
|
||||
zp[1]:4 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ]
|
||||
zp[1]:5 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 ]
|
||||
zp[1]:6 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ]
|
||||
zp[1]:7 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ]
|
||||
zp[1]:8 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ]
|
||||
zp[1]:9 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ]
|
||||
zp[1]:10 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ]
|
||||
zp[1]:11 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ]
|
||||
zp[1]:12 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ]
|
||||
zp[1]:13 [ bitmap_clear::y#4 bitmap_clear::y#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ]
|
||||
reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ]
|
||||
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
|
||||
reg byte y [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
||||
reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
reg byte x [ bitmap_line::x1#0 ]
|
||||
reg byte a [ bitmap_line::xd#2 ]
|
||||
reg byte a [ bitmap_line::xd#1 ]
|
||||
zp[1]:6 [ bitmap_line_xdyi::xd#1 bitmap_line_ydxi::xd#1 bitmap_line_xdyd::xd#0 bitmap_line_ydxd::xd#0 bitmap_clear::y#4 bitmap_clear::y#1 ]
|
||||
reg byte a [ bitmap_line::x1#0 ]
|
||||
reg byte x [ bitmap_line::xd#2 ]
|
||||
zp[1]:14 [ bitmap_line_ydxd::xd#0 ]
|
||||
zp[1]:15 [ bitmap_line_xdyd::xd#0 ]
|
||||
reg byte x [ bitmap_line::xd#1 ]
|
||||
zp[1]:16 [ bitmap_line_ydxi::xd#1 ]
|
||||
zp[1]:17 [ bitmap_line_xdyi::x1#1 ]
|
||||
zp[1]:18 [ bitmap_line_xdyi::xd#1 ]
|
||||
reg byte x [ bitmap_line_xdyi::$6 ]
|
||||
zp[2]:7 [ bitmap_plot::plotter_x#0 bitmap_plot::plotter#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 init_screen::c#2 init_screen::c#1 ]
|
||||
zp[2]:9 [ bitmap_plot::plotter_y#0 ]
|
||||
zp[2]:19 [ bitmap_plot::plotter_x#0 bitmap_plot::plotter#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 init_screen::c#2 init_screen::c#1 ]
|
||||
zp[2]:21 [ bitmap_plot::plotter_y#0 ]
|
||||
reg byte a [ bitmap_plot::$1 ]
|
||||
reg byte a [ bitmap_init::$0 ]
|
||||
zp[1]:11 [ bitmap_init::$10 bitmap_line_xdyi::x1#1 ]
|
||||
zp[1]:23 [ bitmap_init::$10 bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ]
|
||||
reg byte a [ bitmap_init::$7 ]
|
||||
reg byte a [ bitmap_init::$8 ]
|
||||
reg byte a [ bitmap_init::$9 ]
|
||||
|
@ -36,6 +36,10 @@ main: {
|
||||
sta.z next+1
|
||||
__b1:
|
||||
// bitmap_line(0,0,next,100)
|
||||
lda.z next
|
||||
sta.z bitmap_line.x2
|
||||
lda.z next+1
|
||||
sta.z bitmap_line.x2+1
|
||||
jsr bitmap_line
|
||||
// next++;
|
||||
inc.z next
|
||||
@ -55,20 +59,20 @@ main: {
|
||||
jmp __b1
|
||||
}
|
||||
// Draw a line on the bitmap using bresenhams algorithm
|
||||
// bitmap_line(word zp(2) x2)
|
||||
// bitmap_line(word zp($12) x2)
|
||||
bitmap_line: {
|
||||
.const x1 = 0
|
||||
.const y1 = 0
|
||||
.const y2 = $64
|
||||
.label dx = $10
|
||||
.label dy = 8
|
||||
.label sx = $12
|
||||
.label sy = 6
|
||||
.label dx = $14
|
||||
.label dy = $a
|
||||
.label sx = $16
|
||||
.label sy = 8
|
||||
.label e1 = 4
|
||||
.label e = $a
|
||||
.label y = $c
|
||||
.label x = $e
|
||||
.label x2 = 2
|
||||
.label e = $c
|
||||
.label y = $e
|
||||
.label x = $10
|
||||
.label x2 = $12
|
||||
// abs_u16(x2-x1)
|
||||
lda.z x2
|
||||
sta.z abs_u16.w
|
||||
@ -125,11 +129,15 @@ bitmap_line: {
|
||||
// if(dx > dy)
|
||||
lda.z dy+1
|
||||
cmp.z dx+1
|
||||
bcc __b2
|
||||
bcs !__b2+
|
||||
jmp __b2
|
||||
!__b2:
|
||||
bne !+
|
||||
lda.z dy
|
||||
cmp.z dx
|
||||
bcc __b2
|
||||
bcs !__b2+
|
||||
jmp __b2
|
||||
!__b2:
|
||||
!:
|
||||
// e = dx/2
|
||||
lda.z dx+1
|
||||
@ -150,6 +158,10 @@ bitmap_line: {
|
||||
// bitmap_plot(x,(byte)y)
|
||||
lda.z y
|
||||
tax
|
||||
lda.z x
|
||||
sta.z bitmap_plot.x
|
||||
lda.z x+1
|
||||
sta.z bitmap_plot.x+1
|
||||
jsr bitmap_plot
|
||||
// y += sy
|
||||
lda.z y
|
||||
@ -203,6 +215,10 @@ bitmap_line: {
|
||||
// bitmap_plot(x,(byte)y)
|
||||
lda.z y
|
||||
tax
|
||||
lda.z x
|
||||
sta.z bitmap_plot.x
|
||||
lda.z x+1
|
||||
sta.z bitmap_plot.x+1
|
||||
jsr bitmap_plot
|
||||
// }
|
||||
rts
|
||||
@ -226,6 +242,10 @@ bitmap_line: {
|
||||
// bitmap_plot(x,(byte)y)
|
||||
lda.z y
|
||||
tax
|
||||
lda.z x
|
||||
sta.z bitmap_plot.x
|
||||
lda.z x+1
|
||||
sta.z bitmap_plot.x+1
|
||||
jsr bitmap_plot
|
||||
// x += sx
|
||||
lda.z x
|
||||
@ -287,11 +307,11 @@ bitmap_line: {
|
||||
rts
|
||||
}
|
||||
// Plot a single dot in the bitmap
|
||||
// bitmap_plot(word zp($e) x, byte register(X) y)
|
||||
// bitmap_plot(word zp(6) x, byte register(X) y)
|
||||
bitmap_plot: {
|
||||
.label __1 = $16
|
||||
.label plotter = $14
|
||||
.label x = $e
|
||||
.label __1 = $1a
|
||||
.label plotter = $18
|
||||
.label x = 6
|
||||
// (byte*) { bitmap_plot_yhi[y], bitmap_plot_ylo[y] }
|
||||
lda bitmap_plot_yhi,x
|
||||
sta.z plotter+1
|
||||
@ -313,10 +333,9 @@ bitmap_plot: {
|
||||
adc.z __1+1
|
||||
sta.z plotter+1
|
||||
// <x
|
||||
lda.z x
|
||||
ldx.z x
|
||||
// *plotter |= bitmap_plot_bit[<x]
|
||||
tay
|
||||
lda bitmap_plot_bit,y
|
||||
lda bitmap_plot_bit,x
|
||||
ldy #0
|
||||
ora (plotter),y
|
||||
sta (plotter),y
|
||||
@ -325,10 +344,10 @@ bitmap_plot: {
|
||||
}
|
||||
// Get the sign of a 16-bit unsigned number treated as a signed number.
|
||||
// Returns unsigned -1 if the number is
|
||||
// sgn_u16(word zp($14) w)
|
||||
// sgn_u16(word zp(6) w)
|
||||
sgn_u16: {
|
||||
.label w = $14
|
||||
.label return = 6
|
||||
.label w = 6
|
||||
.label return = 8
|
||||
// >w
|
||||
lda.z w+1
|
||||
// >w&0x80
|
||||
@ -349,10 +368,10 @@ sgn_u16: {
|
||||
rts
|
||||
}
|
||||
// Get the absolute value of a 16-bit unsigned number treated as a signed number.
|
||||
// abs_u16(word zp(8) w)
|
||||
// abs_u16(word zp($a) w)
|
||||
abs_u16: {
|
||||
.label w = 8
|
||||
.label return = 8
|
||||
.label w = $a
|
||||
.label return = $a
|
||||
// >w
|
||||
lda.z w+1
|
||||
// >w&0x80
|
||||
@ -404,12 +423,12 @@ bitmap_clear: {
|
||||
rts
|
||||
}
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
// memset(void* zp($c) str, byte register(X) c, word zp($a) num)
|
||||
// memset(void* zp($e) str, byte register(X) c, word zp($c) num)
|
||||
memset: {
|
||||
.label end = $a
|
||||
.label dst = $c
|
||||
.label num = $a
|
||||
.label str = $c
|
||||
.label end = $c
|
||||
.label dst = $e
|
||||
.label num = $c
|
||||
.label str = $e
|
||||
// if(num>0)
|
||||
lda.z num
|
||||
bne !+
|
||||
@ -449,8 +468,8 @@ memset: {
|
||||
}
|
||||
// Initialize bitmap plotting tables
|
||||
bitmap_init: {
|
||||
.label __7 = $18
|
||||
.label yoffs = $e
|
||||
.label __7 = $1c
|
||||
.label yoffs = $10
|
||||
ldx #0
|
||||
lda #$80
|
||||
__b1:
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -13,18 +13,18 @@
|
||||
(const byte) VIC_RSEL = (byte) 8
|
||||
(const byte) WHITE = (byte) 1
|
||||
(word()) abs_u16((word) abs_u16::w)
|
||||
(byte~) abs_u16::$0 reg byte a 4.0
|
||||
(byte~) abs_u16::$1 reg byte a 4.0
|
||||
(byte~) abs_u16::$0 reg byte a 20002.0
|
||||
(byte~) abs_u16::$1 reg byte a 20002.0
|
||||
(label) abs_u16::@1
|
||||
(label) abs_u16::@return
|
||||
(word) abs_u16::return
|
||||
(word) abs_u16::return#0 return zp[2]:8 4.0
|
||||
(word) abs_u16::return#1 return zp[2]:8 4.0
|
||||
(word) abs_u16::return#2 return zp[2]:8 4.0
|
||||
(word) abs_u16::return#4 return zp[2]:8 2.0
|
||||
(word) abs_u16::return#0 return zp[2]:10 2002.0
|
||||
(word) abs_u16::return#1 return zp[2]:10 2002.0
|
||||
(word) abs_u16::return#2 return zp[2]:10 20002.0
|
||||
(word) abs_u16::return#4 return zp[2]:10 5501.0
|
||||
(word) abs_u16::w
|
||||
(word) abs_u16::w#0 w zp[2]:8 4.0
|
||||
(word) abs_u16::w#2 w zp[2]:8 2.0
|
||||
(word) abs_u16::w#0 w zp[2]:10 2002.0
|
||||
(word) abs_u16::w#2 w zp[2]:10 7751.0
|
||||
(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol)
|
||||
(label) bitmap_clear::@1
|
||||
(label) bitmap_clear::@return
|
||||
@ -34,10 +34,10 @@
|
||||
(byte) bitmap_clear::fgcol
|
||||
(byte*) bitmap_gfx
|
||||
(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen)
|
||||
(byte~) bitmap_init::$4 reg byte a 22.0
|
||||
(byte~) bitmap_init::$5 reg byte a 22.0
|
||||
(byte~) bitmap_init::$6 reg byte a 22.0
|
||||
(byte~) bitmap_init::$7 zp[1]:24 5.5
|
||||
(byte~) bitmap_init::$4 reg byte a 2002.0
|
||||
(byte~) bitmap_init::$5 reg byte a 2002.0
|
||||
(byte~) bitmap_init::$6 reg byte a 2002.0
|
||||
(byte~) bitmap_init::$7 zp[1]:28 500.5
|
||||
(label) bitmap_init::@1
|
||||
(label) bitmap_init::@2
|
||||
(label) bitmap_init::@3
|
||||
@ -46,21 +46,21 @@
|
||||
(label) bitmap_init::@6
|
||||
(label) bitmap_init::@return
|
||||
(byte) bitmap_init::bits
|
||||
(byte) bitmap_init::bits#1 reg byte a 11.0
|
||||
(byte) bitmap_init::bits#3 reg byte a 16.5
|
||||
(byte) bitmap_init::bits#4 reg byte a 7.333333333333333
|
||||
(byte) bitmap_init::bits#1 reg byte a 1001.0
|
||||
(byte) bitmap_init::bits#3 reg byte a 1501.5
|
||||
(byte) bitmap_init::bits#4 reg byte a 667.3333333333334
|
||||
(byte*) bitmap_init::gfx
|
||||
(byte*) bitmap_init::screen
|
||||
(byte) bitmap_init::x
|
||||
(byte) bitmap_init::x#1 reg byte x 16.5
|
||||
(byte) bitmap_init::x#2 reg byte x 5.5
|
||||
(byte) bitmap_init::x#1 reg byte x 1501.5
|
||||
(byte) bitmap_init::x#2 reg byte x 500.5
|
||||
(byte) bitmap_init::y
|
||||
(byte) bitmap_init::y#1 reg byte x 16.5
|
||||
(byte) bitmap_init::y#2 reg byte x 5.5
|
||||
(byte) bitmap_init::y#1 reg byte x 1501.5
|
||||
(byte) bitmap_init::y#2 reg byte x 500.5
|
||||
(byte*) bitmap_init::yoffs
|
||||
(byte*) bitmap_init::yoffs#1 yoffs zp[2]:14 22.0
|
||||
(byte*) bitmap_init::yoffs#2 yoffs zp[2]:14 6.875
|
||||
(byte*) bitmap_init::yoffs#4 yoffs zp[2]:14 11.0
|
||||
(byte*) bitmap_init::yoffs#1 yoffs zp[2]:16 2002.0
|
||||
(byte*) bitmap_init::yoffs#2 yoffs zp[2]:16 625.625
|
||||
(byte*) bitmap_init::yoffs#4 yoffs zp[2]:16 1001.0
|
||||
(void()) bitmap_line((word) bitmap_line::x1 , (word) bitmap_line::y1 , (word) bitmap_line::x2 , (word) bitmap_line::y2)
|
||||
(label) bitmap_line::@1
|
||||
(label) bitmap_line::@10
|
||||
@ -82,64 +82,64 @@
|
||||
(label) bitmap_line::@9
|
||||
(label) bitmap_line::@return
|
||||
(word) bitmap_line::dx
|
||||
(word) bitmap_line::dx#0 dx zp[2]:16 8.18421052631579
|
||||
(word) bitmap_line::dx#0 dx zp[2]:20 8000.184210526315
|
||||
(word) bitmap_line::dy
|
||||
(word) bitmap_line::dy#0 dy zp[2]:8 8.885714285714286
|
||||
(word) bitmap_line::dy#0 dy zp[2]:10 8685.914285714285
|
||||
(word) bitmap_line::e
|
||||
(word) bitmap_line::e#0 e zp[2]:10 4.0
|
||||
(word) bitmap_line::e#1 e zp[2]:10 134.66666666666666
|
||||
(word) bitmap_line::e#2 e zp[2]:10 202.0
|
||||
(word) bitmap_line::e#3 e zp[2]:10 40.8
|
||||
(word) bitmap_line::e#6 e zp[2]:10 151.5
|
||||
(word) bitmap_line::e#0 e zp[2]:12 2002.0
|
||||
(word) bitmap_line::e#1 e zp[2]:12 133334.66666666666
|
||||
(word) bitmap_line::e#2 e zp[2]:12 200002.0
|
||||
(word) bitmap_line::e#3 e zp[2]:12 40200.600000000006
|
||||
(word) bitmap_line::e#6 e zp[2]:12 150001.5
|
||||
(word) bitmap_line::e1
|
||||
(word) bitmap_line::e1#0 e1 zp[2]:4 4.0
|
||||
(word) bitmap_line::e1#1 e1 zp[2]:4 134.66666666666666
|
||||
(word) bitmap_line::e1#2 e1 zp[2]:4 202.0
|
||||
(word) bitmap_line::e1#3 e1 zp[2]:4 40.8
|
||||
(word) bitmap_line::e1#6 e1 zp[2]:4 151.5
|
||||
(word) bitmap_line::e1#0 e1 zp[2]:4 2002.0
|
||||
(word) bitmap_line::e1#1 e1 zp[2]:4 133334.66666666666
|
||||
(word) bitmap_line::e1#2 e1 zp[2]:4 200002.0
|
||||
(word) bitmap_line::e1#3 e1 zp[2]:4 40200.600000000006
|
||||
(word) bitmap_line::e1#6 e1 zp[2]:4 150001.5
|
||||
(word) bitmap_line::sx
|
||||
(word) bitmap_line::sx#0 sx zp[2]:18 7.03448275862069
|
||||
(word) bitmap_line::sx#0 sx zp[2]:22 6931.137931034482
|
||||
(word) bitmap_line::sy
|
||||
(word) bitmap_line::sy#0 sy zp[2]:6 7.846153846153847
|
||||
(word) bitmap_line::sy#0 sy zp[2]:8 7730.884615384615
|
||||
(word) bitmap_line::x
|
||||
(word) bitmap_line::x#1 x zp[2]:14 101.0
|
||||
(word) bitmap_line::x#12 x zp[2]:14 202.0
|
||||
(word) bitmap_line::x#13 x zp[2]:14 57.714285714285715
|
||||
(word) bitmap_line::x#15 x zp[2]:14 57.714285714285715
|
||||
(word) bitmap_line::x#6 x zp[2]:14 102.0
|
||||
(word) bitmap_line::x#7 x zp[2]:14 75.75
|
||||
(word) bitmap_line::x#1 x zp[2]:16 100001.0
|
||||
(word) bitmap_line::x#12 x zp[2]:16 200002.0
|
||||
(word) bitmap_line::x#13 x zp[2]:16 57143.42857142857
|
||||
(word) bitmap_line::x#15 x zp[2]:16 57143.42857142857
|
||||
(word) bitmap_line::x#6 x zp[2]:16 100501.5
|
||||
(word) bitmap_line::x#7 x zp[2]:16 75000.75
|
||||
(word) bitmap_line::x1
|
||||
(const word) bitmap_line::x1#0 x1 = (byte) 0
|
||||
(word) bitmap_line::x2
|
||||
(word) bitmap_line::x2#0 x2 zp[2]:2 3.8666666666666667
|
||||
(word) bitmap_line::x2#0 x2 zp[2]:18 3403.4666666666667
|
||||
(word) bitmap_line::y
|
||||
(word) bitmap_line::y#1 y zp[2]:12 57.714285714285715
|
||||
(word) bitmap_line::y#13 y zp[2]:12 202.0
|
||||
(word) bitmap_line::y#15 y zp[2]:12 43.285714285714285
|
||||
(word) bitmap_line::y#2 y zp[2]:12 101.0
|
||||
(word) bitmap_line::y#4 y zp[2]:12 50.5
|
||||
(word) bitmap_line::y#7 y zp[2]:12 202.0
|
||||
(word) bitmap_line::y#1 y zp[2]:14 57143.42857142857
|
||||
(word) bitmap_line::y#13 y zp[2]:14 200002.0
|
||||
(word) bitmap_line::y#15 y zp[2]:14 42857.57142857143
|
||||
(word) bitmap_line::y#2 y zp[2]:14 100001.0
|
||||
(word) bitmap_line::y#4 y zp[2]:14 50000.5
|
||||
(word) bitmap_line::y#7 y zp[2]:14 200002.0
|
||||
(word) bitmap_line::y1
|
||||
(const word) bitmap_line::y1#0 y1 = (byte) 0
|
||||
(word) bitmap_line::y2
|
||||
(const word) bitmap_line::y2#0 y2 = (byte) $64
|
||||
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
|
||||
(word~) bitmap_plot::$1 zp[2]:22 4.0
|
||||
(byte~) bitmap_plot::$2 reg byte a 4.0
|
||||
(word~) bitmap_plot::$1 zp[2]:26 2000002.0
|
||||
(byte~) bitmap_plot::$2 reg byte x 2000002.0
|
||||
(label) bitmap_plot::@return
|
||||
(byte*) bitmap_plot::plotter
|
||||
(word) bitmap_plot::plotter#0 plotter zp[2]:20 1.0
|
||||
(byte*) bitmap_plot::plotter#1 plotter zp[2]:20 3.0
|
||||
(word) bitmap_plot::plotter#0 plotter zp[2]:24 500000.5
|
||||
(byte*) bitmap_plot::plotter#1 plotter zp[2]:24 1500001.5
|
||||
(word) bitmap_plot::x
|
||||
(word) bitmap_plot::x#1 x zp[2]:14 202.0
|
||||
(word) bitmap_plot::x#2 x zp[2]:14 4.0
|
||||
(word) bitmap_plot::x#3 x zp[2]:14 202.0
|
||||
(word) bitmap_plot::x#4 x zp[2]:14 52.0
|
||||
(word) bitmap_plot::x#1 x zp[2]:6 200002.0
|
||||
(word) bitmap_plot::x#2 x zp[2]:6 2002.0
|
||||
(word) bitmap_plot::x#3 x zp[2]:6 200002.0
|
||||
(word) bitmap_plot::x#4 x zp[2]:6 550251.25
|
||||
(byte) bitmap_plot::y
|
||||
(byte) bitmap_plot::y#1 reg byte x 101.0
|
||||
(byte) bitmap_plot::y#2 reg byte x 2.0
|
||||
(byte) bitmap_plot::y#3 reg byte x 101.0
|
||||
(byte) bitmap_plot::y#4 reg byte x 208.0
|
||||
(byte) bitmap_plot::y#1 reg byte x 100001.0
|
||||
(byte) bitmap_plot::y#2 reg byte x 1001.0
|
||||
(byte) bitmap_plot::y#3 reg byte x 100001.0
|
||||
(byte) bitmap_plot::y#4 reg byte x 2201005.0
|
||||
(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
|
||||
(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
|
||||
(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
|
||||
@ -156,57 +156,59 @@
|
||||
(label) memset::@3
|
||||
(label) memset::@return
|
||||
(byte) memset::c
|
||||
(byte) memset::c#4 reg byte x 1.375
|
||||
(byte) memset::c#4 reg byte x 1250.125
|
||||
(byte*) memset::dst
|
||||
(byte*) memset::dst#1 dst zp[2]:12 22.0
|
||||
(byte*) memset::dst#2 dst zp[2]:12 15.333333333333332
|
||||
(byte*) memset::dst#4 dst zp[2]:12 4.0
|
||||
(byte*) memset::dst#1 dst zp[2]:14 20002.0
|
||||
(byte*) memset::dst#2 dst zp[2]:14 13668.333333333332
|
||||
(byte*) memset::dst#4 dst zp[2]:14 2002.0
|
||||
(byte*) memset::end
|
||||
(byte*) memset::end#0 end zp[2]:10 2.1666666666666665
|
||||
(byte*) memset::end#0 end zp[2]:12 1833.6666666666665
|
||||
(word) memset::num
|
||||
(word) memset::num#2 num zp[2]:10 2.0
|
||||
(word) memset::num#2 num zp[2]:12 1001.0
|
||||
(void*) memset::return
|
||||
(void*) memset::str
|
||||
(void*) memset::str#3 str zp[2]:12
|
||||
(void*) memset::str#3 str zp[2]:14
|
||||
(word) next
|
||||
(word) next#1 next zp[2]:2 11.0
|
||||
(word) next#3 next zp[2]:2 22.0
|
||||
(word) next#5 next zp[2]:2 11.0
|
||||
(word) next#1 next zp[2]:2 101.0
|
||||
(word) next#3 next zp[2]:2 202.0
|
||||
(word) next#5 next zp[2]:2 101.0
|
||||
(word()) sgn_u16((word) sgn_u16::w)
|
||||
(byte~) sgn_u16::$0 reg byte a 4.0
|
||||
(byte~) sgn_u16::$1 reg byte a 4.0
|
||||
(byte~) sgn_u16::$0 reg byte a 20002.0
|
||||
(byte~) sgn_u16::$1 reg byte a 20002.0
|
||||
(label) sgn_u16::@1
|
||||
(label) sgn_u16::@return
|
||||
(word) sgn_u16::return
|
||||
(word) sgn_u16::return#0 return zp[2]:6 4.0
|
||||
(word) sgn_u16::return#1 return zp[2]:6 4.0
|
||||
(word) sgn_u16::return#4 return zp[2]:6 1.0
|
||||
(word) sgn_u16::return#0 return zp[2]:8 2002.0
|
||||
(word) sgn_u16::return#1 return zp[2]:8 2002.0
|
||||
(word) sgn_u16::return#4 return zp[2]:8 500.5
|
||||
(word) sgn_u16::w
|
||||
(word) sgn_u16::w#0 w zp[2]:20 4.0
|
||||
(word) sgn_u16::w#2 w zp[2]:20 4.0
|
||||
(word) sgn_u16::w#0 w zp[2]:6 2002.0
|
||||
(word) sgn_u16::w#2 w zp[2]:6 11002.0
|
||||
|
||||
zp[2]:2 [ next#5 next#3 next#1 bitmap_line::x2#0 ]
|
||||
zp[2]:2 [ next#5 next#3 next#1 ]
|
||||
zp[2]:4 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
|
||||
reg byte x [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#1 ]
|
||||
zp[2]:6 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
|
||||
zp[2]:8 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ]
|
||||
zp[2]:10 [ memset::num#2 memset::end#0 bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
|
||||
zp[2]:12 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ]
|
||||
zp[2]:6 [ sgn_u16::w#2 sgn_u16::w#0 bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#1 ]
|
||||
zp[2]:8 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
|
||||
zp[2]:10 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ]
|
||||
zp[2]:12 [ memset::num#2 memset::end#0 bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
|
||||
zp[2]:14 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ]
|
||||
reg byte x [ memset::c#4 ]
|
||||
reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
||||
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
|
||||
reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
zp[2]:14 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#1 ]
|
||||
zp[2]:16 [ bitmap_line::dx#0 ]
|
||||
zp[2]:18 [ bitmap_line::sx#0 ]
|
||||
zp[2]:20 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 sgn_u16::w#2 sgn_u16::w#0 ]
|
||||
zp[2]:22 [ bitmap_plot::$1 ]
|
||||
reg byte a [ bitmap_plot::$2 ]
|
||||
zp[2]:16 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ]
|
||||
zp[2]:18 [ bitmap_line::x2#0 ]
|
||||
zp[2]:20 [ bitmap_line::dx#0 ]
|
||||
zp[2]:22 [ bitmap_line::sx#0 ]
|
||||
zp[2]:24 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ]
|
||||
zp[2]:26 [ bitmap_plot::$1 ]
|
||||
reg byte x [ bitmap_plot::$2 ]
|
||||
reg byte a [ sgn_u16::$0 ]
|
||||
reg byte a [ sgn_u16::$1 ]
|
||||
reg byte a [ abs_u16::$0 ]
|
||||
reg byte a [ abs_u16::$1 ]
|
||||
zp[1]:24 [ bitmap_init::$7 ]
|
||||
zp[1]:28 [ bitmap_init::$7 ]
|
||||
reg byte a [ bitmap_init::$4 ]
|
||||
reg byte a [ bitmap_init::$5 ]
|
||||
reg byte a [ bitmap_init::$6 ]
|
||||
|
@ -72,6 +72,10 @@ main: {
|
||||
sta.z x+1
|
||||
__b2:
|
||||
// bitmap_plot(x, y)
|
||||
lda.z x
|
||||
sta.z bitmap_plot.x
|
||||
lda.z x+1
|
||||
sta.z bitmap_plot.x+1
|
||||
ldx.z y
|
||||
jsr bitmap_plot
|
||||
// x += vx
|
||||
@ -130,11 +134,11 @@ main: {
|
||||
jmp __b2
|
||||
}
|
||||
// Plot a single dot in the bitmap
|
||||
// bitmap_plot(word zp(2) x, byte register(X) y)
|
||||
// bitmap_plot(word zp(9) x, byte register(X) y)
|
||||
bitmap_plot: {
|
||||
.label __1 = $b
|
||||
.label plotter = 9
|
||||
.label x = 2
|
||||
.label __1 = $d
|
||||
.label plotter = $b
|
||||
.label x = 9
|
||||
// (byte*) { bitmap_plot_yhi[y], bitmap_plot_ylo[y] }
|
||||
lda bitmap_plot_yhi,x
|
||||
sta.z plotter+1
|
||||
@ -156,10 +160,9 @@ bitmap_plot: {
|
||||
adc.z __1+1
|
||||
sta.z plotter+1
|
||||
// <x
|
||||
lda.z x
|
||||
ldx.z x
|
||||
// *plotter |= bitmap_plot_bit[<x]
|
||||
tay
|
||||
lda bitmap_plot_bit,y
|
||||
lda bitmap_plot_bit,x
|
||||
ldy #0
|
||||
ora (plotter),y
|
||||
sta (plotter),y
|
||||
@ -280,7 +283,7 @@ memset: {
|
||||
}
|
||||
// Initialize bitmap plotting tables
|
||||
bitmap_init: {
|
||||
.label __7 = $d
|
||||
.label __7 = $f
|
||||
.label yoffs = $b
|
||||
ldx #0
|
||||
lda #$80
|
||||
|
@ -874,71 +874,71 @@ Inversing boolean not [31] (bool~) bitmap_init::$1 ← (byte) bitmap_init::bits#
|
||||
Inversing boolean not [51] (bool~) bitmap_init::$9 ← (byte~) bitmap_init::$7 != (byte) 7 from [50] (bool~) bitmap_init::$8 ← (byte~) bitmap_init::$7 == (byte) 7
|
||||
Inversing boolean not [171] (bool~) irq::$0 ← (byte) 0 == (byte) frame_cnt from [170] (bool~) irq::$1 ← (byte) 0 != (byte) frame_cnt
|
||||
Successful SSA optimization Pass2UnaryNotSimplification
|
||||
Alias (void*) memset::return#0 = (void*) memset::str#2 (void*) memset::return#4 (void*) memset::return#1
|
||||
Alias (void*) memset::str#3 = (void*) memset::str#4
|
||||
Alias (word) memset::num#2 = (word) memset::num#3
|
||||
Alias (byte) memset::c#4 = (byte) memset::c#5
|
||||
Alias (byte*) memset::end#0 = (byte*~) memset::$3
|
||||
Alias (byte) memset::c#2 = (byte) memset::c#3
|
||||
Alias (byte*) memset::dst#2 = (byte*) memset::dst#3
|
||||
Alias (byte*) memset::end#1 = (byte*) memset::end#2
|
||||
Alias (void*) memset::str#5 = (void*) memset::str#6
|
||||
Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#4
|
||||
Alias (byte*) bitmap_init::gfx#4 = (byte*) bitmap_init::gfx#5
|
||||
Alias (byte*) bitmap_gfx#29 = (byte*) bitmap_gfx#30
|
||||
Alias (byte*) bitmap_screen#28 = (byte*) bitmap_screen#29
|
||||
Alias (byte*) bitmap_init::gfx#2 = (byte*) bitmap_init::gfx#3 (byte*) bitmap_init::yoffs#0
|
||||
Alias (byte*) bitmap_gfx#21 = (byte*) bitmap_gfx#25
|
||||
Alias (byte*) bitmap_screen#20 = (byte*) bitmap_screen#24
|
||||
Alias (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#3
|
||||
Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#4
|
||||
Alias (byte*) bitmap_gfx#16 = (byte*) bitmap_gfx#17
|
||||
Alias (byte*) bitmap_screen#15 = (byte*) bitmap_screen#16
|
||||
Alias (byte*) bitmap_init::yoffs#1 = (byte*~) bitmap_init::$10
|
||||
Alias (byte*) bitmap_gfx#11 = (byte*) bitmap_gfx#6 (byte*) bitmap_gfx#2
|
||||
Alias (byte*) bitmap_screen#11 = (byte*) bitmap_screen#6 (byte*) bitmap_screen#2
|
||||
Alias (byte) bitmap_clear::col#0 = (byte~) bitmap_clear::$1
|
||||
Alias (byte*) bitmap_gfx#12 = (byte*) bitmap_gfx#7
|
||||
Alias (byte*) bitmap_plot::plotter#0 = (byte*~) bitmap_plot::$0
|
||||
Alias (byte*) bitmap_gfx#18 = (byte*) bitmap_gfx#3 (byte*) bitmap_gfx#8 (byte*) bitmap_gfx#33 (byte*) bitmap_gfx#31 (byte*) bitmap_gfx#26 (byte*) bitmap_gfx#22
|
||||
Alias (byte*) bitmap_screen#17 = (byte*) bitmap_screen#3 (byte*) bitmap_screen#8 (byte*) bitmap_screen#32 (byte*) bitmap_screen#30 (byte*) bitmap_screen#25 (byte*) bitmap_screen#21
|
||||
Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1
|
||||
Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1
|
||||
Alias (byte) main::toD0181_return#0 = (byte~) main::toD0181_$8 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$2
|
||||
Alias (word) main::x#2 = (word) main::x#4 (word) main::x#3
|
||||
Alias (byte) main::y#2 = (byte) main::y#5 (byte) main::y#3
|
||||
Alias (word) main::vx#2 = (word) main::vx#4 (word) main::vx#5 (word) main::vx#3
|
||||
Alias (byte) main::vy#2 = (byte) main::vy#4 (byte) main::vy#6 (byte) main::vy#7
|
||||
Alias (byte*) bitmap_gfx#14 = (byte*) bitmap_gfx#32 (byte*) bitmap_gfx#27 (byte*) bitmap_gfx#28 (byte*) bitmap_gfx#9 (byte*) bitmap_gfx#4
|
||||
Alias (byte*) bitmap_screen#13 = (byte*) bitmap_screen#31 (byte*) bitmap_screen#26 (byte*) bitmap_screen#27 (byte*) bitmap_screen#9 (byte*) bitmap_screen#4
|
||||
Alias (byte) main::y#1 = (byte) main::y#6
|
||||
Alias (word) main::x#1 = (word) main::x#8
|
||||
Alias (word) main::vx#1 = (word~) main::$9
|
||||
Alias (byte) main::vy#3 = (byte) main::vy#5
|
||||
Alias (word) main::x#6 = (word) main::x#7
|
||||
Alias (byte) main::y#4 = (byte) main::y#8
|
||||
Alias (byte*) bitmap_gfx#23 = (byte*) bitmap_gfx#24
|
||||
Alias (byte*) bitmap_screen#22 = (byte*) bitmap_screen#23
|
||||
Alias (word) main::vx#7 = (word) main::vx#8
|
||||
Alias (byte) main::vy#1 = (byte~) main::$14
|
||||
Alias (byte*) bitmap_gfx#0 = (byte*) bitmap_gfx#20 (byte*) bitmap_gfx#15
|
||||
Alias (byte*) bitmap_screen#0 = (byte*) bitmap_screen#19 (byte*) bitmap_screen#14
|
||||
Alias (byte*) bitmap_gfx#10 = (byte*) bitmap_gfx#5
|
||||
Alias (byte*) bitmap_screen#10 = (byte*) bitmap_screen#5
|
||||
Alias memset::return#0 = memset::str#2 memset::return#4 memset::return#1
|
||||
Alias memset::str#3 = memset::str#4
|
||||
Alias memset::num#2 = memset::num#3
|
||||
Alias memset::c#4 = memset::c#5
|
||||
Alias memset::end#0 = memset::$3
|
||||
Alias memset::c#2 = memset::c#3
|
||||
Alias memset::dst#2 = memset::dst#3
|
||||
Alias memset::end#1 = memset::end#2
|
||||
Alias memset::str#5 = memset::str#6
|
||||
Alias bitmap_init::x#2 = bitmap_init::x#4
|
||||
Alias bitmap_init::gfx#4 = bitmap_init::gfx#5
|
||||
Alias bitmap_gfx#29 = bitmap_gfx#30
|
||||
Alias bitmap_screen#28 = bitmap_screen#29
|
||||
Alias bitmap_init::gfx#2 = bitmap_init::gfx#3 bitmap_init::yoffs#0
|
||||
Alias bitmap_gfx#21 = bitmap_gfx#25
|
||||
Alias bitmap_screen#20 = bitmap_screen#24
|
||||
Alias bitmap_init::yoffs#2 = bitmap_init::yoffs#3
|
||||
Alias bitmap_init::y#2 = bitmap_init::y#4
|
||||
Alias bitmap_gfx#16 = bitmap_gfx#17
|
||||
Alias bitmap_screen#15 = bitmap_screen#16
|
||||
Alias bitmap_init::yoffs#1 = bitmap_init::$10
|
||||
Alias bitmap_gfx#11 = bitmap_gfx#6 bitmap_gfx#2
|
||||
Alias bitmap_screen#11 = bitmap_screen#6 bitmap_screen#2
|
||||
Alias bitmap_clear::col#0 = bitmap_clear::$1
|
||||
Alias bitmap_gfx#12 = bitmap_gfx#7
|
||||
Alias bitmap_plot::plotter#0 = bitmap_plot::$0
|
||||
Alias bitmap_gfx#18 = bitmap_gfx#3 bitmap_gfx#8 bitmap_gfx#33 bitmap_gfx#31 bitmap_gfx#26 bitmap_gfx#22
|
||||
Alias bitmap_screen#17 = bitmap_screen#3 bitmap_screen#8 bitmap_screen#32 bitmap_screen#30 bitmap_screen#25 bitmap_screen#21
|
||||
Alias main::toD0181_screen#0 = main::toD0181_screen#1
|
||||
Alias main::toD0181_gfx#0 = main::toD0181_gfx#1
|
||||
Alias main::toD0181_return#0 = main::toD0181_$8 main::toD0181_return#2 main::toD0181_return#1 main::toD0181_return#3 main::$2
|
||||
Alias main::x#2 = main::x#4 main::x#3
|
||||
Alias main::y#2 = main::y#5 main::y#3
|
||||
Alias main::vx#2 = main::vx#4 main::vx#5 main::vx#3
|
||||
Alias main::vy#2 = main::vy#4 main::vy#6 main::vy#7
|
||||
Alias bitmap_gfx#14 = bitmap_gfx#32 bitmap_gfx#27 bitmap_gfx#28 bitmap_gfx#9 bitmap_gfx#4
|
||||
Alias bitmap_screen#13 = bitmap_screen#31 bitmap_screen#26 bitmap_screen#27 bitmap_screen#9 bitmap_screen#4
|
||||
Alias main::y#1 = main::y#6
|
||||
Alias main::x#1 = main::x#8
|
||||
Alias main::vx#1 = main::$9
|
||||
Alias main::vy#3 = main::vy#5
|
||||
Alias main::x#6 = main::x#7
|
||||
Alias main::y#4 = main::y#8
|
||||
Alias bitmap_gfx#23 = bitmap_gfx#24
|
||||
Alias bitmap_screen#22 = bitmap_screen#23
|
||||
Alias main::vx#7 = main::vx#8
|
||||
Alias main::vy#1 = main::$14
|
||||
Alias bitmap_gfx#0 = bitmap_gfx#20 bitmap_gfx#15
|
||||
Alias bitmap_screen#0 = bitmap_screen#19 bitmap_screen#14
|
||||
Alias bitmap_gfx#10 = bitmap_gfx#5
|
||||
Alias bitmap_screen#10 = bitmap_screen#5
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#3
|
||||
Alias (byte*) bitmap_init::gfx#2 = (byte*) bitmap_init::gfx#4
|
||||
Alias (byte*) bitmap_gfx#21 = (byte*) bitmap_gfx#29
|
||||
Alias (byte*) bitmap_screen#20 = (byte*) bitmap_screen#28
|
||||
Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#3
|
||||
Alias (byte*) bitmap_gfx#11 = (byte*) bitmap_gfx#16
|
||||
Alias (byte*) bitmap_screen#11 = (byte*) bitmap_screen#15
|
||||
Alias (byte) main::y#1 = (byte) main::y#4 (byte) main::y#7
|
||||
Alias (byte) main::vy#2 = (byte) main::vy#3
|
||||
Alias (word) main::x#1 = (word) main::x#6 (word) main::x#5
|
||||
Alias (byte*) bitmap_gfx#14 = (byte*) bitmap_gfx#23 (byte*) bitmap_gfx#19
|
||||
Alias (byte*) bitmap_screen#13 = (byte*) bitmap_screen#22 (byte*) bitmap_screen#18
|
||||
Alias (word) main::vx#6 = (word) main::vx#7
|
||||
Alias bitmap_init::x#2 = bitmap_init::x#3
|
||||
Alias bitmap_init::gfx#2 = bitmap_init::gfx#4
|
||||
Alias bitmap_gfx#21 = bitmap_gfx#29
|
||||
Alias bitmap_screen#20 = bitmap_screen#28
|
||||
Alias bitmap_init::y#2 = bitmap_init::y#3
|
||||
Alias bitmap_gfx#11 = bitmap_gfx#16
|
||||
Alias bitmap_screen#11 = bitmap_screen#15
|
||||
Alias main::y#1 = main::y#4 main::y#7
|
||||
Alias main::vy#2 = main::vy#3
|
||||
Alias main::x#1 = main::x#6 main::x#5
|
||||
Alias bitmap_gfx#14 = bitmap_gfx#23 bitmap_gfx#19
|
||||
Alias bitmap_screen#13 = bitmap_screen#22 bitmap_screen#18
|
||||
Alias main::vx#6 = main::vx#7
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Identical Phi Values (byte*) memset::end#1 (byte*) memset::end#0
|
||||
Identical Phi Values (void*) memset::str#5 (void*) memset::str#3
|
||||
@ -1037,8 +1037,8 @@ Successful SSA optimization PassNCastSimplification
|
||||
Finalized unsigned number type (byte) 0
|
||||
Finalized unsigned number type (byte) 0
|
||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Alias (byte~) bitmap_init::$7 = (byte~) bitmap_init::$3
|
||||
Alias (byte) bitmap_clear::col#0 = (byte~) bitmap_clear::$0
|
||||
Alias bitmap_init::$7 = bitmap_init::$3
|
||||
Alias bitmap_clear::col#0 = bitmap_clear::$0
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Simple Condition (bool~) main::$5 [62] if((word) main::x#1==(word) $13f) goto main::@8
|
||||
Simple Condition (bool~) main::$10 [66] if((byte) main::y#1==(byte) $c7) goto main::@9
|
||||
@ -1412,38 +1412,38 @@ VARIABLE REGISTER WEIGHTS
|
||||
(byte) bitmap_clear::fgcol
|
||||
(byte*) bitmap_gfx
|
||||
(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen)
|
||||
(byte~) bitmap_init::$4 22.0
|
||||
(byte~) bitmap_init::$5 22.0
|
||||
(byte~) bitmap_init::$6 22.0
|
||||
(byte~) bitmap_init::$7 5.5
|
||||
(byte~) bitmap_init::$4 2002.0
|
||||
(byte~) bitmap_init::$5 2002.0
|
||||
(byte~) bitmap_init::$6 2002.0
|
||||
(byte~) bitmap_init::$7 500.5
|
||||
(byte) bitmap_init::bits
|
||||
(byte) bitmap_init::bits#1 11.0
|
||||
(byte) bitmap_init::bits#3 16.5
|
||||
(byte) bitmap_init::bits#4 7.333333333333333
|
||||
(byte) bitmap_init::bits#1 1001.0
|
||||
(byte) bitmap_init::bits#3 1501.5
|
||||
(byte) bitmap_init::bits#4 667.3333333333334
|
||||
(byte*) bitmap_init::gfx
|
||||
(byte*) bitmap_init::screen
|
||||
(byte) bitmap_init::x
|
||||
(byte) bitmap_init::x#1 16.5
|
||||
(byte) bitmap_init::x#2 5.5
|
||||
(byte) bitmap_init::x#1 1501.5
|
||||
(byte) bitmap_init::x#2 500.5
|
||||
(byte) bitmap_init::y
|
||||
(byte) bitmap_init::y#1 16.5
|
||||
(byte) bitmap_init::y#2 5.5
|
||||
(byte) bitmap_init::y#1 1501.5
|
||||
(byte) bitmap_init::y#2 500.5
|
||||
(byte*) bitmap_init::yoffs
|
||||
(byte*) bitmap_init::yoffs#1 22.0
|
||||
(byte*) bitmap_init::yoffs#2 6.875
|
||||
(byte*) bitmap_init::yoffs#4 11.0
|
||||
(byte*) bitmap_init::yoffs#1 2002.0
|
||||
(byte*) bitmap_init::yoffs#2 625.625
|
||||
(byte*) bitmap_init::yoffs#4 1001.0
|
||||
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
|
||||
(word~) bitmap_plot::$1 4.0
|
||||
(byte~) bitmap_plot::$2 4.0
|
||||
(word~) bitmap_plot::$1 2002.0
|
||||
(byte~) bitmap_plot::$2 2002.0
|
||||
(byte*) bitmap_plot::plotter
|
||||
(word) bitmap_plot::plotter#0 1.0
|
||||
(byte*) bitmap_plot::plotter#1 3.0
|
||||
(word) bitmap_plot::plotter#0 500.5
|
||||
(byte*) bitmap_plot::plotter#1 1501.5
|
||||
(word) bitmap_plot::x
|
||||
(word) bitmap_plot::x#0 3.0
|
||||
(word) bitmap_plot::x#0 420.59999999999997
|
||||
(byte) bitmap_plot::y
|
||||
(byte) bitmap_plot::y#0 15.0
|
||||
(byte) bitmap_plot::y#0 2103.0
|
||||
(byte*) bitmap_screen
|
||||
(byte) frame_cnt loadstore 1.1111111111111112
|
||||
(byte) frame_cnt loadstore 7.777777777777779
|
||||
(void()) init_irq()
|
||||
interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
(void()) main()
|
||||
@ -1451,30 +1451,30 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
(byte) main::toD0181_return
|
||||
(byte*) main::toD0181_screen
|
||||
(word) main::vx
|
||||
(word) main::vx#1 22.0
|
||||
(word) main::vx#2 5.5
|
||||
(word) main::vx#6 5.5
|
||||
(word) main::vx#1 202.0
|
||||
(word) main::vx#2 50.5
|
||||
(word) main::vx#6 50.5
|
||||
(byte) main::vy
|
||||
(byte) main::vy#1 22.0
|
||||
(byte) main::vy#2 3.6666666666666665
|
||||
(byte) main::vy#8 16.5
|
||||
(byte) main::vy#1 202.0
|
||||
(byte) main::vy#2 33.666666666666664
|
||||
(byte) main::vy#8 151.5
|
||||
(word) main::x
|
||||
(word) main::x#1 4.0
|
||||
(word) main::x#2 8.25
|
||||
(word) main::x#1 36.72727272727273
|
||||
(word) main::x#2 75.75
|
||||
(byte) main::y
|
||||
(byte) main::y#1 4.4
|
||||
(byte) main::y#2 6.6000000000000005
|
||||
(byte) main::y#1 40.4
|
||||
(byte) main::y#2 60.599999999999994
|
||||
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
||||
(byte) memset::c
|
||||
(byte) memset::c#4 1.375
|
||||
(byte) memset::c#4 1250.125
|
||||
(byte*) memset::dst
|
||||
(byte*) memset::dst#1 22.0
|
||||
(byte*) memset::dst#2 15.333333333333332
|
||||
(byte*) memset::dst#4 4.0
|
||||
(byte*) memset::dst#1 20002.0
|
||||
(byte*) memset::dst#2 13668.333333333332
|
||||
(byte*) memset::dst#4 2002.0
|
||||
(byte*) memset::end
|
||||
(byte*) memset::end#0 2.1666666666666665
|
||||
(byte*) memset::end#0 1833.6666666666665
|
||||
(word) memset::num
|
||||
(word) memset::num#2 2.0
|
||||
(word) memset::num#2 1001.0
|
||||
(void*) memset::return
|
||||
(void*) memset::str
|
||||
(void*) memset::str#3
|
||||
@ -2169,86 +2169,84 @@ irq: {
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Equivalence Class zp[1]:34 [ bitmap_init::$4 ] has ALU potential.
|
||||
Statement [1] (byte) frame_cnt ← (byte) 1 [ frame_cnt ] ( [ frame_cnt ] ) always clobbers reg byte a
|
||||
Statement [9] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ frame_cnt ] ( main:3 [ frame_cnt ] ) always clobbers reg byte a
|
||||
Statement [11] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ frame_cnt ] ( main:3 [ frame_cnt ] ) always clobbers reg byte a
|
||||
Statement [14] (word) bitmap_plot::x#0 ← (word) main::x#2 [ frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 bitmap_plot::x#0 ] ( main:3 [ frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 bitmap_plot::x#0 ] ) always clobbers reg byte a
|
||||
Statement [1] (byte) frame_cnt ← (byte) 1 [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [9] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [11] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [14] (word) bitmap_plot::x#0 ← (word) main::x#2 [ frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 bitmap_plot::x#0 ] ( [ frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 bitmap_plot::x#0 ] { { bitmap_plot::x#0 = main::x#2 } } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::y#2 main::y#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:7 [ main::vy#2 main::vy#8 main::vy#1 ]
|
||||
Statement [17] (word) main::x#1 ← (word) main::x#2 + (word) main::vx#2 [ frame_cnt main::y#2 main::vx#2 main::vy#2 main::x#1 ] ( main:3 [ frame_cnt main::y#2 main::vx#2 main::vy#2 main::x#1 ] ) always clobbers reg byte a
|
||||
Statement [18] (byte) main::y#1 ← (byte) main::y#2 + (byte) main::vy#2 [ frame_cnt main::vx#2 main::vy#2 main::x#1 main::y#1 ] ( main:3 [ frame_cnt main::vx#2 main::vy#2 main::x#1 main::y#1 ] ) always clobbers reg byte a
|
||||
Statement [19] if((word) main::x#1==(word) $13f) goto main::@5 [ frame_cnt main::vx#2 main::vy#2 main::x#1 main::y#1 ] ( main:3 [ frame_cnt main::vx#2 main::vy#2 main::x#1 main::y#1 ] ) always clobbers reg byte a
|
||||
Statement [20] if((word) main::x#1!=(byte) 0) goto main::@3 [ frame_cnt main::vx#2 main::vy#2 main::x#1 main::y#1 ] ( main:3 [ frame_cnt main::vx#2 main::vy#2 main::x#1 main::y#1 ] ) always clobbers reg byte a
|
||||
Statement [21] (word) main::vx#1 ← - (word) main::vx#2 [ frame_cnt main::vy#2 main::x#1 main::y#1 main::vx#1 ] ( main:3 [ frame_cnt main::vy#2 main::x#1 main::y#1 main::vx#1 ] ) always clobbers reg byte a
|
||||
Statement [25] (byte) main::vy#1 ← - (byte) main::vy#2 [ frame_cnt main::x#1 main::y#1 main::vx#6 main::vy#1 ] ( main:3 [ frame_cnt main::x#1 main::y#1 main::vx#6 main::vy#1 ] ) always clobbers reg byte a
|
||||
Statement [27] *((const byte*) plots_per_frame + (byte) frame_cnt) ← ++ *((const byte*) plots_per_frame + (byte) frame_cnt) [ frame_cnt main::x#1 main::y#1 main::vx#6 main::vy#8 ] ( main:3 [ frame_cnt main::x#1 main::y#1 main::vx#6 main::vy#8 ] ) always clobbers reg byte x
|
||||
Statement [17] (word) main::x#1 ← (word) main::x#2 + (word) main::vx#2 [ frame_cnt main::y#2 main::vx#2 main::vy#2 main::x#1 ] ( [ frame_cnt main::y#2 main::vx#2 main::vy#2 main::x#1 ] { } ) always clobbers reg byte a
|
||||
Statement [18] (byte) main::y#1 ← (byte) main::y#2 + (byte) main::vy#2 [ frame_cnt main::vx#2 main::vy#2 main::x#1 main::y#1 ] ( [ frame_cnt main::vx#2 main::vy#2 main::x#1 main::y#1 ] { } ) always clobbers reg byte a
|
||||
Statement [19] if((word) main::x#1==(word) $13f) goto main::@5 [ frame_cnt main::vx#2 main::vy#2 main::x#1 main::y#1 ] ( [ frame_cnt main::vx#2 main::vy#2 main::x#1 main::y#1 ] { } ) always clobbers reg byte a
|
||||
Statement [20] if((word) main::x#1!=(byte) 0) goto main::@3 [ frame_cnt main::vx#2 main::vy#2 main::x#1 main::y#1 ] ( [ frame_cnt main::vx#2 main::vy#2 main::x#1 main::y#1 ] { } ) always clobbers reg byte a
|
||||
Statement [21] (word) main::vx#1 ← - (word) main::vx#2 [ frame_cnt main::vy#2 main::x#1 main::y#1 main::vx#1 ] ( [ frame_cnt main::vy#2 main::x#1 main::y#1 main::vx#1 ] { } ) always clobbers reg byte a
|
||||
Statement [25] (byte) main::vy#1 ← - (byte) main::vy#2 [ frame_cnt main::x#1 main::y#1 main::vx#6 main::vy#1 ] ( [ frame_cnt main::x#1 main::y#1 main::vx#6 main::vy#1 ] { } ) always clobbers reg byte a
|
||||
Statement [27] *((const byte*) plots_per_frame + (byte) frame_cnt) ← ++ *((const byte*) plots_per_frame + (byte) frame_cnt) [ frame_cnt main::x#1 main::y#1 main::vx#6 main::vy#8 ] ( [ frame_cnt main::x#1 main::y#1 main::vx#6 main::vy#8 ] { } ) always clobbers reg byte x
|
||||
Removing always clobbered register reg byte x as potential for zp[1]:4 [ main::y#2 main::y#1 ]
|
||||
Removing always clobbered register reg byte x as potential for zp[1]:7 [ main::vy#2 main::vy#8 main::vy#1 ]
|
||||
Statement [28] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::plotter#0 ] ( main:3::bitmap_plot:16 [ frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 bitmap_plot::x#0 bitmap_plot::plotter#0 ] ) always clobbers reg byte a
|
||||
Statement [29] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word) $fff8 [ bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:3::bitmap_plot:16 [ frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a
|
||||
Statement [30] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:3::bitmap_plot:16 [ frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] ) always clobbers reg byte a
|
||||
Statement [31] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:3::bitmap_plot:16 [ frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a
|
||||
Statement [32] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:3::bitmap_plot:16 [ frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [28] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::plotter#0 ] ( [ bitmap_plot::x#0 bitmap_plot::plotter#0 frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 ] { } ) always clobbers reg byte a
|
||||
Statement [29] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word) $fff8 [ bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( [ bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 ] { } ) always clobbers reg byte a
|
||||
Statement [30] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( [ bitmap_plot::x#0 bitmap_plot::plotter#1 frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 ] { } ) always clobbers reg byte a
|
||||
Statement [32] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( [ frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:4 [ main::y#2 main::y#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:7 [ main::vy#2 main::vy#8 main::vy#1 ]
|
||||
Statement [35] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:3::init_irq:12 [ frame_cnt ] ) always clobbers reg byte a
|
||||
Statement [36] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:3::init_irq:12 [ frame_cnt ] ) always clobbers reg byte a
|
||||
Statement [37] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:3::init_irq:12 [ frame_cnt ] ) always clobbers reg byte a
|
||||
Statement [38] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (byte) $80 [ ] ( main:3::init_irq:12 [ frame_cnt ] ) always clobbers reg byte a
|
||||
Statement [39] *((const byte*) RASTER) ← (byte) 0 [ ] ( main:3::init_irq:12 [ frame_cnt ] ) always clobbers reg byte a
|
||||
Statement [40] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:3::init_irq:12 [ frame_cnt ] ) always clobbers reg byte a
|
||||
Statement [41] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() [ ] ( main:3::init_irq:12 [ frame_cnt ] ) always clobbers reg byte a
|
||||
Statement [50] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:3::bitmap_clear:8::memset:45 [ frame_cnt memset::num#2 memset::str#3 memset::c#4 ] main:3::bitmap_clear:8::memset:47 [ frame_cnt memset::num#2 memset::str#3 memset::c#4 ] ) always clobbers reg byte a
|
||||
Statement [35] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [36] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [37] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [38] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (byte) $80 [ ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [39] *((const byte*) RASTER) ← (byte) 0 [ ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [40] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [41] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() [ ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [50] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( [ memset::num#2 memset::str#3 memset::c#4 frame_cnt ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:12 [ memset::c#4 ]
|
||||
Statement [51] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:3::bitmap_clear:8::memset:45 [ frame_cnt memset::str#3 memset::c#4 memset::end#0 ] main:3::bitmap_clear:8::memset:47 [ frame_cnt memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a
|
||||
Statement [52] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:3::bitmap_clear:8::memset:45 [ frame_cnt memset::c#4 memset::end#0 memset::dst#4 ] main:3::bitmap_clear:8::memset:47 [ frame_cnt memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a
|
||||
Statement [54] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::bitmap_clear:8::memset:45 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] main:3::bitmap_clear:8::memset:47 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a
|
||||
Statement [56] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::bitmap_clear:8::memset:45 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] main:3::bitmap_clear:8::memset:47 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [51] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( [ memset::str#3 memset::c#4 memset::end#0 frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [52] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( [ memset::c#4 memset::end#0 memset::dst#4 frame_cnt ] { { memset::dst#4 = memset::str#3 } } ) always clobbers reg byte a
|
||||
Statement [54] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( [ memset::c#4 memset::end#0 memset::dst#2 frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [56] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( [ memset::c#4 memset::end#0 memset::dst#2 frame_cnt ] { } ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:12 [ memset::c#4 ]
|
||||
Statement [75] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:3::bitmap_init:6 [ frame_cnt bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a
|
||||
Statement [75] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( [ bitmap_init::y#2 bitmap_init::yoffs#1 frame_cnt ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:17 [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
Statement [80] *((const byte*) BGCOL) ← (const byte) WHITE [ frame_cnt ] ( [ frame_cnt ] ) always clobbers reg byte a
|
||||
Statement [81] if((byte) 0==(byte) frame_cnt) goto irq::@1 [ frame_cnt ] ( [ frame_cnt ] ) always clobbers reg byte a
|
||||
Statement [83] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] ) always clobbers reg byte a
|
||||
Statement [84] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] ) always clobbers reg byte a
|
||||
Statement [85] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y
|
||||
Statement [1] (byte) frame_cnt ← (byte) 1 [ frame_cnt ] ( [ frame_cnt ] ) always clobbers reg byte a
|
||||
Statement [9] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ frame_cnt ] ( main:3 [ frame_cnt ] ) always clobbers reg byte a
|
||||
Statement [11] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ frame_cnt ] ( main:3 [ frame_cnt ] ) always clobbers reg byte a
|
||||
Statement [14] (word) bitmap_plot::x#0 ← (word) main::x#2 [ frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 bitmap_plot::x#0 ] ( main:3 [ frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 bitmap_plot::x#0 ] ) always clobbers reg byte a
|
||||
Statement [17] (word) main::x#1 ← (word) main::x#2 + (word) main::vx#2 [ frame_cnt main::y#2 main::vx#2 main::vy#2 main::x#1 ] ( main:3 [ frame_cnt main::y#2 main::vx#2 main::vy#2 main::x#1 ] ) always clobbers reg byte a
|
||||
Statement [18] (byte) main::y#1 ← (byte) main::y#2 + (byte) main::vy#2 [ frame_cnt main::vx#2 main::vy#2 main::x#1 main::y#1 ] ( main:3 [ frame_cnt main::vx#2 main::vy#2 main::x#1 main::y#1 ] ) always clobbers reg byte a
|
||||
Statement [19] if((word) main::x#1==(word) $13f) goto main::@5 [ frame_cnt main::vx#2 main::vy#2 main::x#1 main::y#1 ] ( main:3 [ frame_cnt main::vx#2 main::vy#2 main::x#1 main::y#1 ] ) always clobbers reg byte a
|
||||
Statement [20] if((word) main::x#1!=(byte) 0) goto main::@3 [ frame_cnt main::vx#2 main::vy#2 main::x#1 main::y#1 ] ( main:3 [ frame_cnt main::vx#2 main::vy#2 main::x#1 main::y#1 ] ) always clobbers reg byte a
|
||||
Statement [21] (word) main::vx#1 ← - (word) main::vx#2 [ frame_cnt main::vy#2 main::x#1 main::y#1 main::vx#1 ] ( main:3 [ frame_cnt main::vy#2 main::x#1 main::y#1 main::vx#1 ] ) always clobbers reg byte a
|
||||
Statement [23] if((byte) main::y#1==(byte) $c7) goto main::@6 [ frame_cnt main::vy#2 main::x#1 main::y#1 main::vx#6 ] ( main:3 [ frame_cnt main::vy#2 main::x#1 main::y#1 main::vx#6 ] ) always clobbers reg byte a
|
||||
Statement [24] if((byte) main::y#1!=(byte) 0) goto main::@4 [ frame_cnt main::vy#2 main::x#1 main::y#1 main::vx#6 ] ( main:3 [ frame_cnt main::vy#2 main::x#1 main::y#1 main::vx#6 ] ) always clobbers reg byte a
|
||||
Statement [25] (byte) main::vy#1 ← - (byte) main::vy#2 [ frame_cnt main::x#1 main::y#1 main::vx#6 main::vy#1 ] ( main:3 [ frame_cnt main::x#1 main::y#1 main::vx#6 main::vy#1 ] ) always clobbers reg byte a
|
||||
Statement [27] *((const byte*) plots_per_frame + (byte) frame_cnt) ← ++ *((const byte*) plots_per_frame + (byte) frame_cnt) [ frame_cnt main::x#1 main::y#1 main::vx#6 main::vy#8 ] ( main:3 [ frame_cnt main::x#1 main::y#1 main::vx#6 main::vy#8 ] ) always clobbers reg byte x
|
||||
Statement [28] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::plotter#0 ] ( main:3::bitmap_plot:16 [ frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 bitmap_plot::x#0 bitmap_plot::plotter#0 ] ) always clobbers reg byte a
|
||||
Statement [29] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word) $fff8 [ bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:3::bitmap_plot:16 [ frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] ) always clobbers reg byte a
|
||||
Statement [30] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:3::bitmap_plot:16 [ frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] ) always clobbers reg byte a
|
||||
Statement [31] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:3::bitmap_plot:16 [ frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a
|
||||
Statement [32] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( main:3::bitmap_plot:16 [ frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [35] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:3::init_irq:12 [ frame_cnt ] ) always clobbers reg byte a
|
||||
Statement [36] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( main:3::init_irq:12 [ frame_cnt ] ) always clobbers reg byte a
|
||||
Statement [37] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( main:3::init_irq:12 [ frame_cnt ] ) always clobbers reg byte a
|
||||
Statement [38] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (byte) $80 [ ] ( main:3::init_irq:12 [ frame_cnt ] ) always clobbers reg byte a
|
||||
Statement [39] *((const byte*) RASTER) ← (byte) 0 [ ] ( main:3::init_irq:12 [ frame_cnt ] ) always clobbers reg byte a
|
||||
Statement [40] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( main:3::init_irq:12 [ frame_cnt ] ) always clobbers reg byte a
|
||||
Statement [41] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() [ ] ( main:3::init_irq:12 [ frame_cnt ] ) always clobbers reg byte a
|
||||
Statement [50] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:3::bitmap_clear:8::memset:45 [ frame_cnt memset::num#2 memset::str#3 memset::c#4 ] main:3::bitmap_clear:8::memset:47 [ frame_cnt memset::num#2 memset::str#3 memset::c#4 ] ) always clobbers reg byte a
|
||||
Statement [51] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:3::bitmap_clear:8::memset:45 [ frame_cnt memset::str#3 memset::c#4 memset::end#0 ] main:3::bitmap_clear:8::memset:47 [ frame_cnt memset::str#3 memset::c#4 memset::end#0 ] ) always clobbers reg byte a
|
||||
Statement [52] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:3::bitmap_clear:8::memset:45 [ frame_cnt memset::c#4 memset::end#0 memset::dst#4 ] main:3::bitmap_clear:8::memset:47 [ frame_cnt memset::c#4 memset::end#0 memset::dst#4 ] ) always clobbers reg byte a
|
||||
Statement [54] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::bitmap_clear:8::memset:45 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] main:3::bitmap_clear:8::memset:47 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a
|
||||
Statement [56] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::bitmap_clear:8::memset:45 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] main:3::bitmap_clear:8::memset:47 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [68] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:3::bitmap_init:6 [ frame_cnt bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a
|
||||
Statement [75] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:3::bitmap_init:6 [ frame_cnt bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a
|
||||
Statement [80] *((const byte*) BGCOL) ← (const byte) WHITE [ frame_cnt ] ( [ frame_cnt ] ) always clobbers reg byte a
|
||||
Statement [81] if((byte) 0==(byte) frame_cnt) goto irq::@1 [ frame_cnt ] ( [ frame_cnt ] ) always clobbers reg byte a
|
||||
Statement [83] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] ) always clobbers reg byte a
|
||||
Statement [84] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] ) always clobbers reg byte a
|
||||
Statement [85] return [ ] ( [ ] ) always clobbers reg byte a reg byte x reg byte y
|
||||
Statement [80] *((const byte*) BGCOL) ← (const byte) WHITE [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [81] if((byte) 0==(byte) frame_cnt) goto irq::@1 [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [83] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [84] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [85] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y
|
||||
Statement [1] (byte) frame_cnt ← (byte) 1 [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [9] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [11] *((const byte*) D018) ← (const byte) main::toD0181_return#0 [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [14] (word) bitmap_plot::x#0 ← (word) main::x#2 [ frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 bitmap_plot::x#0 ] ( [ frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 bitmap_plot::x#0 ] { { bitmap_plot::x#0 = main::x#2 } } ) always clobbers reg byte a
|
||||
Statement [17] (word) main::x#1 ← (word) main::x#2 + (word) main::vx#2 [ frame_cnt main::y#2 main::vx#2 main::vy#2 main::x#1 ] ( [ frame_cnt main::y#2 main::vx#2 main::vy#2 main::x#1 ] { } ) always clobbers reg byte a
|
||||
Statement [18] (byte) main::y#1 ← (byte) main::y#2 + (byte) main::vy#2 [ frame_cnt main::vx#2 main::vy#2 main::x#1 main::y#1 ] ( [ frame_cnt main::vx#2 main::vy#2 main::x#1 main::y#1 ] { } ) always clobbers reg byte a
|
||||
Statement [19] if((word) main::x#1==(word) $13f) goto main::@5 [ frame_cnt main::vx#2 main::vy#2 main::x#1 main::y#1 ] ( [ frame_cnt main::vx#2 main::vy#2 main::x#1 main::y#1 ] { } ) always clobbers reg byte a
|
||||
Statement [20] if((word) main::x#1!=(byte) 0) goto main::@3 [ frame_cnt main::vx#2 main::vy#2 main::x#1 main::y#1 ] ( [ frame_cnt main::vx#2 main::vy#2 main::x#1 main::y#1 ] { } ) always clobbers reg byte a
|
||||
Statement [21] (word) main::vx#1 ← - (word) main::vx#2 [ frame_cnt main::vy#2 main::x#1 main::y#1 main::vx#1 ] ( [ frame_cnt main::vy#2 main::x#1 main::y#1 main::vx#1 ] { } ) always clobbers reg byte a
|
||||
Statement [23] if((byte) main::y#1==(byte) $c7) goto main::@6 [ frame_cnt main::vy#2 main::x#1 main::y#1 main::vx#6 ] ( [ frame_cnt main::vy#2 main::x#1 main::y#1 main::vx#6 ] { } ) always clobbers reg byte a
|
||||
Statement [24] if((byte) main::y#1!=(byte) 0) goto main::@4 [ frame_cnt main::vy#2 main::x#1 main::y#1 main::vx#6 ] ( [ frame_cnt main::vy#2 main::x#1 main::y#1 main::vx#6 ] { } ) always clobbers reg byte a
|
||||
Statement [25] (byte) main::vy#1 ← - (byte) main::vy#2 [ frame_cnt main::x#1 main::y#1 main::vx#6 main::vy#1 ] ( [ frame_cnt main::x#1 main::y#1 main::vx#6 main::vy#1 ] { } ) always clobbers reg byte a
|
||||
Statement [27] *((const byte*) plots_per_frame + (byte) frame_cnt) ← ++ *((const byte*) plots_per_frame + (byte) frame_cnt) [ frame_cnt main::x#1 main::y#1 main::vx#6 main::vy#8 ] ( [ frame_cnt main::x#1 main::y#1 main::vx#6 main::vy#8 ] { } ) always clobbers reg byte x
|
||||
Statement [28] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::plotter#0 ] ( [ bitmap_plot::x#0 bitmap_plot::plotter#0 frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 ] { } ) always clobbers reg byte a
|
||||
Statement [29] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word) $fff8 [ bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( [ bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 ] { } ) always clobbers reg byte a
|
||||
Statement [30] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( [ bitmap_plot::x#0 bitmap_plot::plotter#1 frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 ] { } ) always clobbers reg byte a
|
||||
Statement [32] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) [ ] ( [ frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Statement [35] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK [ ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [36] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO [ ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [37] *((const byte*) CIA1_INTERRUPT) ← (const byte) CIA_INTERRUPT_CLEAR [ ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [38] *((const byte*) VIC_CONTROL) ← *((const byte*) VIC_CONTROL) | (byte) $80 [ ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [39] *((const byte*) RASTER) ← (byte) 0 [ ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [40] *((const byte*) IRQ_ENABLE) ← (const byte) IRQ_RASTER [ ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [41] *((const void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() [ ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [50] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( [ memset::num#2 memset::str#3 memset::c#4 frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [51] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( [ memset::str#3 memset::c#4 memset::end#0 frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [52] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( [ memset::c#4 memset::end#0 memset::dst#4 frame_cnt ] { { memset::dst#4 = memset::str#3 } } ) always clobbers reg byte a
|
||||
Statement [54] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( [ memset::c#4 memset::end#0 memset::dst#2 frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [56] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( [ memset::c#4 memset::end#0 memset::dst#2 frame_cnt ] { } ) always clobbers reg byte a reg byte y
|
||||
Statement [68] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [75] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( [ bitmap_init::y#2 bitmap_init::yoffs#1 frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [80] *((const byte*) BGCOL) ← (const byte) WHITE [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [81] if((byte) 0==(byte) frame_cnt) goto irq::@1 [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [83] *((const byte*) BGCOL) ← (const byte) BLACK [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [84] *((const byte*) IRQ_STATUS) ← (const byte) IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [85] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y
|
||||
Potential registers zp[2]:2 [ main::x#2 main::x#1 ] : zp[2]:2 ,
|
||||
Potential registers zp[1]:4 [ main::y#2 main::y#1 ] : zp[1]:4 ,
|
||||
Potential registers zp[2]:5 [ main::vx#2 main::vx#6 main::vx#1 ] : zp[2]:5 ,
|
||||
@ -2275,47 +2273,47 @@ Potential registers zp[1]:35 [ bitmap_init::$5 ] : zp[1]:35 , reg byte a , reg b
|
||||
Potential registers zp[1]:36 [ bitmap_init::$6 ] : zp[1]:36 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [bitmap_init] 39.88: zp[2]:18 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 34.83: zp[1]:15 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 22: zp[1]:16 [ bitmap_init::x#2 bitmap_init::x#1 ] 22: zp[1]:17 [ bitmap_init::y#2 bitmap_init::y#1 ] 22: zp[1]:34 [ bitmap_init::$4 ] 22: zp[1]:35 [ bitmap_init::$5 ] 22: zp[1]:36 [ bitmap_init::$6 ] 5.5: zp[1]:33 [ bitmap_init::$7 ]
|
||||
Uplift Scope [main] 42.17: zp[1]:7 [ main::vy#2 main::vy#8 main::vy#1 ] 33: zp[2]:5 [ main::vx#2 main::vx#6 main::vx#1 ] 12.25: zp[2]:2 [ main::x#2 main::x#1 ] 11: zp[1]:4 [ main::y#2 main::y#1 ]
|
||||
Uplift Scope [memset] 41.33: zp[2]:13 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 2.17: zp[2]:31 [ memset::end#0 ] 2: zp[2]:8 [ memset::num#2 ] 1.38: zp[1]:12 [ memset::c#4 ] 0: zp[2]:10 [ memset::str#3 ]
|
||||
Uplift Scope [bitmap_plot] 15: zp[1]:23 [ bitmap_plot::y#0 ] 4: zp[2]:26 [ bitmap_plot::$1 ] 4: zp[1]:30 [ bitmap_plot::$2 ] 3: zp[2]:21 [ bitmap_plot::x#0 ] 3: zp[2]:28 [ bitmap_plot::plotter#1 ] 1: zp[2]:24 [ bitmap_plot::plotter#0 ]
|
||||
Uplift Scope [] 1.11: zp[1]:20 [ frame_cnt ]
|
||||
Uplift Scope [memset] 35,672.33: zp[2]:13 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 1,833.67: zp[2]:31 [ memset::end#0 ] 1,250.12: zp[1]:12 [ memset::c#4 ] 1,001: zp[2]:8 [ memset::num#2 ] 0: zp[2]:10 [ memset::str#3 ]
|
||||
Uplift Scope [bitmap_init] 3,628.62: zp[2]:18 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 3,169.83: zp[1]:15 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 2,002: zp[1]:16 [ bitmap_init::x#2 bitmap_init::x#1 ] 2,002: zp[1]:17 [ bitmap_init::y#2 bitmap_init::y#1 ] 2,002: zp[1]:34 [ bitmap_init::$4 ] 2,002: zp[1]:35 [ bitmap_init::$5 ] 2,002: zp[1]:36 [ bitmap_init::$6 ] 500.5: zp[1]:33 [ bitmap_init::$7 ]
|
||||
Uplift Scope [bitmap_plot] 2,103: zp[1]:23 [ bitmap_plot::y#0 ] 2,002: zp[2]:26 [ bitmap_plot::$1 ] 2,002: zp[1]:30 [ bitmap_plot::$2 ] 1,501.5: zp[2]:28 [ bitmap_plot::plotter#1 ] 500.5: zp[2]:24 [ bitmap_plot::plotter#0 ] 420.6: zp[2]:21 [ bitmap_plot::x#0 ]
|
||||
Uplift Scope [main] 387.17: zp[1]:7 [ main::vy#2 main::vy#8 main::vy#1 ] 303: zp[2]:5 [ main::vx#2 main::vx#6 main::vx#1 ] 112.48: zp[2]:2 [ main::x#2 main::x#1 ] 101: zp[1]:4 [ main::y#2 main::y#1 ]
|
||||
Uplift Scope [] 7.78: zp[1]:20 [ frame_cnt ]
|
||||
Uplift Scope [bitmap_clear]
|
||||
Uplift Scope [init_irq]
|
||||
Uplift Scope [irq]
|
||||
|
||||
Uplifting [bitmap_init] best 4371 combination zp[2]:18 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:35 [ bitmap_init::$5 ] zp[1]:36 [ bitmap_init::$6 ] zp[1]:33 [ bitmap_init::$7 ]
|
||||
Uplifting [memset] best 4865 combination zp[2]:13 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:31 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:8 [ memset::num#2 ] zp[2]:10 [ memset::str#3 ]
|
||||
Uplifting [bitmap_init] best 4355 combination zp[2]:18 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:35 [ bitmap_init::$5 ] zp[1]:36 [ bitmap_init::$6 ] zp[1]:33 [ bitmap_init::$7 ]
|
||||
Limited combination testing to 100 combinations of 15360 possible.
|
||||
Uplifting [main] best 4371 combination zp[1]:7 [ main::vy#2 main::vy#8 main::vy#1 ] zp[2]:5 [ main::vx#2 main::vx#6 main::vx#1 ] zp[2]:2 [ main::x#2 main::x#1 ] zp[1]:4 [ main::y#2 main::y#1 ]
|
||||
Uplifting [memset] best 4355 combination zp[2]:13 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:31 [ memset::end#0 ] zp[2]:8 [ memset::num#2 ] reg byte x [ memset::c#4 ] zp[2]:10 [ memset::str#3 ]
|
||||
Uplifting [bitmap_plot] best 4318 combination reg byte x [ bitmap_plot::y#0 ] zp[2]:26 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp[2]:21 [ bitmap_plot::x#0 ] zp[2]:28 [ bitmap_plot::plotter#1 ] zp[2]:24 [ bitmap_plot::plotter#0 ]
|
||||
Uplifting [] best 4318 combination zp[1]:20 [ frame_cnt ]
|
||||
Uplifting [bitmap_clear] best 4318 combination
|
||||
Uplifting [init_irq] best 4318 combination
|
||||
Uplifting [irq] best 4318 combination
|
||||
Attempting to uplift remaining variables inzp[1]:7 [ main::vy#2 main::vy#8 main::vy#1 ]
|
||||
Uplifting [main] best 4318 combination zp[1]:7 [ main::vy#2 main::vy#8 main::vy#1 ]
|
||||
Uplifting [bitmap_plot] best 4316 combination reg byte x [ bitmap_plot::y#0 ] zp[2]:26 [ bitmap_plot::$1 ] reg byte x [ bitmap_plot::$2 ] zp[2]:28 [ bitmap_plot::plotter#1 ] zp[2]:24 [ bitmap_plot::plotter#0 ] zp[2]:21 [ bitmap_plot::x#0 ]
|
||||
Uplifting [main] best 4316 combination zp[1]:7 [ main::vy#2 main::vy#8 main::vy#1 ] zp[2]:5 [ main::vx#2 main::vx#6 main::vx#1 ] zp[2]:2 [ main::x#2 main::x#1 ] zp[1]:4 [ main::y#2 main::y#1 ]
|
||||
Uplifting [] best 4316 combination zp[1]:20 [ frame_cnt ]
|
||||
Uplifting [bitmap_clear] best 4316 combination
|
||||
Uplifting [init_irq] best 4316 combination
|
||||
Uplifting [irq] best 4316 combination
|
||||
Attempting to uplift remaining variables inzp[1]:35 [ bitmap_init::$5 ]
|
||||
Uplifting [bitmap_init] best 4258 combination reg byte a [ bitmap_init::$5 ]
|
||||
Uplifting [bitmap_init] best 4256 combination reg byte a [ bitmap_init::$5 ]
|
||||
Attempting to uplift remaining variables inzp[1]:36 [ bitmap_init::$6 ]
|
||||
Uplifting [bitmap_init] best 4198 combination reg byte a [ bitmap_init::$6 ]
|
||||
Attempting to uplift remaining variables inzp[1]:4 [ main::y#2 main::y#1 ]
|
||||
Uplifting [main] best 4198 combination zp[1]:4 [ main::y#2 main::y#1 ]
|
||||
Uplifting [bitmap_init] best 4196 combination reg byte a [ bitmap_init::$6 ]
|
||||
Attempting to uplift remaining variables inzp[1]:33 [ bitmap_init::$7 ]
|
||||
Uplifting [bitmap_init] best 4198 combination zp[1]:33 [ bitmap_init::$7 ]
|
||||
Uplifting [bitmap_init] best 4196 combination zp[1]:33 [ bitmap_init::$7 ]
|
||||
Attempting to uplift remaining variables inzp[1]:7 [ main::vy#2 main::vy#8 main::vy#1 ]
|
||||
Uplifting [main] best 4196 combination zp[1]:7 [ main::vy#2 main::vy#8 main::vy#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:4 [ main::y#2 main::y#1 ]
|
||||
Uplifting [main] best 4196 combination zp[1]:4 [ main::y#2 main::y#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:20 [ frame_cnt ]
|
||||
Uplifting [] best 4198 combination zp[1]:20 [ frame_cnt ]
|
||||
Coalescing zero page register [ zp[2]:2 [ main::x#2 main::x#1 ] ] with [ zp[2]:21 [ bitmap_plot::x#0 ] ] - score: 1
|
||||
Uplifting [] best 4196 combination zp[1]:20 [ frame_cnt ]
|
||||
Coalescing zero page register [ zp[2]:8 [ memset::num#2 ] ] with [ zp[2]:31 [ memset::end#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:10 [ memset::str#3 ] ] with [ zp[2]:13 [ memset::dst#2 memset::dst#4 memset::dst#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:24 [ bitmap_plot::plotter#0 ] ] with [ zp[2]:28 [ bitmap_plot::plotter#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:18 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ] with [ zp[2]:8 [ memset::num#2 memset::end#0 ] ]
|
||||
Coalescing zero page register [ zp[2]:24 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ] ] with [ zp[2]:10 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:26 [ bitmap_plot::$1 ] ] with [ zp[2]:18 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 memset::num#2 memset::end#0 ] ]
|
||||
Coalescing zero page register [ zp[2]:21 [ bitmap_plot::x#0 ] ] with [ zp[2]:10 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:24 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ] ] with [ zp[2]:18 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 memset::num#2 memset::end#0 ] ]
|
||||
Allocated (was zp[1]:20) zp[1]:8 [ frame_cnt ]
|
||||
Allocated (was zp[2]:24) zp[2]:9 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
Allocated (was zp[2]:26) zp[2]:11 [ bitmap_plot::$1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 memset::num#2 memset::end#0 ]
|
||||
Allocated (was zp[1]:33) zp[1]:13 [ bitmap_init::$7 ]
|
||||
Allocated (was zp[2]:21) zp[2]:9 [ bitmap_plot::x#0 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
Allocated (was zp[2]:24) zp[2]:11 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 memset::num#2 memset::end#0 ]
|
||||
Allocated (was zp[2]:26) zp[2]:13 [ bitmap_plot::$1 ]
|
||||
Allocated (was zp[1]:33) zp[1]:15 [ bitmap_init::$7 ]
|
||||
Interrupt procedure irq clobbers ACNZ
|
||||
Removing interrupt register storage stx regx+1 in 154 entry interrupt(HARDWARE_CLOBBER)
|
||||
Removing interrupt register storage sty regy+1 in 154 entry interrupt(HARDWARE_CLOBBER)
|
||||
@ -2453,7 +2451,11 @@ main: {
|
||||
jmp __b2
|
||||
// main::@2
|
||||
__b2:
|
||||
// [14] (word) bitmap_plot::x#0 ← (word) main::x#2
|
||||
// [14] (word) bitmap_plot::x#0 ← (word) main::x#2 -- vwuz1=vwuz2
|
||||
lda.z x
|
||||
sta.z bitmap_plot.x
|
||||
lda.z x+1
|
||||
sta.z bitmap_plot.x+1
|
||||
// [15] (byte) bitmap_plot::y#0 ← (byte) main::y#2 -- vbuxx=vbuz1
|
||||
ldx.z y
|
||||
// [16] call bitmap_plot
|
||||
@ -2548,11 +2550,11 @@ main: {
|
||||
}
|
||||
// bitmap_plot
|
||||
// Plot a single dot in the bitmap
|
||||
// bitmap_plot(word zp(2) x, byte register(X) y)
|
||||
// bitmap_plot(word zp(9) x, byte register(X) y)
|
||||
bitmap_plot: {
|
||||
.label __1 = $b
|
||||
.label plotter = 9
|
||||
.label x = 2
|
||||
.label __1 = $d
|
||||
.label plotter = $b
|
||||
.label x = 9
|
||||
// [28] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx
|
||||
lda bitmap_plot_yhi,x
|
||||
sta.z plotter+1
|
||||
@ -2573,11 +2575,10 @@ bitmap_plot: {
|
||||
lda.z plotter+1
|
||||
adc.z __1+1
|
||||
sta.z plotter+1
|
||||
// [31] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuaa=_lo_vwuz1
|
||||
lda.z x
|
||||
// [32] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa
|
||||
tay
|
||||
lda bitmap_plot_bit,y
|
||||
// [31] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuxx=_lo_vwuz1
|
||||
ldx.z x
|
||||
// [32] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx
|
||||
lda bitmap_plot_bit,x
|
||||
ldy #0
|
||||
ora (plotter),y
|
||||
ldy #0
|
||||
@ -2740,7 +2741,7 @@ memset: {
|
||||
// bitmap_init
|
||||
// Initialize bitmap plotting tables
|
||||
bitmap_init: {
|
||||
.label __7 = $d
|
||||
.label __7 = $f
|
||||
.label yoffs = $b
|
||||
// [59] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1]
|
||||
__b1_from_bitmap_init:
|
||||
@ -3032,10 +3033,10 @@ FINAL SYMBOL TABLE
|
||||
(byte) bitmap_clear::fgcol
|
||||
(byte*) bitmap_gfx
|
||||
(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen)
|
||||
(byte~) bitmap_init::$4 reg byte a 22.0
|
||||
(byte~) bitmap_init::$5 reg byte a 22.0
|
||||
(byte~) bitmap_init::$6 reg byte a 22.0
|
||||
(byte~) bitmap_init::$7 zp[1]:13 5.5
|
||||
(byte~) bitmap_init::$4 reg byte a 2002.0
|
||||
(byte~) bitmap_init::$5 reg byte a 2002.0
|
||||
(byte~) bitmap_init::$6 reg byte a 2002.0
|
||||
(byte~) bitmap_init::$7 zp[1]:15 500.5
|
||||
(label) bitmap_init::@1
|
||||
(label) bitmap_init::@2
|
||||
(label) bitmap_init::@3
|
||||
@ -3044,37 +3045,37 @@ FINAL SYMBOL TABLE
|
||||
(label) bitmap_init::@6
|
||||
(label) bitmap_init::@return
|
||||
(byte) bitmap_init::bits
|
||||
(byte) bitmap_init::bits#1 reg byte a 11.0
|
||||
(byte) bitmap_init::bits#3 reg byte a 16.5
|
||||
(byte) bitmap_init::bits#4 reg byte a 7.333333333333333
|
||||
(byte) bitmap_init::bits#1 reg byte a 1001.0
|
||||
(byte) bitmap_init::bits#3 reg byte a 1501.5
|
||||
(byte) bitmap_init::bits#4 reg byte a 667.3333333333334
|
||||
(byte*) bitmap_init::gfx
|
||||
(byte*) bitmap_init::screen
|
||||
(byte) bitmap_init::x
|
||||
(byte) bitmap_init::x#1 reg byte x 16.5
|
||||
(byte) bitmap_init::x#2 reg byte x 5.5
|
||||
(byte) bitmap_init::x#1 reg byte x 1501.5
|
||||
(byte) bitmap_init::x#2 reg byte x 500.5
|
||||
(byte) bitmap_init::y
|
||||
(byte) bitmap_init::y#1 reg byte x 16.5
|
||||
(byte) bitmap_init::y#2 reg byte x 5.5
|
||||
(byte) bitmap_init::y#1 reg byte x 1501.5
|
||||
(byte) bitmap_init::y#2 reg byte x 500.5
|
||||
(byte*) bitmap_init::yoffs
|
||||
(byte*) bitmap_init::yoffs#1 yoffs zp[2]:11 22.0
|
||||
(byte*) bitmap_init::yoffs#2 yoffs zp[2]:11 6.875
|
||||
(byte*) bitmap_init::yoffs#4 yoffs zp[2]:11 11.0
|
||||
(byte*) bitmap_init::yoffs#1 yoffs zp[2]:11 2002.0
|
||||
(byte*) bitmap_init::yoffs#2 yoffs zp[2]:11 625.625
|
||||
(byte*) bitmap_init::yoffs#4 yoffs zp[2]:11 1001.0
|
||||
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
|
||||
(word~) bitmap_plot::$1 zp[2]:11 4.0
|
||||
(byte~) bitmap_plot::$2 reg byte a 4.0
|
||||
(word~) bitmap_plot::$1 zp[2]:13 2002.0
|
||||
(byte~) bitmap_plot::$2 reg byte x 2002.0
|
||||
(label) bitmap_plot::@return
|
||||
(byte*) bitmap_plot::plotter
|
||||
(word) bitmap_plot::plotter#0 plotter zp[2]:9 1.0
|
||||
(byte*) bitmap_plot::plotter#1 plotter zp[2]:9 3.0
|
||||
(word) bitmap_plot::plotter#0 plotter zp[2]:11 500.5
|
||||
(byte*) bitmap_plot::plotter#1 plotter zp[2]:11 1501.5
|
||||
(word) bitmap_plot::x
|
||||
(word) bitmap_plot::x#0 x zp[2]:2 3.0
|
||||
(word) bitmap_plot::x#0 x zp[2]:9 420.59999999999997
|
||||
(byte) bitmap_plot::y
|
||||
(byte) bitmap_plot::y#0 reg byte x 15.0
|
||||
(byte) bitmap_plot::y#0 reg byte x 2103.0
|
||||
(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
|
||||
(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
|
||||
(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
|
||||
(byte*) bitmap_screen
|
||||
(byte) frame_cnt loadstore zp[1]:8 1.1111111111111112
|
||||
(byte) frame_cnt loadstore zp[1]:8 7.777777777777779
|
||||
(void()) init_irq()
|
||||
(label) init_irq::@return
|
||||
interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
@ -3100,40 +3101,40 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
(const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) SCREEN&(word) $3fff*(byte) 4|>(word)(const byte*) BITMAP/(byte) 4&(byte) $f
|
||||
(byte*) main::toD0181_screen
|
||||
(word) main::vx
|
||||
(word) main::vx#1 vx zp[2]:5 22.0
|
||||
(word) main::vx#2 vx zp[2]:5 5.5
|
||||
(word) main::vx#6 vx zp[2]:5 5.5
|
||||
(word) main::vx#1 vx zp[2]:5 202.0
|
||||
(word) main::vx#2 vx zp[2]:5 50.5
|
||||
(word) main::vx#6 vx zp[2]:5 50.5
|
||||
(byte) main::vy
|
||||
(byte) main::vy#1 vy zp[1]:7 22.0
|
||||
(byte) main::vy#2 vy zp[1]:7 3.6666666666666665
|
||||
(byte) main::vy#8 vy zp[1]:7 16.5
|
||||
(byte) main::vy#1 vy zp[1]:7 202.0
|
||||
(byte) main::vy#2 vy zp[1]:7 33.666666666666664
|
||||
(byte) main::vy#8 vy zp[1]:7 151.5
|
||||
(word) main::x
|
||||
(word) main::x#1 x zp[2]:2 4.0
|
||||
(word) main::x#2 x zp[2]:2 8.25
|
||||
(word) main::x#1 x zp[2]:2 36.72727272727273
|
||||
(word) main::x#2 x zp[2]:2 75.75
|
||||
(byte) main::y
|
||||
(byte) main::y#1 y zp[1]:4 4.4
|
||||
(byte) main::y#2 y zp[1]:4 6.6000000000000005
|
||||
(byte) main::y#1 y zp[1]:4 40.4
|
||||
(byte) main::y#2 y zp[1]:4 60.599999999999994
|
||||
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
||||
(label) memset::@1
|
||||
(label) memset::@2
|
||||
(label) memset::@3
|
||||
(label) memset::@return
|
||||
(byte) memset::c
|
||||
(byte) memset::c#4 reg byte x 1.375
|
||||
(byte) memset::c#4 reg byte x 1250.125
|
||||
(byte*) memset::dst
|
||||
(byte*) memset::dst#1 dst zp[2]:9 22.0
|
||||
(byte*) memset::dst#2 dst zp[2]:9 15.333333333333332
|
||||
(byte*) memset::dst#4 dst zp[2]:9 4.0
|
||||
(byte*) memset::dst#1 dst zp[2]:9 20002.0
|
||||
(byte*) memset::dst#2 dst zp[2]:9 13668.333333333332
|
||||
(byte*) memset::dst#4 dst zp[2]:9 2002.0
|
||||
(byte*) memset::end
|
||||
(byte*) memset::end#0 end zp[2]:11 2.1666666666666665
|
||||
(byte*) memset::end#0 end zp[2]:11 1833.6666666666665
|
||||
(word) memset::num
|
||||
(word) memset::num#2 num zp[2]:11 2.0
|
||||
(word) memset::num#2 num zp[2]:11 1001.0
|
||||
(void*) memset::return
|
||||
(void*) memset::str
|
||||
(void*) memset::str#3 str zp[2]:9
|
||||
(const byte*) plots_per_frame[(number) $100] = { fill( $100, 0) }
|
||||
|
||||
zp[2]:2 [ main::x#2 main::x#1 bitmap_plot::x#0 ]
|
||||
zp[2]:2 [ main::x#2 main::x#1 ]
|
||||
zp[1]:4 [ main::y#2 main::y#1 ]
|
||||
zp[2]:5 [ main::vx#2 main::vx#6 main::vx#1 ]
|
||||
zp[1]:7 [ main::vy#2 main::vy#8 main::vy#1 ]
|
||||
@ -3142,18 +3143,19 @@ reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
||||
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
|
||||
reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
zp[1]:8 [ frame_cnt ]
|
||||
zp[2]:9 [ bitmap_plot::x#0 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
reg byte x [ bitmap_plot::y#0 ]
|
||||
zp[2]:9 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
zp[2]:11 [ bitmap_plot::$1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 memset::num#2 memset::end#0 ]
|
||||
reg byte a [ bitmap_plot::$2 ]
|
||||
zp[1]:13 [ bitmap_init::$7 ]
|
||||
zp[2]:11 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 memset::num#2 memset::end#0 ]
|
||||
zp[2]:13 [ bitmap_plot::$1 ]
|
||||
reg byte x [ bitmap_plot::$2 ]
|
||||
zp[1]:15 [ bitmap_init::$7 ]
|
||||
reg byte a [ bitmap_init::$4 ]
|
||||
reg byte a [ bitmap_init::$5 ]
|
||||
reg byte a [ bitmap_init::$6 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 3177
|
||||
Score: 3295
|
||||
|
||||
// File Comments
|
||||
// Tests the simple bitmap plotter - and counts plots per frame in an IRQ
|
||||
@ -3262,7 +3264,11 @@ main: {
|
||||
// main::@2
|
||||
__b2:
|
||||
// bitmap_plot(x, y)
|
||||
// [14] (word) bitmap_plot::x#0 ← (word) main::x#2
|
||||
// [14] (word) bitmap_plot::x#0 ← (word) main::x#2 -- vwuz1=vwuz2
|
||||
lda.z x
|
||||
sta.z bitmap_plot.x
|
||||
lda.z x+1
|
||||
sta.z bitmap_plot.x+1
|
||||
// [15] (byte) bitmap_plot::y#0 ← (byte) main::y#2 -- vbuxx=vbuz1
|
||||
ldx.z y
|
||||
// [16] call bitmap_plot
|
||||
@ -3349,11 +3355,11 @@ main: {
|
||||
}
|
||||
// bitmap_plot
|
||||
// Plot a single dot in the bitmap
|
||||
// bitmap_plot(word zp(2) x, byte register(X) y)
|
||||
// bitmap_plot(word zp(9) x, byte register(X) y)
|
||||
bitmap_plot: {
|
||||
.label __1 = $b
|
||||
.label plotter = 9
|
||||
.label x = 2
|
||||
.label __1 = $d
|
||||
.label plotter = $b
|
||||
.label x = 9
|
||||
// (byte*) { bitmap_plot_yhi[y], bitmap_plot_ylo[y] }
|
||||
// [28] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx
|
||||
lda bitmap_plot_yhi,x
|
||||
@ -3378,12 +3384,11 @@ bitmap_plot: {
|
||||
adc.z __1+1
|
||||
sta.z plotter+1
|
||||
// <x
|
||||
// [31] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuaa=_lo_vwuz1
|
||||
lda.z x
|
||||
// [31] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuxx=_lo_vwuz1
|
||||
ldx.z x
|
||||
// *plotter |= bitmap_plot_bit[<x]
|
||||
// [32] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa
|
||||
tay
|
||||
lda bitmap_plot_bit,y
|
||||
// [32] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx
|
||||
lda bitmap_plot_bit,x
|
||||
ldy #0
|
||||
ora (plotter),y
|
||||
sta (plotter),y
|
||||
@ -3548,7 +3553,7 @@ memset: {
|
||||
// bitmap_init
|
||||
// Initialize bitmap plotting tables
|
||||
bitmap_init: {
|
||||
.label __7 = $d
|
||||
.label __7 = $f
|
||||
.label yoffs = $b
|
||||
// [59] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1]
|
||||
// [59] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1
|
||||
|
@ -33,10 +33,10 @@
|
||||
(byte) bitmap_clear::fgcol
|
||||
(byte*) bitmap_gfx
|
||||
(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen)
|
||||
(byte~) bitmap_init::$4 reg byte a 22.0
|
||||
(byte~) bitmap_init::$5 reg byte a 22.0
|
||||
(byte~) bitmap_init::$6 reg byte a 22.0
|
||||
(byte~) bitmap_init::$7 zp[1]:13 5.5
|
||||
(byte~) bitmap_init::$4 reg byte a 2002.0
|
||||
(byte~) bitmap_init::$5 reg byte a 2002.0
|
||||
(byte~) bitmap_init::$6 reg byte a 2002.0
|
||||
(byte~) bitmap_init::$7 zp[1]:15 500.5
|
||||
(label) bitmap_init::@1
|
||||
(label) bitmap_init::@2
|
||||
(label) bitmap_init::@3
|
||||
@ -45,37 +45,37 @@
|
||||
(label) bitmap_init::@6
|
||||
(label) bitmap_init::@return
|
||||
(byte) bitmap_init::bits
|
||||
(byte) bitmap_init::bits#1 reg byte a 11.0
|
||||
(byte) bitmap_init::bits#3 reg byte a 16.5
|
||||
(byte) bitmap_init::bits#4 reg byte a 7.333333333333333
|
||||
(byte) bitmap_init::bits#1 reg byte a 1001.0
|
||||
(byte) bitmap_init::bits#3 reg byte a 1501.5
|
||||
(byte) bitmap_init::bits#4 reg byte a 667.3333333333334
|
||||
(byte*) bitmap_init::gfx
|
||||
(byte*) bitmap_init::screen
|
||||
(byte) bitmap_init::x
|
||||
(byte) bitmap_init::x#1 reg byte x 16.5
|
||||
(byte) bitmap_init::x#2 reg byte x 5.5
|
||||
(byte) bitmap_init::x#1 reg byte x 1501.5
|
||||
(byte) bitmap_init::x#2 reg byte x 500.5
|
||||
(byte) bitmap_init::y
|
||||
(byte) bitmap_init::y#1 reg byte x 16.5
|
||||
(byte) bitmap_init::y#2 reg byte x 5.5
|
||||
(byte) bitmap_init::y#1 reg byte x 1501.5
|
||||
(byte) bitmap_init::y#2 reg byte x 500.5
|
||||
(byte*) bitmap_init::yoffs
|
||||
(byte*) bitmap_init::yoffs#1 yoffs zp[2]:11 22.0
|
||||
(byte*) bitmap_init::yoffs#2 yoffs zp[2]:11 6.875
|
||||
(byte*) bitmap_init::yoffs#4 yoffs zp[2]:11 11.0
|
||||
(byte*) bitmap_init::yoffs#1 yoffs zp[2]:11 2002.0
|
||||
(byte*) bitmap_init::yoffs#2 yoffs zp[2]:11 625.625
|
||||
(byte*) bitmap_init::yoffs#4 yoffs zp[2]:11 1001.0
|
||||
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
|
||||
(word~) bitmap_plot::$1 zp[2]:11 4.0
|
||||
(byte~) bitmap_plot::$2 reg byte a 4.0
|
||||
(word~) bitmap_plot::$1 zp[2]:13 2002.0
|
||||
(byte~) bitmap_plot::$2 reg byte x 2002.0
|
||||
(label) bitmap_plot::@return
|
||||
(byte*) bitmap_plot::plotter
|
||||
(word) bitmap_plot::plotter#0 plotter zp[2]:9 1.0
|
||||
(byte*) bitmap_plot::plotter#1 plotter zp[2]:9 3.0
|
||||
(word) bitmap_plot::plotter#0 plotter zp[2]:11 500.5
|
||||
(byte*) bitmap_plot::plotter#1 plotter zp[2]:11 1501.5
|
||||
(word) bitmap_plot::x
|
||||
(word) bitmap_plot::x#0 x zp[2]:2 3.0
|
||||
(word) bitmap_plot::x#0 x zp[2]:9 420.59999999999997
|
||||
(byte) bitmap_plot::y
|
||||
(byte) bitmap_plot::y#0 reg byte x 15.0
|
||||
(byte) bitmap_plot::y#0 reg byte x 2103.0
|
||||
(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
|
||||
(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
|
||||
(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
|
||||
(byte*) bitmap_screen
|
||||
(byte) frame_cnt loadstore zp[1]:8 1.1111111111111112
|
||||
(byte) frame_cnt loadstore zp[1]:8 7.777777777777779
|
||||
(void()) init_irq()
|
||||
(label) init_irq::@return
|
||||
interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
@ -101,40 +101,40 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
(const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) SCREEN&(word) $3fff*(byte) 4|>(word)(const byte*) BITMAP/(byte) 4&(byte) $f
|
||||
(byte*) main::toD0181_screen
|
||||
(word) main::vx
|
||||
(word) main::vx#1 vx zp[2]:5 22.0
|
||||
(word) main::vx#2 vx zp[2]:5 5.5
|
||||
(word) main::vx#6 vx zp[2]:5 5.5
|
||||
(word) main::vx#1 vx zp[2]:5 202.0
|
||||
(word) main::vx#2 vx zp[2]:5 50.5
|
||||
(word) main::vx#6 vx zp[2]:5 50.5
|
||||
(byte) main::vy
|
||||
(byte) main::vy#1 vy zp[1]:7 22.0
|
||||
(byte) main::vy#2 vy zp[1]:7 3.6666666666666665
|
||||
(byte) main::vy#8 vy zp[1]:7 16.5
|
||||
(byte) main::vy#1 vy zp[1]:7 202.0
|
||||
(byte) main::vy#2 vy zp[1]:7 33.666666666666664
|
||||
(byte) main::vy#8 vy zp[1]:7 151.5
|
||||
(word) main::x
|
||||
(word) main::x#1 x zp[2]:2 4.0
|
||||
(word) main::x#2 x zp[2]:2 8.25
|
||||
(word) main::x#1 x zp[2]:2 36.72727272727273
|
||||
(word) main::x#2 x zp[2]:2 75.75
|
||||
(byte) main::y
|
||||
(byte) main::y#1 y zp[1]:4 4.4
|
||||
(byte) main::y#2 y zp[1]:4 6.6000000000000005
|
||||
(byte) main::y#1 y zp[1]:4 40.4
|
||||
(byte) main::y#2 y zp[1]:4 60.599999999999994
|
||||
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
||||
(label) memset::@1
|
||||
(label) memset::@2
|
||||
(label) memset::@3
|
||||
(label) memset::@return
|
||||
(byte) memset::c
|
||||
(byte) memset::c#4 reg byte x 1.375
|
||||
(byte) memset::c#4 reg byte x 1250.125
|
||||
(byte*) memset::dst
|
||||
(byte*) memset::dst#1 dst zp[2]:9 22.0
|
||||
(byte*) memset::dst#2 dst zp[2]:9 15.333333333333332
|
||||
(byte*) memset::dst#4 dst zp[2]:9 4.0
|
||||
(byte*) memset::dst#1 dst zp[2]:9 20002.0
|
||||
(byte*) memset::dst#2 dst zp[2]:9 13668.333333333332
|
||||
(byte*) memset::dst#4 dst zp[2]:9 2002.0
|
||||
(byte*) memset::end
|
||||
(byte*) memset::end#0 end zp[2]:11 2.1666666666666665
|
||||
(byte*) memset::end#0 end zp[2]:11 1833.6666666666665
|
||||
(word) memset::num
|
||||
(word) memset::num#2 num zp[2]:11 2.0
|
||||
(word) memset::num#2 num zp[2]:11 1001.0
|
||||
(void*) memset::return
|
||||
(void*) memset::str
|
||||
(void*) memset::str#3 str zp[2]:9
|
||||
(const byte*) plots_per_frame[(number) $100] = { fill( $100, 0) }
|
||||
|
||||
zp[2]:2 [ main::x#2 main::x#1 bitmap_plot::x#0 ]
|
||||
zp[2]:2 [ main::x#2 main::x#1 ]
|
||||
zp[1]:4 [ main::y#2 main::y#1 ]
|
||||
zp[2]:5 [ main::vx#2 main::vx#6 main::vx#1 ]
|
||||
zp[1]:7 [ main::vy#2 main::vy#8 main::vy#1 ]
|
||||
@ -143,11 +143,12 @@ reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
||||
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
|
||||
reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
zp[1]:8 [ frame_cnt ]
|
||||
zp[2]:9 [ bitmap_plot::x#0 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
reg byte x [ bitmap_plot::y#0 ]
|
||||
zp[2]:9 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
zp[2]:11 [ bitmap_plot::$1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 memset::num#2 memset::end#0 ]
|
||||
reg byte a [ bitmap_plot::$2 ]
|
||||
zp[1]:13 [ bitmap_init::$7 ]
|
||||
zp[2]:11 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 memset::num#2 memset::end#0 ]
|
||||
zp[2]:13 [ bitmap_plot::$1 ]
|
||||
reg byte x [ bitmap_plot::$2 ]
|
||||
zp[1]:15 [ bitmap_init::$7 ]
|
||||
reg byte a [ bitmap_init::$4 ]
|
||||
reg byte a [ bitmap_init::$5 ]
|
||||
reg byte a [ bitmap_init::$6 ]
|
||||
|
@ -269,10 +269,9 @@ bitmap_plot: {
|
||||
adc.z __1+1
|
||||
sta.z plotter+1
|
||||
// <x
|
||||
lda.z x
|
||||
ldx.z x
|
||||
// *plotter |= bitmap_plot_bit[<x]
|
||||
tay
|
||||
lda bitmap_plot_bit,y
|
||||
lda bitmap_plot_bit,x
|
||||
ldy #0
|
||||
ora (plotter),y
|
||||
sta (plotter),y
|
||||
@ -281,15 +280,15 @@ bitmap_plot: {
|
||||
}
|
||||
// Multiply of two signed words to a signed double word
|
||||
// Fixes offsets introduced by using unsigned multiplication
|
||||
// mul16s(signed word zp($1b) a, signed word zp(6) b)
|
||||
// mul16s(signed word zp($14) a, signed word zp(6) b)
|
||||
mul16s: {
|
||||
.label __9 = $24
|
||||
.label __13 = $2a
|
||||
.label __16 = $24
|
||||
.label __17 = $1b
|
||||
.label __17 = $14
|
||||
.label m = 8
|
||||
.label return = 8
|
||||
.label a = $1b
|
||||
.label a = $14
|
||||
.label b = 6
|
||||
// mul16u((word)a, (word) b)
|
||||
lda.z a
|
||||
@ -480,11 +479,11 @@ bitmap_clear: {
|
||||
rts
|
||||
}
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
// memset(void* zp($1d) str, byte register(X) c, word zp($1b) num)
|
||||
// memset(void* zp($1d) str, byte register(X) c, word zp($14) num)
|
||||
memset: {
|
||||
.label end = $1b
|
||||
.label end = $14
|
||||
.label dst = $1d
|
||||
.label num = $1b
|
||||
.label num = $14
|
||||
.label str = $1d
|
||||
// if(num>0)
|
||||
lda.z num
|
||||
@ -585,7 +584,7 @@ bitmap_init: {
|
||||
// Generate signed word sinus table - with values in the range min-max.
|
||||
// sintab - the table to generate into
|
||||
// wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
|
||||
// sin16s_gen2(signed word* zp($19) sintab)
|
||||
// sin16s_gen2(signed word* zp($1b) sintab)
|
||||
sin16s_gen2: {
|
||||
.label wavelength = $200
|
||||
.const min = -$1001
|
||||
@ -594,11 +593,11 @@ sin16s_gen2: {
|
||||
.label __6 = 8
|
||||
.label __9 = $24
|
||||
.label step = $20
|
||||
.label sintab = $19
|
||||
.label sintab = $1b
|
||||
// u[4.28]
|
||||
// Iterate over the table
|
||||
.label x = $c
|
||||
.label i = $17
|
||||
.label i = $19
|
||||
// div32u16u(PI2_u4f28, wavelength)
|
||||
jsr div32u16u
|
||||
// div32u16u(PI2_u4f28, wavelength)
|
||||
@ -696,16 +695,17 @@ sin16s_gen2: {
|
||||
sin16s: {
|
||||
.label __4 = $26
|
||||
.label x = $10
|
||||
.label return = $1b
|
||||
.label return = $14
|
||||
.label x1 = $2a
|
||||
.label x2 = $14
|
||||
.label x3 = $14
|
||||
.label x2 = $24
|
||||
.label x3 = $2e
|
||||
.label x3_6 = $2c
|
||||
.label usinx = $1b
|
||||
.label x4 = $14
|
||||
.label x5 = $2c
|
||||
.label x5_128 = $2c
|
||||
.label sinx = $1b
|
||||
.label usinx = $2c
|
||||
.label x4 = $24
|
||||
.label x5 = $14
|
||||
.label x5_128 = $14
|
||||
.label usinx_1 = $14
|
||||
.label sinx = $14
|
||||
// if(x >= PI_u4f28 )
|
||||
lda.z x+3
|
||||
cmp #>PI_u4f28>>$10
|
||||
@ -813,10 +813,6 @@ sin16s: {
|
||||
jsr mulu16_sel
|
||||
// mulu16_sel(x1, x1, 0)
|
||||
// x2 = mulu16_sel(x1, x1, 0)
|
||||
lda.z mulu16_sel.return
|
||||
sta.z x2
|
||||
lda.z mulu16_sel.return+1
|
||||
sta.z x2+1
|
||||
// mulu16_sel(x2, x1, 1)
|
||||
lda.z x1
|
||||
sta.z mulu16_sel.v2
|
||||
@ -831,6 +827,10 @@ sin16s: {
|
||||
sta.z mulu16_sel.return_1+1
|
||||
// x3 = mulu16_sel(x2, x1, 1)
|
||||
// mulu16_sel(x3, $10000/6, 1)
|
||||
lda.z x3
|
||||
sta.z mulu16_sel.v1
|
||||
lda.z x3+1
|
||||
sta.z mulu16_sel.v1+1
|
||||
ldx #1
|
||||
lda #<$10000/6
|
||||
sta.z mulu16_sel.v2
|
||||
@ -838,16 +838,24 @@ sin16s: {
|
||||
sta.z mulu16_sel.v2+1
|
||||
jsr mulu16_sel
|
||||
// mulu16_sel(x3, $10000/6, 1)
|
||||
lda.z mulu16_sel.return
|
||||
sta.z mulu16_sel.return_2
|
||||
lda.z mulu16_sel.return+1
|
||||
sta.z mulu16_sel.return_2+1
|
||||
// x3_6 = mulu16_sel(x3, $10000/6, 1)
|
||||
// usinx = x1 - x3_6
|
||||
lda.z x1
|
||||
sec
|
||||
sbc.z x3_6
|
||||
sbc.z usinx
|
||||
sta.z usinx
|
||||
lda.z x1+1
|
||||
sbc.z x3_6+1
|
||||
sbc.z usinx+1
|
||||
sta.z usinx+1
|
||||
// mulu16_sel(x3, x1, 0)
|
||||
lda.z x3
|
||||
sta.z mulu16_sel.v1
|
||||
lda.z x3+1
|
||||
sta.z mulu16_sel.v1+1
|
||||
lda.z x1
|
||||
sta.z mulu16_sel.v2
|
||||
lda.z x1+1
|
||||
@ -855,10 +863,6 @@ sin16s: {
|
||||
ldx #0
|
||||
jsr mulu16_sel
|
||||
// mulu16_sel(x3, x1, 0)
|
||||
lda.z mulu16_sel.return
|
||||
sta.z mulu16_sel.return_1
|
||||
lda.z mulu16_sel.return+1
|
||||
sta.z mulu16_sel.return_1+1
|
||||
// x4 = mulu16_sel(x3, x1, 0)
|
||||
// mulu16_sel(x4, x1, 0)
|
||||
lda.z x1
|
||||
@ -868,6 +872,10 @@ sin16s: {
|
||||
ldx #0
|
||||
jsr mulu16_sel
|
||||
// mulu16_sel(x4, x1, 0)
|
||||
lda.z mulu16_sel.return
|
||||
sta.z mulu16_sel.return_3
|
||||
lda.z mulu16_sel.return+1
|
||||
sta.z mulu16_sel.return_3+1
|
||||
// x5 = mulu16_sel(x4, x1, 0)
|
||||
// x5_128 = x5>>4
|
||||
lsr.z x5_128+1
|
||||
@ -879,13 +887,13 @@ sin16s: {
|
||||
lsr.z x5_128+1
|
||||
ror.z x5_128
|
||||
// usinx = usinx + x5_128
|
||||
lda.z usinx
|
||||
lda.z usinx_1
|
||||
clc
|
||||
adc.z x5_128
|
||||
sta.z usinx
|
||||
lda.z usinx+1
|
||||
adc.z x5_128+1
|
||||
sta.z usinx+1
|
||||
adc.z usinx
|
||||
sta.z usinx_1
|
||||
lda.z usinx_1+1
|
||||
adc.z usinx+1
|
||||
sta.z usinx_1+1
|
||||
// if(isUpper!=0)
|
||||
cpy #0
|
||||
beq __b3
|
||||
@ -903,19 +911,17 @@ sin16s: {
|
||||
}
|
||||
// Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result.
|
||||
// The select parameter indicates how many of the highest bits of the 32-bit result to skip
|
||||
// mulu16_sel(word zp($14) v1, word zp($1d) v2, byte register(X) select)
|
||||
// mulu16_sel(word zp($24) v1, word zp($1d) v2, byte register(X) select)
|
||||
mulu16_sel: {
|
||||
.label __0 = 8
|
||||
.label __1 = 8
|
||||
.label v1 = $14
|
||||
.label v1 = $24
|
||||
.label v2 = $1d
|
||||
.label return = $2c
|
||||
.label return_1 = $14
|
||||
.label return = $24
|
||||
.label return_1 = $2e
|
||||
.label return_2 = $2c
|
||||
.label return_3 = $14
|
||||
// mul16u(v1, v2)
|
||||
lda.z v1
|
||||
sta.z mul16u.a
|
||||
lda.z v1+1
|
||||
sta.z mul16u.a+1
|
||||
jsr mul16u
|
||||
// mul16u(v1, v2)
|
||||
// mul16u(v1, v2)<<select
|
||||
@ -940,7 +946,7 @@ mulu16_sel: {
|
||||
// Divide unsigned 32-bit dword dividend with a 16-bit word divisor
|
||||
// The 16-bit word remainder can be found in rem16u after the division
|
||||
div32u16u: {
|
||||
.label quotient_hi = $2c
|
||||
.label quotient_hi = $2e
|
||||
.label quotient_lo = $1d
|
||||
.label return = $20
|
||||
// divr16u(>dividend, divisor, 0)
|
||||
@ -982,10 +988,10 @@ div32u16u: {
|
||||
// Returns the quotient dividend/divisor.
|
||||
// The final remainder will be set into the global variable rem16u
|
||||
// Implemented using simple binary division
|
||||
// divr16u(word zp($1b) dividend, word zp($14) rem)
|
||||
// divr16u(word zp($17) dividend, word zp($14) rem)
|
||||
divr16u: {
|
||||
.label rem = $14
|
||||
.label dividend = $1b
|
||||
.label dividend = $17
|
||||
.label quotient = $1d
|
||||
.label return = $1d
|
||||
ldx #0
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -38,10 +38,10 @@
|
||||
(byte) bitmap_clear::fgcol
|
||||
(byte*) bitmap_gfx
|
||||
(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen)
|
||||
(byte~) bitmap_init::$4 reg byte a 22.0
|
||||
(byte~) bitmap_init::$5 reg byte a 22.0
|
||||
(byte~) bitmap_init::$6 reg byte a 22.0
|
||||
(byte~) bitmap_init::$7 zp[1]:31 5.5
|
||||
(byte~) bitmap_init::$4 reg byte a 2002.0
|
||||
(byte~) bitmap_init::$5 reg byte a 2002.0
|
||||
(byte~) bitmap_init::$6 reg byte a 2002.0
|
||||
(byte~) bitmap_init::$7 zp[1]:31 500.5
|
||||
(label) bitmap_init::@1
|
||||
(label) bitmap_init::@2
|
||||
(label) bitmap_init::@3
|
||||
@ -50,32 +50,32 @@
|
||||
(label) bitmap_init::@6
|
||||
(label) bitmap_init::@return
|
||||
(byte) bitmap_init::bits
|
||||
(byte) bitmap_init::bits#1 reg byte a 11.0
|
||||
(byte) bitmap_init::bits#3 reg byte a 16.5
|
||||
(byte) bitmap_init::bits#4 reg byte a 7.333333333333333
|
||||
(byte) bitmap_init::bits#1 reg byte a 1001.0
|
||||
(byte) bitmap_init::bits#3 reg byte a 1501.5
|
||||
(byte) bitmap_init::bits#4 reg byte a 667.3333333333334
|
||||
(byte*) bitmap_init::gfx
|
||||
(byte*) bitmap_init::screen
|
||||
(byte) bitmap_init::x
|
||||
(byte) bitmap_init::x#1 reg byte x 16.5
|
||||
(byte) bitmap_init::x#2 reg byte x 5.5
|
||||
(byte) bitmap_init::x#1 reg byte x 1501.5
|
||||
(byte) bitmap_init::x#2 reg byte x 500.5
|
||||
(byte) bitmap_init::y
|
||||
(byte) bitmap_init::y#1 reg byte x 16.5
|
||||
(byte) bitmap_init::y#2 reg byte x 5.5
|
||||
(byte) bitmap_init::y#1 reg byte x 1501.5
|
||||
(byte) bitmap_init::y#2 reg byte x 500.5
|
||||
(byte*) bitmap_init::yoffs
|
||||
(byte*) bitmap_init::yoffs#1 yoffs zp[2]:36 22.0
|
||||
(byte*) bitmap_init::yoffs#2 yoffs zp[2]:36 6.875
|
||||
(byte*) bitmap_init::yoffs#4 yoffs zp[2]:36 11.0
|
||||
(byte*) bitmap_init::yoffs#1 yoffs zp[2]:36 2002.0
|
||||
(byte*) bitmap_init::yoffs#2 yoffs zp[2]:36 625.625
|
||||
(byte*) bitmap_init::yoffs#4 yoffs zp[2]:36 1001.0
|
||||
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
|
||||
(word~) bitmap_plot::$1 zp[2]:29 4.0
|
||||
(byte~) bitmap_plot::$2 reg byte a 4.0
|
||||
(word~) bitmap_plot::$1 zp[2]:29 2002.0
|
||||
(byte~) bitmap_plot::$2 reg byte x 2002.0
|
||||
(label) bitmap_plot::@return
|
||||
(byte*) bitmap_plot::plotter
|
||||
(word) bitmap_plot::plotter#0 plotter zp[2]:27 1.0
|
||||
(byte*) bitmap_plot::plotter#1 plotter zp[2]:27 3.0
|
||||
(word) bitmap_plot::plotter#0 plotter zp[2]:27 500.5
|
||||
(byte*) bitmap_plot::plotter#1 plotter zp[2]:27 1501.5
|
||||
(word) bitmap_plot::x
|
||||
(word) bitmap_plot::x#0 x zp[2]:23 3.75
|
||||
(word) bitmap_plot::x#0 x zp[2]:23 525.75
|
||||
(byte) bitmap_plot::y
|
||||
(byte) bitmap_plot::y#0 reg byte x 7.5
|
||||
(byte) bitmap_plot::y#0 reg byte x 1051.5
|
||||
(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
|
||||
(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
|
||||
(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
|
||||
@ -88,15 +88,15 @@
|
||||
(word) div32u16u::divisor
|
||||
(dword) div32u16u::quotient
|
||||
(word) div32u16u::quotient_hi
|
||||
(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:44 0.8
|
||||
(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:46 400.4
|
||||
(word) div32u16u::quotient_lo
|
||||
(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:29 4.0
|
||||
(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:29 2002.0
|
||||
(dword) div32u16u::return
|
||||
(dword) div32u16u::return#0 return zp[4]:32 1.3333333333333333
|
||||
(dword) div32u16u::return#2 return zp[4]:32 4.0
|
||||
(dword) div32u16u::return#0 return zp[4]:32 367.33333333333337
|
||||
(dword) div32u16u::return#2 return zp[4]:32 202.0
|
||||
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
|
||||
(byte~) divr16u::$1 reg byte a 22.0
|
||||
(byte~) divr16u::$2 reg byte a 22.0
|
||||
(byte~) divr16u::$1 reg byte a 200002.0
|
||||
(byte~) divr16u::$2 reg byte a 200002.0
|
||||
(label) divr16u::@1
|
||||
(label) divr16u::@2
|
||||
(label) divr16u::@3
|
||||
@ -105,31 +105,31 @@
|
||||
(label) divr16u::@6
|
||||
(label) divr16u::@return
|
||||
(word) divr16u::dividend
|
||||
(word) divr16u::dividend#0 dividend zp[2]:27 2.75
|
||||
(word) divr16u::dividend#3 dividend zp[2]:27 5.0
|
||||
(word) divr16u::dividend#5 dividend zp[2]:27 2.0
|
||||
(word) divr16u::dividend#0 dividend zp[2]:23 25000.25
|
||||
(word) divr16u::dividend#3 dividend zp[2]:23 44286.28571428572
|
||||
(word) divr16u::dividend#5 dividend zp[2]:23 10001.0
|
||||
(word) divr16u::divisor
|
||||
(byte) divr16u::i
|
||||
(byte) divr16u::i#1 reg byte x 16.5
|
||||
(byte) divr16u::i#2 reg byte x 1.6923076923076923
|
||||
(byte) divr16u::i#1 reg byte x 150001.5
|
||||
(byte) divr16u::i#2 reg byte x 15384.76923076923
|
||||
(word) divr16u::quotient
|
||||
(word) divr16u::quotient#1 quotient zp[2]:29 16.5
|
||||
(word) divr16u::quotient#2 quotient zp[2]:29 11.0
|
||||
(word) divr16u::quotient#3 quotient zp[2]:29 2.75
|
||||
(word) divr16u::quotient#1 quotient zp[2]:29 150001.5
|
||||
(word) divr16u::quotient#2 quotient zp[2]:29 100001.0
|
||||
(word) divr16u::quotient#3 quotient zp[2]:29 25000.25
|
||||
(word) divr16u::rem
|
||||
(word) divr16u::rem#0 rem zp[2]:20 8.25
|
||||
(word) divr16u::rem#1 rem zp[2]:20 22.0
|
||||
(word) divr16u::rem#10 rem zp[2]:20 4.0
|
||||
(word) divr16u::rem#11 rem zp[2]:20 11.666666666666666
|
||||
(word) divr16u::rem#2 rem zp[2]:20 22.0
|
||||
(word) divr16u::rem#4 rem zp[2]:20 4.0
|
||||
(word) divr16u::rem#5 rem zp[2]:20 24.0
|
||||
(word) divr16u::rem#6 rem zp[2]:20 11.0
|
||||
(word) divr16u::rem#0 rem zp[2]:20 75000.75
|
||||
(word) divr16u::rem#1 rem zp[2]:20 200002.0
|
||||
(word) divr16u::rem#10 rem zp[2]:20 11002.0
|
||||
(word) divr16u::rem#11 rem zp[2]:20 103334.66666666667
|
||||
(word) divr16u::rem#2 rem zp[2]:20 200002.0
|
||||
(word) divr16u::rem#4 rem zp[2]:20 2002.0
|
||||
(word) divr16u::rem#5 rem zp[2]:20 210003.0
|
||||
(word) divr16u::rem#6 rem zp[2]:20 100001.0
|
||||
(word) divr16u::return
|
||||
(word) divr16u::return#0 return zp[2]:29 5.285714285714286
|
||||
(word) divr16u::return#2 return zp[2]:29 4.0
|
||||
(word) divr16u::return#3 return zp[2]:29 4.0
|
||||
(byte) frame_cnt loadstore zp[1]:22 0.6382978723404255
|
||||
(word) divr16u::return#0 return zp[2]:29 43143.57142857143
|
||||
(word) divr16u::return#2 return zp[2]:29 2002.0
|
||||
(word) divr16u::return#3 return zp[2]:29 2002.0
|
||||
(byte) frame_cnt loadstore zp[1]:22 4.46808510638298
|
||||
(void()) init_irq()
|
||||
(label) init_irq::@return
|
||||
interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
@ -137,14 +137,14 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
(label) irq::@2
|
||||
(label) irq::@return
|
||||
(void()) main()
|
||||
(signed dword~) main::$11 zp[4]:8 22.0
|
||||
(word~) main::$12 reg byte alu 22.0
|
||||
(word~) main::$22 zp[2]:6 22.0
|
||||
(word~) main::$23 zp[2]:6 22.0
|
||||
(signed word*~) main::$24 zp[2]:6 22.0
|
||||
(signed word*~) main::$25 zp[2]:6 22.0
|
||||
(signed dword~) main::$6 zp[4]:8 22.0
|
||||
(word~) main::$7 reg byte alu 22.0
|
||||
(signed dword~) main::$11 zp[4]:8 202.0
|
||||
(word~) main::$12 reg byte alu 202.0
|
||||
(word~) main::$22 zp[2]:6 202.0
|
||||
(word~) main::$23 zp[2]:6 202.0
|
||||
(signed word*~) main::$24 zp[2]:6 202.0
|
||||
(signed word*~) main::$25 zp[2]:6 202.0
|
||||
(signed dword~) main::$6 zp[4]:8 202.0
|
||||
(word~) main::$7 reg byte alu 202.0
|
||||
(label) main::@1
|
||||
(label) main::@10
|
||||
(label) main::@11
|
||||
@ -159,53 +159,53 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
(label) main::@8
|
||||
(label) main::@9
|
||||
(signed word) main::cos_x
|
||||
(signed word) main::cos_x#0 cos_x zp[2]:6 22.0
|
||||
(signed word) main::cos_x#0 cos_x zp[2]:6 202.0
|
||||
(word) main::idx_x
|
||||
(word) main::idx_x#1 idx_x zp[2]:2 11.0
|
||||
(word) main::idx_x#10 idx_x zp[2]:2 3.6666666666666665
|
||||
(word) main::idx_x#3 idx_x zp[2]:2 1.375
|
||||
(word) main::idx_x#1 idx_x zp[2]:2 101.0
|
||||
(word) main::idx_x#10 idx_x zp[2]:2 33.666666666666664
|
||||
(word) main::idx_x#3 idx_x zp[2]:2 12.625
|
||||
(word) main::idx_y
|
||||
(word) main::idx_y#1 idx_y zp[2]:4 11.0
|
||||
(word) main::idx_y#10 idx_y zp[2]:4 11.0
|
||||
(word) main::idx_y#3 idx_y zp[2]:4 1.1785714285714286
|
||||
(word) main::idx_y#1 idx_y zp[2]:4 101.0
|
||||
(word) main::idx_y#10 idx_y zp[2]:4 101.0
|
||||
(word) main::idx_y#3 idx_y zp[2]:4 10.821428571428571
|
||||
(signed word) main::sin_y
|
||||
(signed word) main::sin_y#0 sin_y zp[2]:6 22.0
|
||||
(signed word) main::sin_y#0 sin_y zp[2]:6 202.0
|
||||
(label) main::toD0181
|
||||
(byte*) main::toD0181_gfx
|
||||
(byte) main::toD0181_return
|
||||
(const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) SCREEN&(word) $3fff*(byte) 4|>(word)(const byte*) BITMAP/(byte) 4&(byte) $f
|
||||
(byte*) main::toD0181_screen
|
||||
(word) main::x
|
||||
(word) main::x#0 x zp[2]:23 1.8333333333333333
|
||||
(word) main::x#0 x zp[2]:23 16.833333333333332
|
||||
(signed dword) main::xpos
|
||||
(signed dword) main::xpos#0 xpos zp[4]:8 22.0
|
||||
(signed dword) main::xpos#0 xpos zp[4]:8 202.0
|
||||
(word) main::y
|
||||
(word) main::y#0 y zp[2]:25 11.0
|
||||
(word) main::y#0 y zp[2]:25 101.0
|
||||
(signed dword) main::ypos
|
||||
(signed dword) main::ypos#0 ypos zp[4]:8 22.0
|
||||
(signed dword) main::ypos#0 ypos zp[4]:8 202.0
|
||||
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
||||
(label) memset::@1
|
||||
(label) memset::@2
|
||||
(label) memset::@3
|
||||
(label) memset::@return
|
||||
(byte) memset::c
|
||||
(byte) memset::c#4 reg byte x 1.375
|
||||
(byte) memset::c#4 reg byte x 1250.125
|
||||
(byte*) memset::dst
|
||||
(byte*) memset::dst#1 dst zp[2]:29 22.0
|
||||
(byte*) memset::dst#2 dst zp[2]:29 15.333333333333332
|
||||
(byte*) memset::dst#4 dst zp[2]:29 4.0
|
||||
(byte*) memset::dst#1 dst zp[2]:29 20002.0
|
||||
(byte*) memset::dst#2 dst zp[2]:29 13668.333333333332
|
||||
(byte*) memset::dst#4 dst zp[2]:29 2002.0
|
||||
(byte*) memset::end
|
||||
(byte*) memset::end#0 end zp[2]:27 2.1666666666666665
|
||||
(byte*) memset::end#0 end zp[2]:20 1833.6666666666665
|
||||
(word) memset::num
|
||||
(word) memset::num#2 num zp[2]:27 2.0
|
||||
(word) memset::num#2 num zp[2]:20 1001.0
|
||||
(void*) memset::return
|
||||
(void*) memset::str
|
||||
(void*) memset::str#3 str zp[2]:29
|
||||
(signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b)
|
||||
(word~) mul16s::$13 zp[2]:42 4.0
|
||||
(word~) mul16s::$16 zp[2]:36 4.0
|
||||
(word~) mul16s::$17 zp[2]:27 4.0
|
||||
(word~) mul16s::$9 zp[2]:36 4.0
|
||||
(word~) mul16s::$13 zp[2]:42 20002.0
|
||||
(word~) mul16s::$16 zp[2]:36 20002.0
|
||||
(word~) mul16s::$17 zp[2]:20 20002.0
|
||||
(word~) mul16s::$9 zp[2]:36 20002.0
|
||||
(label) mul16s::@1
|
||||
(label) mul16s::@2
|
||||
(label) mul16s::@3
|
||||
@ -213,83 +213,83 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
(label) mul16s::@5
|
||||
(label) mul16s::@return
|
||||
(signed word) mul16s::a
|
||||
(signed word) mul16s::a#0 a zp[2]:27 22.0
|
||||
(signed word) mul16s::a#3 a zp[2]:27 1.0
|
||||
(signed word) mul16s::a#0 a zp[2]:20 2002.0
|
||||
(signed word) mul16s::a#3 a zp[2]:20 846.3076923076923
|
||||
(signed word) mul16s::b
|
||||
(signed word) mul16s::b#1 b zp[2]:6 22.0
|
||||
(signed word) mul16s::b#2 b zp[2]:6 22.0
|
||||
(signed word) mul16s::b#3 b zp[2]:6 2.1818181818181817
|
||||
(signed word) mul16s::b#1 b zp[2]:6 202.0
|
||||
(signed word) mul16s::b#2 b zp[2]:6 202.0
|
||||
(signed word) mul16s::b#3 b zp[2]:6 927.5454545454545
|
||||
(dword) mul16s::m
|
||||
(dword) mul16s::m#0 m zp[4]:8 2.0
|
||||
(dword) mul16s::m#1 m zp[4]:8 4.0
|
||||
(dword) mul16s::m#2 m zp[4]:8 4.0
|
||||
(dword) mul16s::m#4 m zp[4]:8 4.0
|
||||
(dword) mul16s::m#5 m zp[4]:8 2.5
|
||||
(dword) mul16s::m#0 m zp[4]:8 10001.0
|
||||
(dword) mul16s::m#1 m zp[4]:8 20002.0
|
||||
(dword) mul16s::m#2 m zp[4]:8 20002.0
|
||||
(dword) mul16s::m#4 m zp[4]:8 20002.0
|
||||
(dword) mul16s::m#5 m zp[4]:8 12501.25
|
||||
(signed dword) mul16s::return
|
||||
(signed dword) mul16s::return#0 return zp[4]:8 7.000000000000001
|
||||
(signed dword) mul16s::return#2 return zp[4]:8 22.0
|
||||
(signed dword) mul16s::return#3 return zp[4]:8 22.0
|
||||
(signed dword) mul16s::return#4 return zp[4]:8 22.0
|
||||
(signed dword) mul16s::return#0 return zp[4]:8 2240.8
|
||||
(signed dword) mul16s::return#2 return zp[4]:8 2002.0
|
||||
(signed dword) mul16s::return#3 return zp[4]:8 202.0
|
||||
(signed dword) mul16s::return#4 return zp[4]:8 202.0
|
||||
(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
|
||||
(byte~) mul16u::$1 reg byte a 202.0
|
||||
(byte~) mul16u::$1 reg byte a 2.00000002E8
|
||||
(label) mul16u::@1
|
||||
(label) mul16u::@2
|
||||
(label) mul16u::@3
|
||||
(label) mul16u::@4
|
||||
(label) mul16u::@return
|
||||
(word) mul16u::a
|
||||
(word) mul16u::a#0 a zp[2]:36 101.0
|
||||
(word) mul16u::a#1 a zp[2]:36 2.0
|
||||
(word) mul16u::a#2 a zp[2]:36 2.0
|
||||
(word) mul16u::a#3 a zp[2]:36 67.66666666666666
|
||||
(word) mul16u::a#6 a zp[2]:36 3.0
|
||||
(word) mul16u::a#0 a zp[2]:36 1.00000001E8
|
||||
(word) mul16u::a#1 a zp[2]:36 10001.0
|
||||
(word) mul16u::a#2 a zp[2]:36 100001.0
|
||||
(word) mul16u::a#3 a zp[2]:36 6.683333416666667E7
|
||||
(word) mul16u::a#6 a zp[2]:36 555001.5
|
||||
(word) mul16u::b
|
||||
(word) mul16u::b#0 b zp[2]:29 4.0
|
||||
(word) mul16u::b#1 b zp[2]:29 4.0
|
||||
(word) mul16u::b#2 b zp[2]:29 4.0
|
||||
(word) mul16u::b#0 b zp[2]:29 20002.0
|
||||
(word) mul16u::b#1 b zp[2]:29 200002.0
|
||||
(word) mul16u::b#2 b zp[2]:29 110002.0
|
||||
(dword) mul16u::mb
|
||||
(dword) mul16u::mb#0 mb zp[4]:16 4.0
|
||||
(dword) mul16u::mb#1 mb zp[4]:16 202.0
|
||||
(dword) mul16u::mb#2 mb zp[4]:16 43.57142857142858
|
||||
(dword) mul16u::mb#0 mb zp[4]:16 2000002.0
|
||||
(dword) mul16u::mb#1 mb zp[4]:16 2.00000002E8
|
||||
(dword) mul16u::mb#2 mb zp[4]:16 4.300000057142857E7
|
||||
(dword) mul16u::res
|
||||
(dword) mul16u::res#1 res zp[4]:8 202.0
|
||||
(dword) mul16u::res#2 res zp[4]:8 43.85714285714286
|
||||
(dword) mul16u::res#6 res zp[4]:8 101.0
|
||||
(dword) mul16u::res#1 res zp[4]:8 2.00000002E8
|
||||
(dword) mul16u::res#2 res zp[4]:8 4.287285785714286E7
|
||||
(dword) mul16u::res#6 res zp[4]:8 1.00000001E8
|
||||
(dword) mul16u::return
|
||||
(dword) mul16u::return#2 return zp[4]:8 4.0
|
||||
(dword) mul16u::return#3 return zp[4]:8 4.0
|
||||
(dword) mul16u::return#2 return zp[4]:8 20002.0
|
||||
(dword) mul16u::return#3 return zp[4]:8 200002.0
|
||||
(word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select)
|
||||
(dword~) mulu16_sel::$0 zp[4]:8 4.0
|
||||
(dword~) mulu16_sel::$1 zp[4]:8 4.0
|
||||
(dword~) mulu16_sel::$0 zp[4]:8 200002.0
|
||||
(dword~) mulu16_sel::$1 zp[4]:8 200002.0
|
||||
(label) mulu16_sel::@1
|
||||
(label) mulu16_sel::@return
|
||||
(word) mulu16_sel::return
|
||||
(word) mulu16_sel::return#0 return zp[2]:44 4.0
|
||||
(word) mulu16_sel::return#1 return_1 zp[2]:20 4.0
|
||||
(word) mulu16_sel::return#10 return_1 zp[2]:20 4.0
|
||||
(word) mulu16_sel::return#11 return zp[2]:44 4.0
|
||||
(word) mulu16_sel::return#12 return zp[2]:44 1.714285714285714
|
||||
(word) mulu16_sel::return#2 return zp[2]:44 4.0
|
||||
(word) mulu16_sel::return#0 return zp[2]:36 20002.0
|
||||
(word) mulu16_sel::return#1 return_1 zp[2]:46 20002.0
|
||||
(word) mulu16_sel::return#10 return zp[2]:36 20002.0
|
||||
(word) mulu16_sel::return#11 return_3 zp[2]:20 20002.0
|
||||
(word) mulu16_sel::return#12 return zp[2]:36 21429.428571428572
|
||||
(word) mulu16_sel::return#2 return_2 zp[2]:44 20002.0
|
||||
(byte) mulu16_sel::select
|
||||
(byte) mulu16_sel::select#5 reg byte x 0.3333333333333333
|
||||
(byte) mulu16_sel::select#5 reg byte x 16666.833333333332
|
||||
(word) mulu16_sel::v1
|
||||
(word) mulu16_sel::v1#0 v1 zp[2]:20 2.0
|
||||
(word) mulu16_sel::v1#1 v1 zp[2]:20 2.0
|
||||
(word) mulu16_sel::v1#2 v1 zp[2]:20 4.0
|
||||
(word) mulu16_sel::v1#3 v1 zp[2]:20 2.0
|
||||
(word) mulu16_sel::v1#4 v1 zp[2]:20 2.0
|
||||
(word) mulu16_sel::v1#5 v1 zp[2]:20 12.0
|
||||
(word) mulu16_sel::v1#0 v1 zp[2]:36 10001.0
|
||||
(word) mulu16_sel::v1#1 v1 zp[2]:36 10001.0
|
||||
(word) mulu16_sel::v1#2 v1 zp[2]:36 20002.0
|
||||
(word) mulu16_sel::v1#3 v1 zp[2]:36 10001.0
|
||||
(word) mulu16_sel::v1#4 v1 zp[2]:36 10001.0
|
||||
(word) mulu16_sel::v1#5 v1 zp[2]:36 150006.0
|
||||
(word) mulu16_sel::v2
|
||||
(word) mulu16_sel::v2#0 v2 zp[2]:29 4.0
|
||||
(word) mulu16_sel::v2#1 v2 zp[2]:29 4.0
|
||||
(word) mulu16_sel::v2#3 v2 zp[2]:29 4.0
|
||||
(word) mulu16_sel::v2#4 v2 zp[2]:29 4.0
|
||||
(word) mulu16_sel::v2#5 v2 zp[2]:29 5.0
|
||||
(word) mulu16_sel::v2#0 v2 zp[2]:29 20002.0
|
||||
(word) mulu16_sel::v2#1 v2 zp[2]:29 20002.0
|
||||
(word) mulu16_sel::v2#3 v2 zp[2]:29 20002.0
|
||||
(word) mulu16_sel::v2#4 v2 zp[2]:29 20002.0
|
||||
(word) mulu16_sel::v2#5 v2 zp[2]:29 70002.5
|
||||
(const byte*) plots_per_frame[(number) $100] = { fill( $100, 0) }
|
||||
(word) rem16u
|
||||
(word) rem16u#1 rem16u zp[2]:20 0.8
|
||||
(word) rem16u#1 rem16u zp[2]:20 2200.4
|
||||
(signed word()) sin16s((dword) sin16s::x)
|
||||
(dword~) sin16s::$4 zp[4]:38 4.0
|
||||
(dword~) sin16s::$4 zp[4]:38 20002.0
|
||||
(label) sin16s::@1
|
||||
(label) sin16s::@10
|
||||
(label) sin16s::@11
|
||||
@ -304,39 +304,39 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
(label) sin16s::@9
|
||||
(label) sin16s::@return
|
||||
(byte) sin16s::isUpper
|
||||
(byte) sin16s::isUpper#2 reg byte y 0.06060606060606061
|
||||
(byte) sin16s::isUpper#2 reg byte y 303.06060606060606
|
||||
(signed word) sin16s::return
|
||||
(signed word) sin16s::return#0 return zp[2]:27 22.0
|
||||
(signed word) sin16s::return#1 return zp[2]:27 5.0
|
||||
(signed word) sin16s::return#5 return zp[2]:27 4.0
|
||||
(signed word) sin16s::return#0 return zp[2]:20 2002.0
|
||||
(signed word) sin16s::return#1 return zp[2]:20 7001.0
|
||||
(signed word) sin16s::return#5 return zp[2]:20 20002.0
|
||||
(signed word) sin16s::sinx
|
||||
(signed word) sin16s::sinx#1 sinx zp[2]:27 4.0
|
||||
(signed word) sin16s::sinx#1 sinx zp[2]:20 20002.0
|
||||
(word) sin16s::usinx
|
||||
(word) sin16s::usinx#0 usinx zp[2]:27 0.3333333333333333
|
||||
(word) sin16s::usinx#1 usinx zp[2]:27 1.0
|
||||
(word) sin16s::usinx#0 usinx zp[2]:44 1666.8333333333333
|
||||
(word) sin16s::usinx#1 usinx_1 zp[2]:20 5000.5
|
||||
(dword) sin16s::x
|
||||
(dword) sin16s::x#0 x zp[4]:16 8.5
|
||||
(dword) sin16s::x#1 x zp[4]:16 4.0
|
||||
(dword) sin16s::x#2 x zp[4]:16 4.0
|
||||
(dword) sin16s::x#4 x zp[4]:16 5.0
|
||||
(dword) sin16s::x#6 x zp[4]:16 6.0
|
||||
(dword) sin16s::x#0 x zp[4]:16 15502.0
|
||||
(dword) sin16s::x#1 x zp[4]:16 20002.0
|
||||
(dword) sin16s::x#2 x zp[4]:16 20002.0
|
||||
(dword) sin16s::x#4 x zp[4]:16 25002.5
|
||||
(dword) sin16s::x#6 x zp[4]:16 30003.0
|
||||
(word) sin16s::x1
|
||||
(word) sin16s::x1#0 x1 zp[2]:42 0.6363636363636365
|
||||
(word) sin16s::x1#0 x1 zp[2]:42 3182.1363636363635
|
||||
(word) sin16s::x2
|
||||
(word) sin16s::x2#0 x2 zp[2]:20 4.0
|
||||
(word) sin16s::x2#0 x2 zp[2]:36 20002.0
|
||||
(word) sin16s::x3
|
||||
(word) sin16s::x3#0 x3 zp[2]:20 1.0
|
||||
(word) sin16s::x3#0 x3 zp[2]:46 5000.5
|
||||
(word) sin16s::x3_6
|
||||
(word) sin16s::x3_6#0 x3_6 zp[2]:44 4.0
|
||||
(word) sin16s::x3_6#0 x3_6 zp[2]:44 20002.0
|
||||
(word) sin16s::x4
|
||||
(word) sin16s::x4#0 x4 zp[2]:20 4.0
|
||||
(word) sin16s::x4#0 x4 zp[2]:36 20002.0
|
||||
(word) sin16s::x5
|
||||
(word) sin16s::x5#0 x5 zp[2]:44 4.0
|
||||
(word) sin16s::x5#0 x5 zp[2]:20 20002.0
|
||||
(word) sin16s::x5_128
|
||||
(word) sin16s::x5_128#0 x5_128 zp[2]:44 4.0
|
||||
(word) sin16s::x5_128#0 x5_128 zp[2]:20 20002.0
|
||||
(void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max)
|
||||
(signed dword~) sin16s_gen2::$6 zp[4]:8 22.0
|
||||
(word~) sin16s_gen2::$9 zp[2]:36 11.0
|
||||
(signed dword~) sin16s_gen2::$6 zp[4]:8 2002.0
|
||||
(word~) sin16s_gen2::$9 zp[2]:36 1001.0
|
||||
(label) sin16s_gen2::@1
|
||||
(label) sin16s_gen2::@2
|
||||
(label) sin16s_gen2::@3
|
||||
@ -346,23 +346,23 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
(signed word) sin16s_gen2::ampl
|
||||
(const signed word) sin16s_gen2::ampl#0 ampl = (const signed word) sin16s_gen2::max#0-(const signed word) sin16s_gen2::min#0
|
||||
(word) sin16s_gen2::i
|
||||
(word) sin16s_gen2::i#1 i zp[2]:23 22.0
|
||||
(word) sin16s_gen2::i#2 i zp[2]:23 2.5384615384615383
|
||||
(word) sin16s_gen2::i#1 i zp[2]:25 2002.0
|
||||
(word) sin16s_gen2::i#2 i zp[2]:25 231.0
|
||||
(signed word) sin16s_gen2::max
|
||||
(const signed word) sin16s_gen2::max#0 max = (signed word) $1001
|
||||
(signed word) sin16s_gen2::min
|
||||
(const signed word) sin16s_gen2::min#0 min = (signed word) -$1001
|
||||
(signed word) sin16s_gen2::offs
|
||||
(signed word*) sin16s_gen2::sintab
|
||||
(signed word*) sin16s_gen2::sintab#0 sintab zp[2]:25 7.333333333333333
|
||||
(signed word*) sin16s_gen2::sintab#2 sintab zp[2]:25 3.0
|
||||
(signed word*) sin16s_gen2::sintab#0 sintab zp[2]:27 667.3333333333334
|
||||
(signed word*) sin16s_gen2::sintab#2 sintab zp[2]:27 273.0
|
||||
(dword) sin16s_gen2::step
|
||||
(dword) sin16s_gen2::step#0 step zp[4]:32 0.8666666666666666
|
||||
(dword) sin16s_gen2::step#0 step zp[4]:32 73.46666666666667
|
||||
(word) sin16s_gen2::wavelength
|
||||
(const word) sin16s_gen2::wavelength#0 wavelength = (word) $200
|
||||
(dword) sin16s_gen2::x
|
||||
(dword) sin16s_gen2::x#1 x zp[4]:12 11.0
|
||||
(dword) sin16s_gen2::x#2 x zp[4]:12 2.75
|
||||
(dword) sin16s_gen2::x#1 x zp[4]:12 1001.0
|
||||
(dword) sin16s_gen2::x#2 x zp[4]:12 250.25
|
||||
|
||||
zp[2]:2 [ main::idx_x#3 main::idx_x#10 main::idx_x#1 ]
|
||||
zp[2]:4 [ main::idx_y#3 main::idx_y#10 main::idx_y#1 ]
|
||||
@ -376,26 +376,27 @@ zp[4]:12 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ]
|
||||
reg byte y [ sin16s::isUpper#2 ]
|
||||
zp[4]:16 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]
|
||||
reg byte x [ mulu16_sel::select#5 ]
|
||||
zp[2]:20 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 ]
|
||||
zp[2]:20 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 memset::num#2 memset::end#0 mul16s::a#3 mul16s::a#0 mul16s::$17 sin16s::return#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ]
|
||||
reg byte x [ divr16u::i#2 divr16u::i#1 ]
|
||||
zp[1]:22 [ frame_cnt ]
|
||||
reg byte alu [ main::$7 ]
|
||||
zp[2]:23 [ main::x#0 bitmap_plot::x#0 sin16s_gen2::i#2 sin16s_gen2::i#1 ]
|
||||
zp[2]:23 [ main::x#0 bitmap_plot::x#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ]
|
||||
reg byte alu [ main::$12 ]
|
||||
zp[2]:25 [ main::y#0 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ]
|
||||
zp[2]:25 [ main::y#0 sin16s_gen2::i#2 sin16s_gen2::i#1 ]
|
||||
reg byte x [ bitmap_plot::y#0 ]
|
||||
zp[2]:27 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 memset::num#2 memset::end#0 mul16s::a#3 mul16s::a#0 mul16s::$17 sin16s::return#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::usinx#0 ]
|
||||
zp[2]:27 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ]
|
||||
zp[2]:29 [ bitmap_plot::$1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 mul16u::b#2 mul16u::b#0 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ]
|
||||
reg byte a [ bitmap_plot::$2 ]
|
||||
reg byte x [ bitmap_plot::$2 ]
|
||||
reg byte a [ mul16u::$1 ]
|
||||
zp[1]:31 [ bitmap_init::$7 ]
|
||||
reg byte a [ bitmap_init::$4 ]
|
||||
reg byte a [ bitmap_init::$5 ]
|
||||
reg byte a [ bitmap_init::$6 ]
|
||||
zp[4]:32 [ div32u16u::return#2 sin16s_gen2::step#0 div32u16u::return#0 ]
|
||||
zp[2]:36 [ sin16s_gen2::$9 mul16s::$9 mul16s::$16 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ]
|
||||
zp[2]:36 [ sin16s_gen2::$9 mul16s::$9 mul16s::$16 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::return#0 sin16s::x2#0 mulu16_sel::return#12 mulu16_sel::return#10 sin16s::x4#0 ]
|
||||
zp[4]:38 [ sin16s::$4 ]
|
||||
zp[2]:42 [ sin16s::x1#0 mul16s::$13 ]
|
||||
zp[2]:44 [ div32u16u::quotient_hi#0 mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ]
|
||||
zp[2]:44 [ mulu16_sel::return#2 sin16s::x3_6#0 sin16s::usinx#0 ]
|
||||
zp[2]:46 [ div32u16u::quotient_hi#0 mulu16_sel::return#1 sin16s::x3#0 ]
|
||||
reg byte a [ divr16u::$1 ]
|
||||
reg byte a [ divr16u::$2 ]
|
||||
|
@ -44,9 +44,9 @@
|
||||
.const SIZEOF_SIGNED_WORD = 2
|
||||
.label BITMAP = $2000
|
||||
.label SCREEN = $400
|
||||
.label frame_cnt = $1b
|
||||
.label frame_cnt = $19
|
||||
// Remainder after unsigned 16-bit division
|
||||
.label rem16u = $19
|
||||
.label rem16u = $17
|
||||
__bbegin:
|
||||
// frame_cnt = 1
|
||||
// Counts frames - updated by the IRQ
|
||||
@ -56,18 +56,18 @@ __bbegin:
|
||||
rts
|
||||
main: {
|
||||
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>BITMAP)/4&$f
|
||||
.label __7 = $1c
|
||||
.label __8 = $1c
|
||||
.label __13 = $1e
|
||||
.label __14 = $1e
|
||||
.label __7 = $1a
|
||||
.label __8 = $1a
|
||||
.label __13 = $1c
|
||||
.label __14 = $1c
|
||||
.label __31 = 9
|
||||
.label __32 = 9
|
||||
.label cos_x = 9
|
||||
.label xpos = $b
|
||||
.label x = $1c
|
||||
.label x = $1a
|
||||
.label sin_y = 9
|
||||
.label ypos = $b
|
||||
.label y = $1e
|
||||
.label y = $1c
|
||||
.label idx_x = 2
|
||||
.label idx_y = 6
|
||||
.label r = 4
|
||||
@ -123,6 +123,10 @@ main: {
|
||||
pla
|
||||
sta.z cos_x
|
||||
// mul16s(r, cos_x)
|
||||
lda.z r
|
||||
sta.z mul16s.a
|
||||
lda.z r+1
|
||||
sta.z mul16s.a+1
|
||||
jsr mul16s
|
||||
// mul16s(r, cos_x)
|
||||
// xpos = mul16s(r, cos_x)
|
||||
@ -171,6 +175,10 @@ main: {
|
||||
pla
|
||||
sta.z sin_y
|
||||
// mul16s(r, sin_y)
|
||||
lda.z r
|
||||
sta.z mul16s.a
|
||||
lda.z r+1
|
||||
sta.z mul16s.a+1
|
||||
jsr mul16s
|
||||
// mul16s(r, sin_y)
|
||||
// ypos = mul16s(r, sin_y)
|
||||
@ -280,11 +288,11 @@ main: {
|
||||
jmp __b7
|
||||
}
|
||||
// Plot a single dot in the bitmap
|
||||
// bitmap_plot(word zp($1c) x, byte register(X) y)
|
||||
// bitmap_plot(word zp($1a) x, byte register(X) y)
|
||||
bitmap_plot: {
|
||||
.label __1 = $2b
|
||||
.label plotter = $25
|
||||
.label x = $1c
|
||||
.label __1 = $20
|
||||
.label plotter = $1e
|
||||
.label x = $1a
|
||||
// (byte*) { bitmap_plot_yhi[y], bitmap_plot_ylo[y] }
|
||||
lda bitmap_plot_yhi,x
|
||||
sta.z plotter+1
|
||||
@ -306,10 +314,9 @@ bitmap_plot: {
|
||||
adc.z __1+1
|
||||
sta.z plotter+1
|
||||
// <x
|
||||
lda.z x
|
||||
ldx.z x
|
||||
// *plotter |= bitmap_plot_bit[<x]
|
||||
tay
|
||||
lda bitmap_plot_bit,y
|
||||
lda bitmap_plot_bit,x
|
||||
ldy #0
|
||||
ora (plotter),y
|
||||
sta (plotter),y
|
||||
@ -318,15 +325,15 @@ bitmap_plot: {
|
||||
}
|
||||
// Multiply of two signed words to a signed double word
|
||||
// Fixes offsets introduced by using unsigned multiplication
|
||||
// mul16s(signed word zp(4) a, signed word zp(9) b)
|
||||
// mul16s(signed word zp($17) a, signed word zp(9) b)
|
||||
mul16s: {
|
||||
.label __9 = $2b
|
||||
.label __13 = $25
|
||||
.label __16 = $2b
|
||||
.label __17 = $25
|
||||
.label __9 = $27
|
||||
.label __13 = $2d
|
||||
.label __16 = $27
|
||||
.label __17 = $17
|
||||
.label m = $b
|
||||
.label return = $b
|
||||
.label a = 4
|
||||
.label a = $17
|
||||
.label b = 9
|
||||
// mul16u((word)a, (word) b)
|
||||
lda.z a
|
||||
@ -370,12 +377,12 @@ mul16s: {
|
||||
lda.z m+3
|
||||
sta.z __13+1
|
||||
// >m = (>m)-(word)a
|
||||
lda.z __17
|
||||
lda.z __13
|
||||
sec
|
||||
sbc.z a
|
||||
sbc.z __17
|
||||
sta.z __17
|
||||
lda.z __17+1
|
||||
sbc.z a+1
|
||||
lda.z __13+1
|
||||
sbc.z __17+1
|
||||
sta.z __17+1
|
||||
lda.z __17
|
||||
sta.z m+2
|
||||
@ -387,12 +394,12 @@ mul16s: {
|
||||
rts
|
||||
}
|
||||
// Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word
|
||||
// mul16u(word zp($25) a, word zp($1e) b)
|
||||
// mul16u(word zp($27) a, word zp($20) b)
|
||||
mul16u: {
|
||||
.label mb = $15
|
||||
.label a = $25
|
||||
.label mb = $13
|
||||
.label a = $27
|
||||
.label res = $b
|
||||
.label b = $1e
|
||||
.label b = $20
|
||||
.label return = $b
|
||||
// mb = b
|
||||
lda.z b
|
||||
@ -517,12 +524,12 @@ bitmap_clear: {
|
||||
rts
|
||||
}
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
// memset(void* zp($25) str, byte register(X) c, word zp($1e) num)
|
||||
// memset(void* zp($20) str, byte register(X) c, word zp($17) num)
|
||||
memset: {
|
||||
.label end = $1e
|
||||
.label dst = $25
|
||||
.label num = $1e
|
||||
.label str = $25
|
||||
.label end = $17
|
||||
.label dst = $20
|
||||
.label num = $17
|
||||
.label str = $20
|
||||
// if(num>0)
|
||||
lda.z num
|
||||
bne !+
|
||||
@ -562,8 +569,8 @@ memset: {
|
||||
}
|
||||
// Initialize bitmap plotting tables
|
||||
bitmap_init: {
|
||||
.label __7 = $20
|
||||
.label yoffs = $f
|
||||
.label __7 = $22
|
||||
.label yoffs = $27
|
||||
ldx #0
|
||||
lda #$80
|
||||
__b1:
|
||||
@ -622,20 +629,20 @@ bitmap_init: {
|
||||
// Generate signed word sinus table - with values in the range min-max.
|
||||
// sintab - the table to generate into
|
||||
// wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
|
||||
// sin16s_gen2(signed word* zp($1c) sintab)
|
||||
// sin16s_gen2(signed word* zp($1e) sintab)
|
||||
sin16s_gen2: {
|
||||
.label wavelength = $200
|
||||
.const min = -$1001
|
||||
.const max = $1001
|
||||
.const ampl = max-min
|
||||
.label __6 = $b
|
||||
.label __9 = $25
|
||||
.label step = $21
|
||||
.label sintab = $1c
|
||||
.label __9 = $27
|
||||
.label step = $23
|
||||
.label sintab = $1e
|
||||
// u[4.28]
|
||||
// Iterate over the table
|
||||
.label x = $11
|
||||
.label i = $f
|
||||
.label x = $f
|
||||
.label i = $1c
|
||||
// div32u16u(PI2_u4f28, wavelength)
|
||||
jsr div32u16u
|
||||
// div32u16u(PI2_u4f28, wavelength)
|
||||
@ -729,20 +736,21 @@ sin16s_gen2: {
|
||||
// Calculate signed word sinus sin(x)
|
||||
// x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28
|
||||
// result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff
|
||||
// sin16s(dword zp($15) x)
|
||||
// sin16s(dword zp($13) x)
|
||||
sin16s: {
|
||||
.label __4 = $27
|
||||
.label x = $15
|
||||
.label return = 4
|
||||
.label __4 = $29
|
||||
.label x = $13
|
||||
.label return = $17
|
||||
.label x1 = $2d
|
||||
.label x2 = $19
|
||||
.label x3 = $19
|
||||
.label x3_6 = $2b
|
||||
.label usinx = 4
|
||||
.label x4 = $19
|
||||
.label x5 = $2b
|
||||
.label x5_128 = $2b
|
||||
.label sinx = 4
|
||||
.label x2 = $27
|
||||
.label x3 = $31
|
||||
.label x3_6 = $2f
|
||||
.label usinx = $2f
|
||||
.label x4 = $27
|
||||
.label x5 = $17
|
||||
.label x5_128 = $17
|
||||
.label usinx_1 = $17
|
||||
.label sinx = $17
|
||||
// if(x >= PI_u4f28 )
|
||||
lda.z x+3
|
||||
cmp #>PI_u4f28>>$10
|
||||
@ -850,10 +858,6 @@ sin16s: {
|
||||
jsr mulu16_sel
|
||||
// mulu16_sel(x1, x1, 0)
|
||||
// x2 = mulu16_sel(x1, x1, 0)
|
||||
lda.z mulu16_sel.return
|
||||
sta.z x2
|
||||
lda.z mulu16_sel.return+1
|
||||
sta.z x2+1
|
||||
// mulu16_sel(x2, x1, 1)
|
||||
lda.z x1
|
||||
sta.z mulu16_sel.v2
|
||||
@ -868,6 +872,10 @@ sin16s: {
|
||||
sta.z mulu16_sel.return_1+1
|
||||
// x3 = mulu16_sel(x2, x1, 1)
|
||||
// mulu16_sel(x3, $10000/6, 1)
|
||||
lda.z x3
|
||||
sta.z mulu16_sel.v1
|
||||
lda.z x3+1
|
||||
sta.z mulu16_sel.v1+1
|
||||
ldx #1
|
||||
lda #<$10000/6
|
||||
sta.z mulu16_sel.v2
|
||||
@ -875,16 +883,24 @@ sin16s: {
|
||||
sta.z mulu16_sel.v2+1
|
||||
jsr mulu16_sel
|
||||
// mulu16_sel(x3, $10000/6, 1)
|
||||
lda.z mulu16_sel.return
|
||||
sta.z mulu16_sel.return_2
|
||||
lda.z mulu16_sel.return+1
|
||||
sta.z mulu16_sel.return_2+1
|
||||
// x3_6 = mulu16_sel(x3, $10000/6, 1)
|
||||
// usinx = x1 - x3_6
|
||||
lda.z x1
|
||||
sec
|
||||
sbc.z x3_6
|
||||
sbc.z usinx
|
||||
sta.z usinx
|
||||
lda.z x1+1
|
||||
sbc.z x3_6+1
|
||||
sbc.z usinx+1
|
||||
sta.z usinx+1
|
||||
// mulu16_sel(x3, x1, 0)
|
||||
lda.z x3
|
||||
sta.z mulu16_sel.v1
|
||||
lda.z x3+1
|
||||
sta.z mulu16_sel.v1+1
|
||||
lda.z x1
|
||||
sta.z mulu16_sel.v2
|
||||
lda.z x1+1
|
||||
@ -892,10 +908,6 @@ sin16s: {
|
||||
ldx #0
|
||||
jsr mulu16_sel
|
||||
// mulu16_sel(x3, x1, 0)
|
||||
lda.z mulu16_sel.return
|
||||
sta.z mulu16_sel.return_1
|
||||
lda.z mulu16_sel.return+1
|
||||
sta.z mulu16_sel.return_1+1
|
||||
// x4 = mulu16_sel(x3, x1, 0)
|
||||
// mulu16_sel(x4, x1, 0)
|
||||
lda.z x1
|
||||
@ -905,6 +917,10 @@ sin16s: {
|
||||
ldx #0
|
||||
jsr mulu16_sel
|
||||
// mulu16_sel(x4, x1, 0)
|
||||
lda.z mulu16_sel.return
|
||||
sta.z mulu16_sel.return_3
|
||||
lda.z mulu16_sel.return+1
|
||||
sta.z mulu16_sel.return_3+1
|
||||
// x5 = mulu16_sel(x4, x1, 0)
|
||||
// x5_128 = x5>>4
|
||||
lsr.z x5_128+1
|
||||
@ -916,13 +932,13 @@ sin16s: {
|
||||
lsr.z x5_128+1
|
||||
ror.z x5_128
|
||||
// usinx = usinx + x5_128
|
||||
lda.z usinx
|
||||
lda.z usinx_1
|
||||
clc
|
||||
adc.z x5_128
|
||||
sta.z usinx
|
||||
lda.z usinx+1
|
||||
adc.z x5_128+1
|
||||
sta.z usinx+1
|
||||
adc.z usinx
|
||||
sta.z usinx_1
|
||||
lda.z usinx_1+1
|
||||
adc.z usinx+1
|
||||
sta.z usinx_1+1
|
||||
// if(isUpper!=0)
|
||||
cpy #0
|
||||
beq __b3
|
||||
@ -940,19 +956,17 @@ sin16s: {
|
||||
}
|
||||
// Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result.
|
||||
// The select parameter indicates how many of the highest bits of the 32-bit result to skip
|
||||
// mulu16_sel(word zp($19) v1, word zp($1e) v2, byte register(X) select)
|
||||
// mulu16_sel(word zp($27) v1, word zp($20) v2, byte register(X) select)
|
||||
mulu16_sel: {
|
||||
.label __0 = $b
|
||||
.label __1 = $b
|
||||
.label v1 = $19
|
||||
.label v2 = $1e
|
||||
.label return = $2b
|
||||
.label return_1 = $19
|
||||
.label v1 = $27
|
||||
.label v2 = $20
|
||||
.label return = $27
|
||||
.label return_1 = $31
|
||||
.label return_2 = $2f
|
||||
.label return_3 = $17
|
||||
// mul16u(v1, v2)
|
||||
lda.z v1
|
||||
sta.z mul16u.a
|
||||
lda.z v1+1
|
||||
sta.z mul16u.a+1
|
||||
jsr mul16u
|
||||
// mul16u(v1, v2)
|
||||
// mul16u(v1, v2)<<select
|
||||
@ -977,9 +991,9 @@ mulu16_sel: {
|
||||
// Divide unsigned 32-bit dword dividend with a 16-bit word divisor
|
||||
// The 16-bit word remainder can be found in rem16u after the division
|
||||
div32u16u: {
|
||||
.label quotient_hi = $2d
|
||||
.label quotient_lo = $25
|
||||
.label return = $21
|
||||
.label quotient_hi = $31
|
||||
.label quotient_lo = $20
|
||||
.label return = $23
|
||||
// divr16u(>dividend, divisor, 0)
|
||||
lda #<PI2_u4f28>>$10
|
||||
sta.z divr16u.dividend
|
||||
@ -1019,12 +1033,12 @@ div32u16u: {
|
||||
// Returns the quotient dividend/divisor.
|
||||
// The final remainder will be set into the global variable rem16u
|
||||
// Implemented using simple binary division
|
||||
// divr16u(word zp($1e) dividend, word zp($19) rem)
|
||||
// divr16u(word zp($1a) dividend, word zp($17) rem)
|
||||
divr16u: {
|
||||
.label rem = $19
|
||||
.label dividend = $1e
|
||||
.label quotient = $25
|
||||
.label return = $25
|
||||
.label rem = $17
|
||||
.label dividend = $1a
|
||||
.label quotient = $20
|
||||
.label return = $20
|
||||
ldx #0
|
||||
txa
|
||||
sta.z quotient
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -39,10 +39,10 @@
|
||||
(byte) bitmap_clear::fgcol
|
||||
(byte*) bitmap_gfx
|
||||
(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen)
|
||||
(byte~) bitmap_init::$4 reg byte a 22.0
|
||||
(byte~) bitmap_init::$5 reg byte a 22.0
|
||||
(byte~) bitmap_init::$6 reg byte a 22.0
|
||||
(byte~) bitmap_init::$7 zp[1]:32 5.5
|
||||
(byte~) bitmap_init::$4 reg byte a 2002.0
|
||||
(byte~) bitmap_init::$5 reg byte a 2002.0
|
||||
(byte~) bitmap_init::$6 reg byte a 2002.0
|
||||
(byte~) bitmap_init::$7 zp[1]:34 500.5
|
||||
(label) bitmap_init::@1
|
||||
(label) bitmap_init::@2
|
||||
(label) bitmap_init::@3
|
||||
@ -51,32 +51,32 @@
|
||||
(label) bitmap_init::@6
|
||||
(label) bitmap_init::@return
|
||||
(byte) bitmap_init::bits
|
||||
(byte) bitmap_init::bits#1 reg byte a 11.0
|
||||
(byte) bitmap_init::bits#3 reg byte a 16.5
|
||||
(byte) bitmap_init::bits#4 reg byte a 7.333333333333333
|
||||
(byte) bitmap_init::bits#1 reg byte a 1001.0
|
||||
(byte) bitmap_init::bits#3 reg byte a 1501.5
|
||||
(byte) bitmap_init::bits#4 reg byte a 667.3333333333334
|
||||
(byte*) bitmap_init::gfx
|
||||
(byte*) bitmap_init::screen
|
||||
(byte) bitmap_init::x
|
||||
(byte) bitmap_init::x#1 reg byte x 16.5
|
||||
(byte) bitmap_init::x#2 reg byte x 5.5
|
||||
(byte) bitmap_init::x#1 reg byte x 1501.5
|
||||
(byte) bitmap_init::x#2 reg byte x 500.5
|
||||
(byte) bitmap_init::y
|
||||
(byte) bitmap_init::y#1 reg byte x 16.5
|
||||
(byte) bitmap_init::y#2 reg byte x 5.5
|
||||
(byte) bitmap_init::y#1 reg byte x 1501.5
|
||||
(byte) bitmap_init::y#2 reg byte x 500.5
|
||||
(byte*) bitmap_init::yoffs
|
||||
(byte*) bitmap_init::yoffs#1 yoffs zp[2]:15 22.0
|
||||
(byte*) bitmap_init::yoffs#2 yoffs zp[2]:15 6.875
|
||||
(byte*) bitmap_init::yoffs#4 yoffs zp[2]:15 11.0
|
||||
(byte*) bitmap_init::yoffs#1 yoffs zp[2]:39 2002.0
|
||||
(byte*) bitmap_init::yoffs#2 yoffs zp[2]:39 625.625
|
||||
(byte*) bitmap_init::yoffs#4 yoffs zp[2]:39 1001.0
|
||||
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
|
||||
(word~) bitmap_plot::$1 zp[2]:43 4.0
|
||||
(byte~) bitmap_plot::$2 reg byte a 4.0
|
||||
(word~) bitmap_plot::$1 zp[2]:32 2002.0
|
||||
(byte~) bitmap_plot::$2 reg byte x 2002.0
|
||||
(label) bitmap_plot::@return
|
||||
(byte*) bitmap_plot::plotter
|
||||
(word) bitmap_plot::plotter#0 plotter zp[2]:37 1.0
|
||||
(byte*) bitmap_plot::plotter#1 plotter zp[2]:37 3.0
|
||||
(word) bitmap_plot::plotter#0 plotter zp[2]:30 500.5
|
||||
(byte*) bitmap_plot::plotter#1 plotter zp[2]:30 1501.5
|
||||
(word) bitmap_plot::x
|
||||
(word) bitmap_plot::x#0 x zp[2]:28 3.75
|
||||
(word) bitmap_plot::x#0 x zp[2]:26 525.75
|
||||
(byte) bitmap_plot::y
|
||||
(byte) bitmap_plot::y#0 reg byte x 7.5
|
||||
(byte) bitmap_plot::y#0 reg byte x 1051.5
|
||||
(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
|
||||
(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
|
||||
(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
|
||||
@ -89,15 +89,15 @@
|
||||
(word) div32u16u::divisor
|
||||
(dword) div32u16u::quotient
|
||||
(word) div32u16u::quotient_hi
|
||||
(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:45 0.8
|
||||
(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:49 400.4
|
||||
(word) div32u16u::quotient_lo
|
||||
(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:37 4.0
|
||||
(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:32 2002.0
|
||||
(dword) div32u16u::return
|
||||
(dword) div32u16u::return#0 return zp[4]:33 1.3333333333333333
|
||||
(dword) div32u16u::return#2 return zp[4]:33 4.0
|
||||
(dword) div32u16u::return#0 return zp[4]:35 367.33333333333337
|
||||
(dword) div32u16u::return#2 return zp[4]:35 202.0
|
||||
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
|
||||
(byte~) divr16u::$1 reg byte a 22.0
|
||||
(byte~) divr16u::$2 reg byte a 22.0
|
||||
(byte~) divr16u::$1 reg byte a 200002.0
|
||||
(byte~) divr16u::$2 reg byte a 200002.0
|
||||
(label) divr16u::@1
|
||||
(label) divr16u::@2
|
||||
(label) divr16u::@3
|
||||
@ -106,31 +106,31 @@
|
||||
(label) divr16u::@6
|
||||
(label) divr16u::@return
|
||||
(word) divr16u::dividend
|
||||
(word) divr16u::dividend#0 dividend zp[2]:30 2.75
|
||||
(word) divr16u::dividend#3 dividend zp[2]:30 5.0
|
||||
(word) divr16u::dividend#5 dividend zp[2]:30 2.0
|
||||
(word) divr16u::dividend#0 dividend zp[2]:26 25000.25
|
||||
(word) divr16u::dividend#3 dividend zp[2]:26 44286.28571428572
|
||||
(word) divr16u::dividend#5 dividend zp[2]:26 10001.0
|
||||
(word) divr16u::divisor
|
||||
(byte) divr16u::i
|
||||
(byte) divr16u::i#1 reg byte x 16.5
|
||||
(byte) divr16u::i#2 reg byte x 1.6923076923076923
|
||||
(byte) divr16u::i#1 reg byte x 150001.5
|
||||
(byte) divr16u::i#2 reg byte x 15384.76923076923
|
||||
(word) divr16u::quotient
|
||||
(word) divr16u::quotient#1 quotient zp[2]:37 16.5
|
||||
(word) divr16u::quotient#2 quotient zp[2]:37 11.0
|
||||
(word) divr16u::quotient#3 quotient zp[2]:37 2.75
|
||||
(word) divr16u::quotient#1 quotient zp[2]:32 150001.5
|
||||
(word) divr16u::quotient#2 quotient zp[2]:32 100001.0
|
||||
(word) divr16u::quotient#3 quotient zp[2]:32 25000.25
|
||||
(word) divr16u::rem
|
||||
(word) divr16u::rem#0 rem zp[2]:25 8.25
|
||||
(word) divr16u::rem#1 rem zp[2]:25 22.0
|
||||
(word) divr16u::rem#10 rem zp[2]:25 4.0
|
||||
(word) divr16u::rem#11 rem zp[2]:25 11.666666666666666
|
||||
(word) divr16u::rem#2 rem zp[2]:25 22.0
|
||||
(word) divr16u::rem#4 rem zp[2]:25 4.0
|
||||
(word) divr16u::rem#5 rem zp[2]:25 24.0
|
||||
(word) divr16u::rem#6 rem zp[2]:25 11.0
|
||||
(word) divr16u::rem#0 rem zp[2]:23 75000.75
|
||||
(word) divr16u::rem#1 rem zp[2]:23 200002.0
|
||||
(word) divr16u::rem#10 rem zp[2]:23 11002.0
|
||||
(word) divr16u::rem#11 rem zp[2]:23 103334.66666666667
|
||||
(word) divr16u::rem#2 rem zp[2]:23 200002.0
|
||||
(word) divr16u::rem#4 rem zp[2]:23 2002.0
|
||||
(word) divr16u::rem#5 rem zp[2]:23 210003.0
|
||||
(word) divr16u::rem#6 rem zp[2]:23 100001.0
|
||||
(word) divr16u::return
|
||||
(word) divr16u::return#0 return zp[2]:37 5.285714285714286
|
||||
(word) divr16u::return#2 return zp[2]:37 4.0
|
||||
(word) divr16u::return#3 return zp[2]:37 4.0
|
||||
(byte) frame_cnt loadstore zp[1]:27 0.5454545454545455
|
||||
(word) divr16u::return#0 return zp[2]:32 43143.57142857143
|
||||
(word) divr16u::return#2 return zp[2]:32 2002.0
|
||||
(word) divr16u::return#3 return zp[2]:32 2002.0
|
||||
(byte) frame_cnt loadstore zp[1]:25 3.8181818181818175
|
||||
(void()) init_irq()
|
||||
(label) init_irq::@return
|
||||
interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
@ -138,14 +138,14 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
(label) irq::@2
|
||||
(label) irq::@return
|
||||
(void()) main()
|
||||
(word~) main::$13 zp[2]:30 11.0
|
||||
(signed word~) main::$14 zp[2]:30 22.0
|
||||
(word~) main::$31 zp[2]:9 22.0
|
||||
(word~) main::$32 zp[2]:9 22.0
|
||||
(signed word*~) main::$33 zp[2]:9 22.0
|
||||
(signed word*~) main::$34 zp[2]:9 22.0
|
||||
(word~) main::$7 zp[2]:28 11.0
|
||||
(signed word~) main::$8 zp[2]:28 22.0
|
||||
(word~) main::$13 zp[2]:28 101.0
|
||||
(signed word~) main::$14 zp[2]:28 202.0
|
||||
(word~) main::$31 zp[2]:9 202.0
|
||||
(word~) main::$32 zp[2]:9 202.0
|
||||
(signed word*~) main::$33 zp[2]:9 202.0
|
||||
(signed word*~) main::$34 zp[2]:9 202.0
|
||||
(word~) main::$7 zp[2]:26 101.0
|
||||
(signed word~) main::$8 zp[2]:26 202.0
|
||||
(label) main::@1
|
||||
(label) main::@10
|
||||
(label) main::@11
|
||||
@ -164,60 +164,60 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
(label) main::@8
|
||||
(label) main::@9
|
||||
(signed word) main::cos_x
|
||||
(signed word) main::cos_x#0 cos_x zp[2]:9 11.0
|
||||
(signed word) main::cos_x#0 cos_x zp[2]:9 101.0
|
||||
(word) main::idx_x
|
||||
(word) main::idx_x#1 idx_x zp[2]:2 11.0
|
||||
(word) main::idx_x#10 idx_x zp[2]:2 3.0
|
||||
(word) main::idx_x#11 idx_x zp[2]:2 1.222222222222222
|
||||
(word) main::idx_x#1 idx_x zp[2]:2 101.0
|
||||
(word) main::idx_x#10 idx_x zp[2]:2 27.545454545454547
|
||||
(word) main::idx_x#11 idx_x zp[2]:2 11.222222222222223
|
||||
(word) main::idx_y
|
||||
(word) main::idx_y#1 idx_y zp[2]:6 11.0
|
||||
(word) main::idx_y#10 idx_y zp[2]:6 3.142857142857143
|
||||
(word) main::idx_y#3 idx_y zp[2]:6 1.064516129032258
|
||||
(word) main::idx_y#1 idx_y zp[2]:6 101.0
|
||||
(word) main::idx_y#10 idx_y zp[2]:6 28.857142857142858
|
||||
(word) main::idx_y#3 idx_y zp[2]:6 9.774193548387098
|
||||
(signed word) main::r
|
||||
(signed word) main::r#1 r zp[2]:4 5.5
|
||||
(signed word) main::r#10 r zp[2]:4 1.2571428571428571
|
||||
(signed word) main::r#1 r zp[2]:4 50.5
|
||||
(signed word) main::r#10 r zp[2]:4 11.542857142857143
|
||||
(byte) main::r_add
|
||||
(byte) main::r_add#1 r_add zp[1]:8 22.0
|
||||
(byte) main::r_add#10 r_add zp[1]:8 2.026315789473684
|
||||
(byte) main::r_add#12 r_add zp[1]:8 16.5
|
||||
(byte) main::r_add#1 r_add zp[1]:8 202.0
|
||||
(byte) main::r_add#10 r_add zp[1]:8 18.60526315789474
|
||||
(byte) main::r_add#12 r_add zp[1]:8 151.5
|
||||
(signed word) main::sin_y
|
||||
(signed word) main::sin_y#0 sin_y zp[2]:9 11.0
|
||||
(signed word) main::sin_y#0 sin_y zp[2]:9 101.0
|
||||
(label) main::toD0181
|
||||
(byte*) main::toD0181_gfx
|
||||
(byte) main::toD0181_return
|
||||
(const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) SCREEN&(word) $3fff*(byte) 4|>(word)(const byte*) BITMAP/(byte) 4&(byte) $f
|
||||
(byte*) main::toD0181_screen
|
||||
(word) main::x
|
||||
(signed word) main::x#0 x zp[2]:28 0.8461538461538461
|
||||
(signed word) main::x#0 x zp[2]:26 7.769230769230769
|
||||
(signed dword) main::xpos
|
||||
(signed dword) main::xpos#0 xpos zp[4]:11 22.0
|
||||
(signed dword) main::xpos#0 xpos zp[4]:11 202.0
|
||||
(word) main::y
|
||||
(signed word) main::y#0 y zp[2]:30 11.0
|
||||
(signed word) main::y#0 y zp[2]:28 101.0
|
||||
(signed dword) main::ypos
|
||||
(signed dword) main::ypos#0 ypos zp[4]:11 22.0
|
||||
(signed dword) main::ypos#0 ypos zp[4]:11 202.0
|
||||
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
||||
(label) memset::@1
|
||||
(label) memset::@2
|
||||
(label) memset::@3
|
||||
(label) memset::@return
|
||||
(byte) memset::c
|
||||
(byte) memset::c#4 reg byte x 1.375
|
||||
(byte) memset::c#4 reg byte x 1250.125
|
||||
(byte*) memset::dst
|
||||
(byte*) memset::dst#1 dst zp[2]:37 22.0
|
||||
(byte*) memset::dst#2 dst zp[2]:37 15.333333333333332
|
||||
(byte*) memset::dst#4 dst zp[2]:37 4.0
|
||||
(byte*) memset::dst#1 dst zp[2]:32 20002.0
|
||||
(byte*) memset::dst#2 dst zp[2]:32 13668.333333333332
|
||||
(byte*) memset::dst#4 dst zp[2]:32 2002.0
|
||||
(byte*) memset::end
|
||||
(byte*) memset::end#0 end zp[2]:30 2.1666666666666665
|
||||
(byte*) memset::end#0 end zp[2]:23 1833.6666666666665
|
||||
(word) memset::num
|
||||
(word) memset::num#2 num zp[2]:30 2.0
|
||||
(word) memset::num#2 num zp[2]:23 1001.0
|
||||
(void*) memset::return
|
||||
(void*) memset::str
|
||||
(void*) memset::str#3 str zp[2]:37
|
||||
(void*) memset::str#3 str zp[2]:32
|
||||
(signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b)
|
||||
(word~) mul16s::$13 zp[2]:37 4.0
|
||||
(word~) mul16s::$16 zp[2]:43 4.0
|
||||
(word~) mul16s::$17 zp[2]:37 4.0
|
||||
(word~) mul16s::$9 zp[2]:43 4.0
|
||||
(word~) mul16s::$13 zp[2]:45 20002.0
|
||||
(word~) mul16s::$16 zp[2]:39 20002.0
|
||||
(word~) mul16s::$17 zp[2]:23 20002.0
|
||||
(word~) mul16s::$9 zp[2]:39 20002.0
|
||||
(label) mul16s::@1
|
||||
(label) mul16s::@2
|
||||
(label) mul16s::@3
|
||||
@ -225,85 +225,85 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
(label) mul16s::@5
|
||||
(label) mul16s::@return
|
||||
(signed word) mul16s::a
|
||||
(signed word) mul16s::a#0 a zp[2]:4 22.0
|
||||
(signed word) mul16s::a#1 a zp[2]:4 11.0
|
||||
(signed word) mul16s::a#2 a zp[2]:4 11.0
|
||||
(signed word) mul16s::a#3 a zp[2]:4 2.692307692307692
|
||||
(signed word) mul16s::a#0 a zp[2]:23 2002.0
|
||||
(signed word) mul16s::a#1 a zp[2]:23 101.0
|
||||
(signed word) mul16s::a#2 a zp[2]:23 101.0
|
||||
(signed word) mul16s::a#3 a zp[2]:23 861.8461538461538
|
||||
(signed word) mul16s::b
|
||||
(signed word) mul16s::b#1 b zp[2]:9 22.0
|
||||
(signed word) mul16s::b#2 b zp[2]:9 22.0
|
||||
(signed word) mul16s::b#3 b zp[2]:9 2.1818181818181817
|
||||
(signed word) mul16s::b#1 b zp[2]:9 202.0
|
||||
(signed word) mul16s::b#2 b zp[2]:9 202.0
|
||||
(signed word) mul16s::b#3 b zp[2]:9 927.5454545454545
|
||||
(dword) mul16s::m
|
||||
(dword) mul16s::m#0 m zp[4]:11 2.0
|
||||
(dword) mul16s::m#1 m zp[4]:11 4.0
|
||||
(dword) mul16s::m#2 m zp[4]:11 4.0
|
||||
(dword) mul16s::m#4 m zp[4]:11 4.0
|
||||
(dword) mul16s::m#5 m zp[4]:11 2.5
|
||||
(dword) mul16s::m#0 m zp[4]:11 10001.0
|
||||
(dword) mul16s::m#1 m zp[4]:11 20002.0
|
||||
(dword) mul16s::m#2 m zp[4]:11 20002.0
|
||||
(dword) mul16s::m#4 m zp[4]:11 20002.0
|
||||
(dword) mul16s::m#5 m zp[4]:11 12501.25
|
||||
(signed dword) mul16s::return
|
||||
(signed dword) mul16s::return#0 return zp[4]:11 7.000000000000001
|
||||
(signed dword) mul16s::return#2 return zp[4]:11 22.0
|
||||
(signed dword) mul16s::return#3 return zp[4]:11 22.0
|
||||
(signed dword) mul16s::return#4 return zp[4]:11 22.0
|
||||
(signed dword) mul16s::return#0 return zp[4]:11 2240.8
|
||||
(signed dword) mul16s::return#2 return zp[4]:11 2002.0
|
||||
(signed dword) mul16s::return#3 return zp[4]:11 202.0
|
||||
(signed dword) mul16s::return#4 return zp[4]:11 202.0
|
||||
(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
|
||||
(byte~) mul16u::$1 reg byte a 202.0
|
||||
(byte~) mul16u::$1 reg byte a 2.00000002E8
|
||||
(label) mul16u::@1
|
||||
(label) mul16u::@2
|
||||
(label) mul16u::@3
|
||||
(label) mul16u::@4
|
||||
(label) mul16u::@return
|
||||
(word) mul16u::a
|
||||
(word) mul16u::a#0 a zp[2]:37 101.0
|
||||
(word) mul16u::a#1 a zp[2]:37 2.0
|
||||
(word) mul16u::a#2 a zp[2]:37 2.0
|
||||
(word) mul16u::a#3 a zp[2]:37 67.66666666666666
|
||||
(word) mul16u::a#6 a zp[2]:37 3.0
|
||||
(word) mul16u::a#0 a zp[2]:39 1.00000001E8
|
||||
(word) mul16u::a#1 a zp[2]:39 10001.0
|
||||
(word) mul16u::a#2 a zp[2]:39 100001.0
|
||||
(word) mul16u::a#3 a zp[2]:39 6.683333416666667E7
|
||||
(word) mul16u::a#6 a zp[2]:39 555001.5
|
||||
(word) mul16u::b
|
||||
(word) mul16u::b#0 b zp[2]:30 4.0
|
||||
(word) mul16u::b#1 b zp[2]:30 4.0
|
||||
(word) mul16u::b#2 b zp[2]:30 4.0
|
||||
(word) mul16u::b#0 b zp[2]:32 20002.0
|
||||
(word) mul16u::b#1 b zp[2]:32 200002.0
|
||||
(word) mul16u::b#2 b zp[2]:32 110002.0
|
||||
(dword) mul16u::mb
|
||||
(dword) mul16u::mb#0 mb zp[4]:21 4.0
|
||||
(dword) mul16u::mb#1 mb zp[4]:21 202.0
|
||||
(dword) mul16u::mb#2 mb zp[4]:21 43.57142857142858
|
||||
(dword) mul16u::mb#0 mb zp[4]:19 2000002.0
|
||||
(dword) mul16u::mb#1 mb zp[4]:19 2.00000002E8
|
||||
(dword) mul16u::mb#2 mb zp[4]:19 4.300000057142857E7
|
||||
(dword) mul16u::res
|
||||
(dword) mul16u::res#1 res zp[4]:11 202.0
|
||||
(dword) mul16u::res#2 res zp[4]:11 43.85714285714286
|
||||
(dword) mul16u::res#6 res zp[4]:11 101.0
|
||||
(dword) mul16u::res#1 res zp[4]:11 2.00000002E8
|
||||
(dword) mul16u::res#2 res zp[4]:11 4.287285785714286E7
|
||||
(dword) mul16u::res#6 res zp[4]:11 1.00000001E8
|
||||
(dword) mul16u::return
|
||||
(dword) mul16u::return#2 return zp[4]:11 4.0
|
||||
(dword) mul16u::return#3 return zp[4]:11 4.0
|
||||
(dword) mul16u::return#2 return zp[4]:11 20002.0
|
||||
(dword) mul16u::return#3 return zp[4]:11 200002.0
|
||||
(word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select)
|
||||
(dword~) mulu16_sel::$0 zp[4]:11 4.0
|
||||
(dword~) mulu16_sel::$1 zp[4]:11 4.0
|
||||
(dword~) mulu16_sel::$0 zp[4]:11 200002.0
|
||||
(dword~) mulu16_sel::$1 zp[4]:11 200002.0
|
||||
(label) mulu16_sel::@1
|
||||
(label) mulu16_sel::@return
|
||||
(word) mulu16_sel::return
|
||||
(word) mulu16_sel::return#0 return zp[2]:43 4.0
|
||||
(word) mulu16_sel::return#1 return_1 zp[2]:25 4.0
|
||||
(word) mulu16_sel::return#10 return_1 zp[2]:25 4.0
|
||||
(word) mulu16_sel::return#11 return zp[2]:43 4.0
|
||||
(word) mulu16_sel::return#12 return zp[2]:43 1.714285714285714
|
||||
(word) mulu16_sel::return#2 return zp[2]:43 4.0
|
||||
(word) mulu16_sel::return#0 return zp[2]:39 20002.0
|
||||
(word) mulu16_sel::return#1 return_1 zp[2]:49 20002.0
|
||||
(word) mulu16_sel::return#10 return zp[2]:39 20002.0
|
||||
(word) mulu16_sel::return#11 return_3 zp[2]:23 20002.0
|
||||
(word) mulu16_sel::return#12 return zp[2]:39 21429.428571428572
|
||||
(word) mulu16_sel::return#2 return_2 zp[2]:47 20002.0
|
||||
(byte) mulu16_sel::select
|
||||
(byte) mulu16_sel::select#5 reg byte x 0.3333333333333333
|
||||
(byte) mulu16_sel::select#5 reg byte x 16666.833333333332
|
||||
(word) mulu16_sel::v1
|
||||
(word) mulu16_sel::v1#0 v1 zp[2]:25 2.0
|
||||
(word) mulu16_sel::v1#1 v1 zp[2]:25 2.0
|
||||
(word) mulu16_sel::v1#2 v1 zp[2]:25 4.0
|
||||
(word) mulu16_sel::v1#3 v1 zp[2]:25 2.0
|
||||
(word) mulu16_sel::v1#4 v1 zp[2]:25 2.0
|
||||
(word) mulu16_sel::v1#5 v1 zp[2]:25 12.0
|
||||
(word) mulu16_sel::v1#0 v1 zp[2]:39 10001.0
|
||||
(word) mulu16_sel::v1#1 v1 zp[2]:39 10001.0
|
||||
(word) mulu16_sel::v1#2 v1 zp[2]:39 20002.0
|
||||
(word) mulu16_sel::v1#3 v1 zp[2]:39 10001.0
|
||||
(word) mulu16_sel::v1#4 v1 zp[2]:39 10001.0
|
||||
(word) mulu16_sel::v1#5 v1 zp[2]:39 150006.0
|
||||
(word) mulu16_sel::v2
|
||||
(word) mulu16_sel::v2#0 v2 zp[2]:30 4.0
|
||||
(word) mulu16_sel::v2#1 v2 zp[2]:30 4.0
|
||||
(word) mulu16_sel::v2#3 v2 zp[2]:30 4.0
|
||||
(word) mulu16_sel::v2#4 v2 zp[2]:30 4.0
|
||||
(word) mulu16_sel::v2#5 v2 zp[2]:30 5.0
|
||||
(word) mulu16_sel::v2#0 v2 zp[2]:32 20002.0
|
||||
(word) mulu16_sel::v2#1 v2 zp[2]:32 20002.0
|
||||
(word) mulu16_sel::v2#3 v2 zp[2]:32 20002.0
|
||||
(word) mulu16_sel::v2#4 v2 zp[2]:32 20002.0
|
||||
(word) mulu16_sel::v2#5 v2 zp[2]:32 70002.5
|
||||
(const byte*) plots_per_frame[(number) $100] = { fill( $100, 0) }
|
||||
(word) rem16u
|
||||
(word) rem16u#1 rem16u zp[2]:25 0.8
|
||||
(word) rem16u#1 rem16u zp[2]:23 2200.4
|
||||
(signed word()) sin16s((dword) sin16s::x)
|
||||
(dword~) sin16s::$4 zp[4]:39 4.0
|
||||
(dword~) sin16s::$4 zp[4]:41 20002.0
|
||||
(label) sin16s::@1
|
||||
(label) sin16s::@10
|
||||
(label) sin16s::@11
|
||||
@ -318,39 +318,39 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
(label) sin16s::@9
|
||||
(label) sin16s::@return
|
||||
(byte) sin16s::isUpper
|
||||
(byte) sin16s::isUpper#2 reg byte y 0.06060606060606061
|
||||
(byte) sin16s::isUpper#2 reg byte y 303.06060606060606
|
||||
(signed word) sin16s::return
|
||||
(signed word) sin16s::return#0 return zp[2]:4 22.0
|
||||
(signed word) sin16s::return#1 return zp[2]:4 5.0
|
||||
(signed word) sin16s::return#5 return zp[2]:4 4.0
|
||||
(signed word) sin16s::return#0 return zp[2]:23 2002.0
|
||||
(signed word) sin16s::return#1 return zp[2]:23 7001.0
|
||||
(signed word) sin16s::return#5 return zp[2]:23 20002.0
|
||||
(signed word) sin16s::sinx
|
||||
(signed word) sin16s::sinx#1 sinx zp[2]:4 4.0
|
||||
(signed word) sin16s::sinx#1 sinx zp[2]:23 20002.0
|
||||
(word) sin16s::usinx
|
||||
(word) sin16s::usinx#0 usinx zp[2]:4 0.3333333333333333
|
||||
(word) sin16s::usinx#1 usinx zp[2]:4 1.0
|
||||
(word) sin16s::usinx#0 usinx zp[2]:47 1666.8333333333333
|
||||
(word) sin16s::usinx#1 usinx_1 zp[2]:23 5000.5
|
||||
(dword) sin16s::x
|
||||
(dword) sin16s::x#0 x zp[4]:21 8.5
|
||||
(dword) sin16s::x#1 x zp[4]:21 4.0
|
||||
(dword) sin16s::x#2 x zp[4]:21 4.0
|
||||
(dword) sin16s::x#4 x zp[4]:21 5.0
|
||||
(dword) sin16s::x#6 x zp[4]:21 6.0
|
||||
(dword) sin16s::x#0 x zp[4]:19 15502.0
|
||||
(dword) sin16s::x#1 x zp[4]:19 20002.0
|
||||
(dword) sin16s::x#2 x zp[4]:19 20002.0
|
||||
(dword) sin16s::x#4 x zp[4]:19 25002.5
|
||||
(dword) sin16s::x#6 x zp[4]:19 30003.0
|
||||
(word) sin16s::x1
|
||||
(word) sin16s::x1#0 x1 zp[2]:45 0.6363636363636365
|
||||
(word) sin16s::x1#0 x1 zp[2]:45 3182.1363636363635
|
||||
(word) sin16s::x2
|
||||
(word) sin16s::x2#0 x2 zp[2]:25 4.0
|
||||
(word) sin16s::x2#0 x2 zp[2]:39 20002.0
|
||||
(word) sin16s::x3
|
||||
(word) sin16s::x3#0 x3 zp[2]:25 1.0
|
||||
(word) sin16s::x3#0 x3 zp[2]:49 5000.5
|
||||
(word) sin16s::x3_6
|
||||
(word) sin16s::x3_6#0 x3_6 zp[2]:43 4.0
|
||||
(word) sin16s::x3_6#0 x3_6 zp[2]:47 20002.0
|
||||
(word) sin16s::x4
|
||||
(word) sin16s::x4#0 x4 zp[2]:25 4.0
|
||||
(word) sin16s::x4#0 x4 zp[2]:39 20002.0
|
||||
(word) sin16s::x5
|
||||
(word) sin16s::x5#0 x5 zp[2]:43 4.0
|
||||
(word) sin16s::x5#0 x5 zp[2]:23 20002.0
|
||||
(word) sin16s::x5_128
|
||||
(word) sin16s::x5_128#0 x5_128 zp[2]:43 4.0
|
||||
(word) sin16s::x5_128#0 x5_128 zp[2]:23 20002.0
|
||||
(void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max)
|
||||
(signed dword~) sin16s_gen2::$6 zp[4]:11 22.0
|
||||
(word~) sin16s_gen2::$9 zp[2]:37 11.0
|
||||
(signed dword~) sin16s_gen2::$6 zp[4]:11 2002.0
|
||||
(word~) sin16s_gen2::$9 zp[2]:39 1001.0
|
||||
(label) sin16s_gen2::@1
|
||||
(label) sin16s_gen2::@2
|
||||
(label) sin16s_gen2::@3
|
||||
@ -360,26 +360,26 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
(signed word) sin16s_gen2::ampl
|
||||
(const signed word) sin16s_gen2::ampl#0 ampl = (const signed word) sin16s_gen2::max#0-(const signed word) sin16s_gen2::min#0
|
||||
(word) sin16s_gen2::i
|
||||
(word) sin16s_gen2::i#1 i zp[2]:15 22.0
|
||||
(word) sin16s_gen2::i#2 i zp[2]:15 2.5384615384615383
|
||||
(word) sin16s_gen2::i#1 i zp[2]:28 2002.0
|
||||
(word) sin16s_gen2::i#2 i zp[2]:28 231.0
|
||||
(signed word) sin16s_gen2::max
|
||||
(const signed word) sin16s_gen2::max#0 max = (signed word) $1001
|
||||
(signed word) sin16s_gen2::min
|
||||
(const signed word) sin16s_gen2::min#0 min = (signed word) -$1001
|
||||
(signed word) sin16s_gen2::offs
|
||||
(signed word*) sin16s_gen2::sintab
|
||||
(signed word*) sin16s_gen2::sintab#0 sintab zp[2]:28 7.333333333333333
|
||||
(signed word*) sin16s_gen2::sintab#2 sintab zp[2]:28 3.0
|
||||
(signed word*) sin16s_gen2::sintab#0 sintab zp[2]:30 667.3333333333334
|
||||
(signed word*) sin16s_gen2::sintab#2 sintab zp[2]:30 273.0
|
||||
(dword) sin16s_gen2::step
|
||||
(dword) sin16s_gen2::step#0 step zp[4]:33 0.8666666666666666
|
||||
(dword) sin16s_gen2::step#0 step zp[4]:35 73.46666666666667
|
||||
(word) sin16s_gen2::wavelength
|
||||
(const word) sin16s_gen2::wavelength#0 wavelength = (word) $200
|
||||
(dword) sin16s_gen2::x
|
||||
(dword) sin16s_gen2::x#1 x zp[4]:17 11.0
|
||||
(dword) sin16s_gen2::x#2 x zp[4]:17 2.75
|
||||
(dword) sin16s_gen2::x#1 x zp[4]:15 1001.0
|
||||
(dword) sin16s_gen2::x#2 x zp[4]:15 250.25
|
||||
|
||||
zp[2]:2 [ main::idx_x#11 main::idx_x#10 main::idx_x#1 ]
|
||||
zp[2]:4 [ main::r#10 main::r#1 mul16s::a#3 mul16s::a#1 mul16s::a#2 mul16s::a#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s::usinx#0 ]
|
||||
zp[2]:4 [ main::r#10 main::r#1 ]
|
||||
zp[2]:6 [ main::idx_y#3 main::idx_y#10 main::idx_y#1 ]
|
||||
zp[1]:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ]
|
||||
zp[2]:9 [ mul16s::b#3 mul16s::b#1 mul16s::b#2 main::cos_x#0 main::sin_y#0 main::$31 main::$33 main::$32 main::$34 ]
|
||||
@ -388,27 +388,29 @@ reg byte x [ memset::c#4 ]
|
||||
reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
||||
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
|
||||
reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
zp[2]:15 [ sin16s_gen2::i#2 sin16s_gen2::i#1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
||||
zp[4]:17 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ]
|
||||
zp[4]:15 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ]
|
||||
reg byte y [ sin16s::isUpper#2 ]
|
||||
zp[4]:21 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]
|
||||
zp[4]:19 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]
|
||||
reg byte x [ mulu16_sel::select#5 ]
|
||||
zp[2]:25 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 ]
|
||||
zp[2]:23 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 memset::num#2 memset::end#0 mul16s::a#3 mul16s::a#1 mul16s::a#2 mul16s::a#0 mul16s::$17 sin16s::return#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ]
|
||||
reg byte x [ divr16u::i#2 divr16u::i#1 ]
|
||||
zp[1]:27 [ frame_cnt ]
|
||||
zp[2]:28 [ main::$7 main::$8 main::x#0 bitmap_plot::x#0 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ]
|
||||
zp[2]:30 [ main::$13 main::$14 main::y#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 memset::num#2 memset::end#0 mul16u::b#2 mul16u::b#0 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ]
|
||||
zp[1]:25 [ frame_cnt ]
|
||||
zp[2]:26 [ main::$7 main::$8 main::x#0 bitmap_plot::x#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ]
|
||||
zp[2]:28 [ main::$13 main::$14 main::y#0 sin16s_gen2::i#2 sin16s_gen2::i#1 ]
|
||||
reg byte x [ bitmap_plot::y#0 ]
|
||||
reg byte a [ bitmap_plot::$2 ]
|
||||
zp[2]:30 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ]
|
||||
zp[2]:32 [ bitmap_plot::$1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 mul16u::b#2 mul16u::b#0 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ]
|
||||
reg byte x [ bitmap_plot::$2 ]
|
||||
reg byte a [ mul16u::$1 ]
|
||||
zp[1]:32 [ bitmap_init::$7 ]
|
||||
zp[1]:34 [ bitmap_init::$7 ]
|
||||
reg byte a [ bitmap_init::$4 ]
|
||||
reg byte a [ bitmap_init::$5 ]
|
||||
reg byte a [ bitmap_init::$6 ]
|
||||
zp[4]:33 [ div32u16u::return#2 sin16s_gen2::step#0 div32u16u::return#0 ]
|
||||
zp[2]:37 [ sin16s_gen2::$9 mul16s::$13 mul16s::$17 bitmap_plot::plotter#0 bitmap_plot::plotter#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ]
|
||||
zp[4]:39 [ sin16s::$4 ]
|
||||
zp[2]:43 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 mul16s::$9 mul16s::$16 bitmap_plot::$1 ]
|
||||
zp[2]:45 [ div32u16u::quotient_hi#0 sin16s::x1#0 ]
|
||||
zp[4]:35 [ div32u16u::return#2 sin16s_gen2::step#0 div32u16u::return#0 ]
|
||||
zp[2]:39 [ sin16s_gen2::$9 mul16s::$9 mul16s::$16 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::return#0 sin16s::x2#0 mulu16_sel::return#12 mulu16_sel::return#10 sin16s::x4#0 ]
|
||||
zp[4]:41 [ sin16s::$4 ]
|
||||
zp[2]:45 [ sin16s::x1#0 mul16s::$13 ]
|
||||
zp[2]:47 [ mulu16_sel::return#2 sin16s::x3_6#0 sin16s::usinx#0 ]
|
||||
zp[2]:49 [ div32u16u::quotient_hi#0 mulu16_sel::return#1 sin16s::x3#0 ]
|
||||
reg byte a [ divr16u::$1 ]
|
||||
reg byte a [ divr16u::$2 ]
|
||||
|
@ -15,7 +15,7 @@
|
||||
main: {
|
||||
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>BITMAP)/4&$f
|
||||
.label __4 = 4
|
||||
.label __8 = $10
|
||||
.label __8 = $12
|
||||
.label a = 3
|
||||
.label i = 2
|
||||
// bitmap_init(BITMAP, SCREEN)
|
||||
@ -88,20 +88,20 @@ main: {
|
||||
jmp __b1
|
||||
}
|
||||
// Draw a line on the bitmap using bresenhams algorithm
|
||||
// bitmap_line(word zp(4) x1, word zp($c) y1, word zp($10) x2, word zp($12) y2)
|
||||
// bitmap_line(word zp(4) x1, word zp($e) y1, word zp($12) x2, word zp($14) y2)
|
||||
bitmap_line: {
|
||||
.label dx = $14
|
||||
.label dy = 8
|
||||
.label sx = $16
|
||||
.label sy = 6
|
||||
.label e1 = $e
|
||||
.label e = $a
|
||||
.label y = $c
|
||||
.label dx = $16
|
||||
.label dy = $a
|
||||
.label sx = $18
|
||||
.label sy = 8
|
||||
.label e1 = $10
|
||||
.label e = $c
|
||||
.label y = $e
|
||||
.label x = 4
|
||||
.label x1 = 4
|
||||
.label y1 = $c
|
||||
.label x2 = $10
|
||||
.label y2 = $12
|
||||
.label y1 = $e
|
||||
.label x2 = $12
|
||||
.label y2 = $14
|
||||
// abs_u16(x2-x1)
|
||||
lda.z x2
|
||||
sec
|
||||
@ -187,6 +187,10 @@ bitmap_line: {
|
||||
// bitmap_plot(x,(byte)y)
|
||||
lda.z y
|
||||
tax
|
||||
lda.z x
|
||||
sta.z bitmap_plot.x
|
||||
lda.z x+1
|
||||
sta.z bitmap_plot.x+1
|
||||
jsr bitmap_plot
|
||||
// y += sy
|
||||
lda.z y
|
||||
@ -240,6 +244,10 @@ bitmap_line: {
|
||||
// bitmap_plot(x,(byte)y)
|
||||
lda.z y
|
||||
tax
|
||||
lda.z x
|
||||
sta.z bitmap_plot.x
|
||||
lda.z x+1
|
||||
sta.z bitmap_plot.x+1
|
||||
jsr bitmap_plot
|
||||
// }
|
||||
rts
|
||||
@ -255,6 +263,10 @@ bitmap_line: {
|
||||
// bitmap_plot(x,(byte)y)
|
||||
lda.z y
|
||||
tax
|
||||
lda.z x
|
||||
sta.z bitmap_plot.x
|
||||
lda.z x+1
|
||||
sta.z bitmap_plot.x+1
|
||||
jsr bitmap_plot
|
||||
// x += sx
|
||||
lda.z x
|
||||
@ -309,15 +321,19 @@ bitmap_line: {
|
||||
// bitmap_plot(x,(byte)y)
|
||||
lda.z y1
|
||||
tax
|
||||
lda.z x1
|
||||
sta.z bitmap_plot.x
|
||||
lda.z x1+1
|
||||
sta.z bitmap_plot.x+1
|
||||
jsr bitmap_plot
|
||||
rts
|
||||
}
|
||||
// Plot a single dot in the bitmap
|
||||
// bitmap_plot(word zp(4) x, byte register(X) y)
|
||||
// bitmap_plot(word zp(6) x, byte register(X) y)
|
||||
bitmap_plot: {
|
||||
.label __1 = $1a
|
||||
.label plotter = $18
|
||||
.label x = 4
|
||||
.label __1 = $1c
|
||||
.label plotter = $1a
|
||||
.label x = 6
|
||||
// (byte*) { bitmap_plot_yhi[y], bitmap_plot_ylo[y] }
|
||||
lda bitmap_plot_yhi,x
|
||||
sta.z plotter+1
|
||||
@ -339,10 +355,9 @@ bitmap_plot: {
|
||||
adc.z __1+1
|
||||
sta.z plotter+1
|
||||
// <x
|
||||
lda.z x
|
||||
ldx.z x
|
||||
// *plotter |= bitmap_plot_bit[<x]
|
||||
tay
|
||||
lda bitmap_plot_bit,y
|
||||
lda bitmap_plot_bit,x
|
||||
ldy #0
|
||||
ora (plotter),y
|
||||
sta (plotter),y
|
||||
@ -351,10 +366,10 @@ bitmap_plot: {
|
||||
}
|
||||
// Get the sign of a 16-bit unsigned number treated as a signed number.
|
||||
// Returns unsigned -1 if the number is
|
||||
// sgn_u16(word zp($18) w)
|
||||
// sgn_u16(word zp(6) w)
|
||||
sgn_u16: {
|
||||
.label w = $18
|
||||
.label return = 6
|
||||
.label w = 6
|
||||
.label return = 8
|
||||
// >w
|
||||
lda.z w+1
|
||||
// >w&0x80
|
||||
@ -375,10 +390,10 @@ sgn_u16: {
|
||||
rts
|
||||
}
|
||||
// Get the absolute value of a 16-bit unsigned number treated as a signed number.
|
||||
// abs_u16(word zp(8) w)
|
||||
// abs_u16(word zp($a) w)
|
||||
abs_u16: {
|
||||
.label w = 8
|
||||
.label return = 8
|
||||
.label w = $a
|
||||
.label return = $a
|
||||
// >w
|
||||
lda.z w+1
|
||||
// >w&0x80
|
||||
@ -430,12 +445,12 @@ bitmap_clear: {
|
||||
rts
|
||||
}
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
// memset(void* zp($c) str, byte register(X) c, word zp($a) num)
|
||||
// memset(void* zp($e) str, byte register(X) c, word zp($c) num)
|
||||
memset: {
|
||||
.label end = $a
|
||||
.label dst = $c
|
||||
.label num = $a
|
||||
.label str = $c
|
||||
.label end = $c
|
||||
.label dst = $e
|
||||
.label num = $c
|
||||
.label str = $e
|
||||
// if(num>0)
|
||||
lda.z num
|
||||
bne !+
|
||||
@ -475,8 +490,8 @@ memset: {
|
||||
}
|
||||
// Initialize bitmap plotting tables
|
||||
bitmap_init: {
|
||||
.label __7 = $1c
|
||||
.label yoffs = $e
|
||||
.label __7 = $1e
|
||||
.label yoffs = $10
|
||||
ldx #0
|
||||
lda #$80
|
||||
__b1:
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -16,19 +16,19 @@
|
||||
(const byte) VIC_RSEL = (byte) 8
|
||||
(const byte) WHITE = (byte) 1
|
||||
(word()) abs_u16((word) abs_u16::w)
|
||||
(byte~) abs_u16::$0 reg byte a 4.0
|
||||
(byte~) abs_u16::$1 reg byte a 4.0
|
||||
(byte~) abs_u16::$0 reg byte a 20002.0
|
||||
(byte~) abs_u16::$1 reg byte a 20002.0
|
||||
(label) abs_u16::@1
|
||||
(label) abs_u16::@return
|
||||
(word) abs_u16::return
|
||||
(word) abs_u16::return#0 return zp[2]:8 4.0
|
||||
(word) abs_u16::return#1 return zp[2]:8 4.0
|
||||
(word) abs_u16::return#2 return zp[2]:8 4.0
|
||||
(word) abs_u16::return#4 return zp[2]:8 2.0
|
||||
(word) abs_u16::return#0 return zp[2]:10 2002.0
|
||||
(word) abs_u16::return#1 return zp[2]:10 2002.0
|
||||
(word) abs_u16::return#2 return zp[2]:10 20002.0
|
||||
(word) abs_u16::return#4 return zp[2]:10 5501.0
|
||||
(word) abs_u16::w
|
||||
(word) abs_u16::w#0 w zp[2]:8 4.0
|
||||
(word) abs_u16::w#1 w zp[2]:8 4.0
|
||||
(word) abs_u16::w#2 w zp[2]:8 2.5
|
||||
(word) abs_u16::w#0 w zp[2]:10 2002.0
|
||||
(word) abs_u16::w#1 w zp[2]:10 2002.0
|
||||
(word) abs_u16::w#2 w zp[2]:10 8001.25
|
||||
(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol)
|
||||
(label) bitmap_clear::@1
|
||||
(label) bitmap_clear::@return
|
||||
@ -38,10 +38,10 @@
|
||||
(byte) bitmap_clear::fgcol
|
||||
(byte*) bitmap_gfx
|
||||
(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen)
|
||||
(byte~) bitmap_init::$4 reg byte a 22.0
|
||||
(byte~) bitmap_init::$5 reg byte a 22.0
|
||||
(byte~) bitmap_init::$6 reg byte a 22.0
|
||||
(byte~) bitmap_init::$7 zp[1]:28 5.5
|
||||
(byte~) bitmap_init::$4 reg byte a 2002.0
|
||||
(byte~) bitmap_init::$5 reg byte a 2002.0
|
||||
(byte~) bitmap_init::$6 reg byte a 2002.0
|
||||
(byte~) bitmap_init::$7 zp[1]:30 500.5
|
||||
(label) bitmap_init::@1
|
||||
(label) bitmap_init::@2
|
||||
(label) bitmap_init::@3
|
||||
@ -50,21 +50,21 @@
|
||||
(label) bitmap_init::@6
|
||||
(label) bitmap_init::@return
|
||||
(byte) bitmap_init::bits
|
||||
(byte) bitmap_init::bits#1 reg byte a 11.0
|
||||
(byte) bitmap_init::bits#3 reg byte a 16.5
|
||||
(byte) bitmap_init::bits#4 reg byte a 7.333333333333333
|
||||
(byte) bitmap_init::bits#1 reg byte a 1001.0
|
||||
(byte) bitmap_init::bits#3 reg byte a 1501.5
|
||||
(byte) bitmap_init::bits#4 reg byte a 667.3333333333334
|
||||
(byte*) bitmap_init::gfx
|
||||
(byte*) bitmap_init::screen
|
||||
(byte) bitmap_init::x
|
||||
(byte) bitmap_init::x#1 reg byte x 16.5
|
||||
(byte) bitmap_init::x#2 reg byte x 5.5
|
||||
(byte) bitmap_init::x#1 reg byte x 1501.5
|
||||
(byte) bitmap_init::x#2 reg byte x 500.5
|
||||
(byte) bitmap_init::y
|
||||
(byte) bitmap_init::y#1 reg byte x 16.5
|
||||
(byte) bitmap_init::y#2 reg byte x 5.5
|
||||
(byte) bitmap_init::y#1 reg byte x 1501.5
|
||||
(byte) bitmap_init::y#2 reg byte x 500.5
|
||||
(byte*) bitmap_init::yoffs
|
||||
(byte*) bitmap_init::yoffs#1 yoffs zp[2]:14 22.0
|
||||
(byte*) bitmap_init::yoffs#2 yoffs zp[2]:14 6.875
|
||||
(byte*) bitmap_init::yoffs#4 yoffs zp[2]:14 11.0
|
||||
(byte*) bitmap_init::yoffs#1 yoffs zp[2]:16 2002.0
|
||||
(byte*) bitmap_init::yoffs#2 yoffs zp[2]:16 625.625
|
||||
(byte*) bitmap_init::yoffs#4 yoffs zp[2]:16 1001.0
|
||||
(void()) bitmap_line((word) bitmap_line::x1 , (word) bitmap_line::y1 , (word) bitmap_line::x2 , (word) bitmap_line::y2)
|
||||
(label) bitmap_line::@1
|
||||
(label) bitmap_line::@10
|
||||
@ -86,73 +86,73 @@
|
||||
(label) bitmap_line::@9
|
||||
(label) bitmap_line::@return
|
||||
(word) bitmap_line::dx
|
||||
(word) bitmap_line::dx#0 dx zp[2]:20 7.775
|
||||
(word) bitmap_line::dx#0 dx zp[2]:22 7600.174999999999
|
||||
(word) bitmap_line::dy
|
||||
(word) bitmap_line::dy#0 dy zp[2]:8 8.638888888888888
|
||||
(word) bitmap_line::dy#0 dy zp[2]:10 8444.638888888889
|
||||
(word) bitmap_line::e
|
||||
(word) bitmap_line::e#0 e zp[2]:10 4.0
|
||||
(word) bitmap_line::e#1 e zp[2]:10 134.66666666666666
|
||||
(word) bitmap_line::e#2 e zp[2]:10 202.0
|
||||
(word) bitmap_line::e#3 e zp[2]:10 40.8
|
||||
(word) bitmap_line::e#6 e zp[2]:10 151.5
|
||||
(word) bitmap_line::e#0 e zp[2]:12 2002.0
|
||||
(word) bitmap_line::e#1 e zp[2]:12 133334.66666666666
|
||||
(word) bitmap_line::e#2 e zp[2]:12 200002.0
|
||||
(word) bitmap_line::e#3 e zp[2]:12 40200.600000000006
|
||||
(word) bitmap_line::e#6 e zp[2]:12 150001.5
|
||||
(word) bitmap_line::e1
|
||||
(word) bitmap_line::e1#0 e1 zp[2]:14 4.0
|
||||
(word) bitmap_line::e1#1 e1 zp[2]:14 134.66666666666666
|
||||
(word) bitmap_line::e1#2 e1 zp[2]:14 202.0
|
||||
(word) bitmap_line::e1#3 e1 zp[2]:14 40.8
|
||||
(word) bitmap_line::e1#6 e1 zp[2]:14 151.5
|
||||
(word) bitmap_line::e1#0 e1 zp[2]:16 2002.0
|
||||
(word) bitmap_line::e1#1 e1 zp[2]:16 133334.66666666666
|
||||
(word) bitmap_line::e1#2 e1 zp[2]:16 200002.0
|
||||
(word) bitmap_line::e1#3 e1 zp[2]:16 40200.600000000006
|
||||
(word) bitmap_line::e1#6 e1 zp[2]:16 150001.5
|
||||
(word) bitmap_line::sx
|
||||
(word) bitmap_line::sx#0 sx zp[2]:22 6.800000000000001
|
||||
(word) bitmap_line::sx#0 sx zp[2]:24 6700.1
|
||||
(word) bitmap_line::sy
|
||||
(word) bitmap_line::sy#0 sy zp[2]:6 7.846153846153847
|
||||
(word) bitmap_line::sy#0 sy zp[2]:8 7730.884615384615
|
||||
(word) bitmap_line::x
|
||||
(word) bitmap_line::x#1 x zp[2]:4 101.0
|
||||
(word) bitmap_line::x#12 x zp[2]:4 202.0
|
||||
(word) bitmap_line::x#13 x zp[2]:4 58.00000000000001
|
||||
(word) bitmap_line::x#15 x zp[2]:4 57.714285714285715
|
||||
(word) bitmap_line::x#6 x zp[2]:4 102.0
|
||||
(word) bitmap_line::x#7 x zp[2]:4 76.25
|
||||
(word) bitmap_line::x#1 x zp[2]:4 100001.0
|
||||
(word) bitmap_line::x#12 x zp[2]:4 200002.0
|
||||
(word) bitmap_line::x#13 x zp[2]:4 57286.42857142857
|
||||
(word) bitmap_line::x#15 x zp[2]:4 57143.42857142857
|
||||
(word) bitmap_line::x#6 x zp[2]:4 100501.5
|
||||
(word) bitmap_line::x#7 x zp[2]:4 75251.0
|
||||
(word) bitmap_line::x1
|
||||
(word) bitmap_line::x1#0 x1 zp[2]:4 0.7777777777777778
|
||||
(word) bitmap_line::x1#0 x1 zp[2]:4 189.11111111111111
|
||||
(word) bitmap_line::x2
|
||||
(word) bitmap_line::x2#0 x2 zp[2]:16 3.515151515151515
|
||||
(word) bitmap_line::x2#0 x2 zp[2]:18 3094.060606060606
|
||||
(word) bitmap_line::y
|
||||
(word) bitmap_line::y#1 y zp[2]:12 57.714285714285715
|
||||
(word) bitmap_line::y#13 y zp[2]:12 202.0
|
||||
(word) bitmap_line::y#15 y zp[2]:12 43.57142857142858
|
||||
(word) bitmap_line::y#2 y zp[2]:12 101.0
|
||||
(word) bitmap_line::y#4 y zp[2]:12 51.0
|
||||
(word) bitmap_line::y#7 y zp[2]:12 202.0
|
||||
(word) bitmap_line::y#1 y zp[2]:14 57143.42857142857
|
||||
(word) bitmap_line::y#13 y zp[2]:14 200002.0
|
||||
(word) bitmap_line::y#15 y zp[2]:14 43000.57142857143
|
||||
(word) bitmap_line::y#2 y zp[2]:14 100001.0
|
||||
(word) bitmap_line::y#4 y zp[2]:14 50250.75
|
||||
(word) bitmap_line::y#7 y zp[2]:14 200002.0
|
||||
(word) bitmap_line::y1
|
||||
(word) bitmap_line::y1#0 y1 zp[2]:12 0.7599999999999999
|
||||
(word) bitmap_line::y1#0 y1 zp[2]:14 164.2
|
||||
(word) bitmap_line::y2
|
||||
(word) bitmap_line::y2#0 y2 zp[2]:18 3.625
|
||||
(word) bitmap_line::y2#0 y2 zp[2]:20 3190.75
|
||||
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
|
||||
(word~) bitmap_plot::$1 zp[2]:26 4.0
|
||||
(byte~) bitmap_plot::$2 reg byte a 4.0
|
||||
(word~) bitmap_plot::$1 zp[2]:28 2000002.0
|
||||
(byte~) bitmap_plot::$2 reg byte x 2000002.0
|
||||
(label) bitmap_plot::@return
|
||||
(byte*) bitmap_plot::plotter
|
||||
(word) bitmap_plot::plotter#0 plotter zp[2]:24 1.0
|
||||
(byte*) bitmap_plot::plotter#1 plotter zp[2]:24 3.0
|
||||
(word) bitmap_plot::plotter#0 plotter zp[2]:26 500000.5
|
||||
(byte*) bitmap_plot::plotter#1 plotter zp[2]:26 1500001.5
|
||||
(word) bitmap_plot::x
|
||||
(word) bitmap_plot::x#0 x zp[2]:4 4.0
|
||||
(word) bitmap_plot::x#1 x zp[2]:4 202.0
|
||||
(word) bitmap_plot::x#2 x zp[2]:4 4.0
|
||||
(word) bitmap_plot::x#3 x zp[2]:4 202.0
|
||||
(word) bitmap_plot::x#4 x zp[2]:4 52.5
|
||||
(word) bitmap_plot::x#0 x zp[2]:6 2002.0
|
||||
(word) bitmap_plot::x#1 x zp[2]:6 200002.0
|
||||
(word) bitmap_plot::x#2 x zp[2]:6 2002.0
|
||||
(word) bitmap_plot::x#3 x zp[2]:6 200002.0
|
||||
(word) bitmap_plot::x#4 x zp[2]:6 550501.5
|
||||
(byte) bitmap_plot::y
|
||||
(byte) bitmap_plot::y#0 reg byte x 2.0
|
||||
(byte) bitmap_plot::y#1 reg byte x 101.0
|
||||
(byte) bitmap_plot::y#2 reg byte x 2.0
|
||||
(byte) bitmap_plot::y#3 reg byte x 101.0
|
||||
(byte) bitmap_plot::y#4 reg byte x 210.0
|
||||
(byte) bitmap_plot::y#0 reg byte x 1001.0
|
||||
(byte) bitmap_plot::y#1 reg byte x 100001.0
|
||||
(byte) bitmap_plot::y#2 reg byte x 1001.0
|
||||
(byte) bitmap_plot::y#3 reg byte x 100001.0
|
||||
(byte) bitmap_plot::y#4 reg byte x 2202006.0
|
||||
(const byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
|
||||
(const byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
|
||||
(const byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
|
||||
(byte*) bitmap_screen
|
||||
(void()) main()
|
||||
(word~) main::$4 zp[2]:4 22.0
|
||||
(word~) main::$8 zp[2]:16 22.0
|
||||
(word~) main::$4 zp[2]:4 202.0
|
||||
(word~) main::$8 zp[2]:18 202.0
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
@ -161,11 +161,11 @@
|
||||
(label) main::@6
|
||||
(label) main::@7
|
||||
(byte) main::a
|
||||
(byte) main::a#1 a zp[1]:3 11.0
|
||||
(byte) main::a#2 a zp[1]:3 2.4444444444444446
|
||||
(byte) main::a#1 a zp[1]:3 101.0
|
||||
(byte) main::a#2 a zp[1]:3 22.444444444444443
|
||||
(byte) main::i
|
||||
(byte) main::i#1 i zp[1]:2 22.0
|
||||
(byte) main::i#2 i zp[1]:2 3.3000000000000003
|
||||
(byte) main::i#1 i zp[1]:2 202.0
|
||||
(byte) main::i#2 i zp[1]:2 30.299999999999997
|
||||
(label) main::toD0181
|
||||
(byte*) main::toD0181_gfx
|
||||
(byte) main::toD0181_return
|
||||
@ -177,57 +177,58 @@
|
||||
(label) memset::@3
|
||||
(label) memset::@return
|
||||
(byte) memset::c
|
||||
(byte) memset::c#4 reg byte x 1.375
|
||||
(byte) memset::c#4 reg byte x 1250.125
|
||||
(byte*) memset::dst
|
||||
(byte*) memset::dst#1 dst zp[2]:12 22.0
|
||||
(byte*) memset::dst#2 dst zp[2]:12 15.333333333333332
|
||||
(byte*) memset::dst#4 dst zp[2]:12 4.0
|
||||
(byte*) memset::dst#1 dst zp[2]:14 20002.0
|
||||
(byte*) memset::dst#2 dst zp[2]:14 13668.333333333332
|
||||
(byte*) memset::dst#4 dst zp[2]:14 2002.0
|
||||
(byte*) memset::end
|
||||
(byte*) memset::end#0 end zp[2]:10 2.1666666666666665
|
||||
(byte*) memset::end#0 end zp[2]:12 1833.6666666666665
|
||||
(word) memset::num
|
||||
(word) memset::num#2 num zp[2]:10 2.0
|
||||
(word) memset::num#2 num zp[2]:12 1001.0
|
||||
(void*) memset::return
|
||||
(void*) memset::str
|
||||
(void*) memset::str#3 str zp[2]:12
|
||||
(void*) memset::str#3 str zp[2]:14
|
||||
(word()) sgn_u16((word) sgn_u16::w)
|
||||
(byte~) sgn_u16::$0 reg byte a 4.0
|
||||
(byte~) sgn_u16::$1 reg byte a 4.0
|
||||
(byte~) sgn_u16::$0 reg byte a 20002.0
|
||||
(byte~) sgn_u16::$1 reg byte a 20002.0
|
||||
(label) sgn_u16::@1
|
||||
(label) sgn_u16::@return
|
||||
(word) sgn_u16::return
|
||||
(word) sgn_u16::return#0 return zp[2]:6 4.0
|
||||
(word) sgn_u16::return#1 return zp[2]:6 4.0
|
||||
(word) sgn_u16::return#4 return zp[2]:6 1.0
|
||||
(word) sgn_u16::return#0 return zp[2]:8 2002.0
|
||||
(word) sgn_u16::return#1 return zp[2]:8 2002.0
|
||||
(word) sgn_u16::return#4 return zp[2]:8 500.5
|
||||
(word) sgn_u16::w
|
||||
(word) sgn_u16::w#0 w zp[2]:24 4.0
|
||||
(word) sgn_u16::w#1 w zp[2]:24 4.0
|
||||
(word) sgn_u16::w#2 w zp[2]:24 6.0
|
||||
(word) sgn_u16::w#0 w zp[2]:6 2002.0
|
||||
(word) sgn_u16::w#1 w zp[2]:6 2002.0
|
||||
(word) sgn_u16::w#2 w zp[2]:6 12003.0
|
||||
|
||||
zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
zp[1]:3 [ main::a#2 main::a#1 ]
|
||||
zp[2]:4 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 main::$4 ]
|
||||
zp[2]:4 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 main::$4 ]
|
||||
reg byte x [ bitmap_plot::y#4 bitmap_plot::y#3 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ]
|
||||
zp[2]:6 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
|
||||
zp[2]:8 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ]
|
||||
zp[2]:10 [ memset::num#2 memset::end#0 bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
|
||||
zp[2]:12 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ]
|
||||
zp[2]:6 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 bitmap_plot::x#4 bitmap_plot::x#3 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ]
|
||||
zp[2]:8 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
|
||||
zp[2]:10 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ]
|
||||
zp[2]:12 [ memset::num#2 memset::end#0 bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
|
||||
zp[2]:14 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ]
|
||||
reg byte x [ memset::c#4 ]
|
||||
reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
||||
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
|
||||
reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
zp[2]:14 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
|
||||
zp[2]:16 [ main::$8 bitmap_line::x2#0 ]
|
||||
zp[2]:18 [ bitmap_line::y2#0 ]
|
||||
zp[2]:20 [ bitmap_line::dx#0 ]
|
||||
zp[2]:22 [ bitmap_line::sx#0 ]
|
||||
zp[2]:24 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ]
|
||||
zp[2]:26 [ bitmap_plot::$1 ]
|
||||
reg byte a [ bitmap_plot::$2 ]
|
||||
zp[2]:16 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
|
||||
zp[2]:18 [ main::$8 bitmap_line::x2#0 ]
|
||||
zp[2]:20 [ bitmap_line::y2#0 ]
|
||||
zp[2]:22 [ bitmap_line::dx#0 ]
|
||||
zp[2]:24 [ bitmap_line::sx#0 ]
|
||||
zp[2]:26 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ]
|
||||
zp[2]:28 [ bitmap_plot::$1 ]
|
||||
reg byte x [ bitmap_plot::$2 ]
|
||||
reg byte a [ sgn_u16::$0 ]
|
||||
reg byte a [ sgn_u16::$1 ]
|
||||
reg byte a [ abs_u16::$0 ]
|
||||
reg byte a [ abs_u16::$1 ]
|
||||
zp[1]:28 [ bitmap_init::$7 ]
|
||||
zp[1]:30 [ bitmap_init::$7 ]
|
||||
reg byte a [ bitmap_init::$4 ]
|
||||
reg byte a [ bitmap_init::$5 ]
|
||||
reg byte a [ bitmap_init::$6 ]
|
||||
|
@ -456,18 +456,18 @@ Inferred type updated to byte in (unumber~) init_plot_tables::$9 ← (byte) init
|
||||
Inversing boolean not [57] (bool~) init_plot_tables::$3 ← (byte) init_plot_tables::bits#1 != (byte) 0 from [56] (bool~) init_plot_tables::$2 ← (byte) init_plot_tables::bits#1 == (byte) 0
|
||||
Inversing boolean not [76] (bool~) init_plot_tables::$11 ← (byte~) init_plot_tables::$9 != (byte) 7 from [75] (bool~) init_plot_tables::$10 ← (byte~) init_plot_tables::$9 == (byte) 7
|
||||
Successful SSA optimization Pass2UnaryNotSimplification
|
||||
Alias (byte) plots::i#2 = (byte) plots::i#3 (byte) plots::i#4
|
||||
Alias (byte*) plot::plotter#0 = (byte*~) plot::$4
|
||||
Alias (byte) init_plot_tables::bits#1 = (byte~) init_plot_tables::$1
|
||||
Alias (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#4
|
||||
Alias (byte*) init_plot_tables::yoffs#2 = (byte*) init_plot_tables::yoffs#3
|
||||
Alias (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#4
|
||||
Alias (byte*) init_plot_tables::yoffs#1 = (byte*~) init_plot_tables::$12
|
||||
Alias (byte*) init_screen::b#2 = (byte*) init_screen::b#3
|
||||
Alias (byte*) init_screen::c#2 = (byte*) init_screen::c#3
|
||||
Alias plots::i#2 = plots::i#3 plots::i#4
|
||||
Alias plot::plotter#0 = plot::$4
|
||||
Alias init_plot_tables::bits#1 = init_plot_tables::$1
|
||||
Alias init_plot_tables::x#2 = init_plot_tables::x#4
|
||||
Alias init_plot_tables::yoffs#2 = init_plot_tables::yoffs#3
|
||||
Alias init_plot_tables::y#2 = init_plot_tables::y#4
|
||||
Alias init_plot_tables::yoffs#1 = init_plot_tables::$12
|
||||
Alias init_screen::b#2 = init_screen::b#3
|
||||
Alias init_screen::c#2 = init_screen::c#3
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Alias (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#3
|
||||
Alias (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#3
|
||||
Alias init_plot_tables::x#2 = init_plot_tables::x#3
|
||||
Alias init_plot_tables::y#2 = init_plot_tables::y#3
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Identical Phi Values (byte) plot::x#1 (byte) plot::x#0
|
||||
Identical Phi Values (byte) plot::y#1 (byte) plot::y#0
|
||||
@ -518,7 +518,7 @@ Successful SSA optimization PassNCastSimplification
|
||||
Finalized unsigned number type (byte) 0
|
||||
Finalized unsigned number type (byte) 0
|
||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Alias (byte~) init_plot_tables::$9 = (byte~) init_plot_tables::$5
|
||||
Alias init_plot_tables::$9 = init_plot_tables::$5
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Constant right-side identified [2] (byte~) main::$1 ← (const byte) main::$0 | (const byte) RSEL
|
||||
Constant right-side identified [5] (word~) main::$4 ← (const word) main::$3 / (byte) $40
|
||||
@ -771,55 +771,55 @@ init_screen::@2: scope:[init_screen] from init_screen::@1
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(void()) init_plot_tables()
|
||||
(byte~) init_plot_tables::$0 22.0
|
||||
(byte~) init_plot_tables::$6 22.0
|
||||
(byte~) init_plot_tables::$7 22.0
|
||||
(byte~) init_plot_tables::$8 22.0
|
||||
(byte~) init_plot_tables::$9 5.5
|
||||
(byte~) init_plot_tables::$0 2002.0
|
||||
(byte~) init_plot_tables::$6 2002.0
|
||||
(byte~) init_plot_tables::$7 2002.0
|
||||
(byte~) init_plot_tables::$8 2002.0
|
||||
(byte~) init_plot_tables::$9 500.5
|
||||
(byte) init_plot_tables::bits
|
||||
(byte) init_plot_tables::bits#1 11.0
|
||||
(byte) init_plot_tables::bits#3 6.6000000000000005
|
||||
(byte) init_plot_tables::bits#4 7.333333333333333
|
||||
(byte) init_plot_tables::bits#1 1001.0
|
||||
(byte) init_plot_tables::bits#3 600.5999999999999
|
||||
(byte) init_plot_tables::bits#4 667.3333333333334
|
||||
(byte) init_plot_tables::x
|
||||
(byte) init_plot_tables::x#1 16.5
|
||||
(byte) init_plot_tables::x#2 7.333333333333334
|
||||
(byte) init_plot_tables::x#1 1501.5
|
||||
(byte) init_plot_tables::x#2 667.3333333333333
|
||||
(byte) init_plot_tables::y
|
||||
(byte) init_plot_tables::y#1 16.5
|
||||
(byte) init_plot_tables::y#2 5.5
|
||||
(byte) init_plot_tables::y#1 1501.5
|
||||
(byte) init_plot_tables::y#2 500.5
|
||||
(byte*) init_plot_tables::yoffs
|
||||
(byte*) init_plot_tables::yoffs#1 22.0
|
||||
(byte*) init_plot_tables::yoffs#2 6.875
|
||||
(byte*) init_plot_tables::yoffs#4 11.0
|
||||
(byte*) init_plot_tables::yoffs#1 2002.0
|
||||
(byte*) init_plot_tables::yoffs#2 625.625
|
||||
(byte*) init_plot_tables::yoffs#4 1001.0
|
||||
(void()) init_screen()
|
||||
(byte*) init_screen::b
|
||||
(byte*) init_screen::b#1 22.0
|
||||
(byte*) init_screen::b#2 14.666666666666666
|
||||
(byte*) init_screen::b#1 2002.0
|
||||
(byte*) init_screen::b#2 1334.6666666666667
|
||||
(byte*) init_screen::c
|
||||
(byte*) init_screen::c#1 22.0
|
||||
(byte*) init_screen::c#2 14.666666666666666
|
||||
(byte*) init_screen::c#1 2002.0
|
||||
(byte*) init_screen::c#2 1334.6666666666667
|
||||
(void()) main()
|
||||
(void()) plot((byte) plot::x , (byte) plot::y)
|
||||
(byte~) plot::$5 4.0
|
||||
(byte~) plot::$6 4.0
|
||||
(byte~) plot::$7 4.0
|
||||
(byte~) plot::$8 4.0
|
||||
(byte~) plot::$9 4.0
|
||||
(byte~) plot::$5 2000002.0
|
||||
(byte~) plot::$6 2000002.0
|
||||
(byte~) plot::$7 2000002.0
|
||||
(byte~) plot::$8 2000002.0
|
||||
(byte~) plot::$9 2000002.0
|
||||
(byte*) plot::plotter
|
||||
(byte*) plot::plotter#0 3.0
|
||||
(byte*) plot::plotter#0 1500001.5
|
||||
(byte*) plot::plotter_x
|
||||
(byte*) plot::plotter_x#1 2.0
|
||||
(byte*) plot::plotter_x#2 0.8
|
||||
(byte*) plot::plotter_x#1 1000001.0
|
||||
(byte*) plot::plotter_x#2 400000.4
|
||||
(word) plot::plotter_y
|
||||
(word) plot::plotter_y#1 2.0
|
||||
(word) plot::plotter_y#2 4.0
|
||||
(word) plot::plotter_y#1 1000001.0
|
||||
(word) plot::plotter_y#2 2000002.0
|
||||
(byte) plot::x
|
||||
(byte) plot::x#0 9.727272727272727
|
||||
(byte) plot::x#0 281818.54545454547
|
||||
(byte) plot::y
|
||||
(byte) plot::y#0 15.000000000000002
|
||||
(byte) plot::y#0 300000.4285714285
|
||||
(void()) plots()
|
||||
(byte) plots::i
|
||||
(byte) plots::i#1 202.0
|
||||
(byte) plots::i#2 101.0
|
||||
(byte) plots::i#1 200002.0
|
||||
(byte) plots::i#2 100001.0
|
||||
|
||||
Initial phi equivalence classes
|
||||
[ plots::i#2 plots::i#1 ]
|
||||
@ -1327,49 +1327,49 @@ init_screen: {
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Equivalence Class zp[1]:31 [ init_plot_tables::$6 ] has ALU potential.
|
||||
Statement [4] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [5] *((const byte*) FGCOL) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [6] *((const byte*) D011) ← (const byte) BMM|(const byte) DEN|(const byte) RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [7] *((const byte*) D018) ← (byte)(word)(const byte*) SCREEN/(byte) $40|(word)(const byte*) BITMAP/(word) $400 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [11] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@1 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [26] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ plots::i#2 plots::i#1 ]
|
||||
Statement [4] *((const byte*) BGCOL) ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [5] *((const byte*) FGCOL) ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [6] *((const byte*) D011) ← (const byte) BMM|(const byte) DEN|(const byte) RSEL|(byte) 3 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [7] *((const byte*) D018) ← (byte)(word)(const byte*) SCREEN/(byte) $40|(word)(const byte*) BITMAP/(word) $400 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [11] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@1 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [26] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( [ plot::x#0 plot::y#0 plot::plotter_x#2 plots::i#2 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:12 [ plot::x#0 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:13 [ plot::y#0 ]
|
||||
Statement [30] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) always clobbers reg byte a
|
||||
Statement [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) always clobbers reg byte a
|
||||
Statement [32] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte*) plot_bit + (byte) plot::x#0) [ plot::plotter#0 plot::$5 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::plotter#0 plot::$5 ] ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ plots::i#2 plots::i#1 ]
|
||||
Statement [30] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 plots::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( [ plot::x#0 plot::plotter#0 plots::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [32] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte*) plot_bit + (byte) plot::x#0) [ plot::plotter#0 plot::$5 ] ( [ plot::plotter#0 plot::$5 plots::i#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:2 [ plots::i#2 plots::i#1 ]
|
||||
Statement [33] *((byte*) plot::plotter#0) ← (byte~) plot::$5 [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] ) always clobbers reg byte y
|
||||
Statement [39] *((const byte*) plot_xhi + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a
|
||||
Statement [33] *((byte*) plot::plotter#0) ← (byte~) plot::$5 [ ] ( [ plots::i#2 ] { } ) always clobbers reg byte y
|
||||
Statement [39] *((const byte*) plot_xhi + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( [ init_plot_tables::x#2 init_plot_tables::bits#3 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ init_plot_tables::x#2 init_plot_tables::x#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:4 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ]
|
||||
Statement [40] *((const byte*) plot_bit + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a
|
||||
Statement [55] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word)(number) $28*(number) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) always clobbers reg byte a
|
||||
Statement [40] *((const byte*) plot_bit + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( [ init_plot_tables::x#2 init_plot_tables::bits#3 ] { } ) always clobbers reg byte a
|
||||
Statement [55] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word)(number) $28*(number) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:5 [ init_plot_tables::y#2 init_plot_tables::y#1 ]
|
||||
Statement [62] if((byte*) init_screen::b#2!=(const byte*) BITMAP+(word) $2000) goto init_screen::@2 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) always clobbers reg byte a
|
||||
Statement [64] if((byte*) init_screen::c#2!=(const byte*) SCREEN+(word) $400) goto init_screen::@4 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) always clobbers reg byte a
|
||||
Statement [66] *((byte*) init_screen::c#2) ← (byte) $14 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [68] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [4] *((const byte*) BGCOL) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [5] *((const byte*) FGCOL) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [6] *((const byte*) D011) ← (const byte) BMM|(const byte) DEN|(const byte) RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [7] *((const byte*) D018) ← (byte)(word)(const byte*) SCREEN/(byte) $40|(word)(const byte*) BITMAP/(word) $400 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [11] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@1 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [26] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] ) always clobbers reg byte a
|
||||
Statement [30] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) always clobbers reg byte a
|
||||
Statement [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) always clobbers reg byte a
|
||||
Statement [32] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte*) plot_bit + (byte) plot::x#0) [ plot::plotter#0 plot::$5 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::plotter#0 plot::$5 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [33] *((byte*) plot::plotter#0) ← (byte~) plot::$5 [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] ) always clobbers reg byte y
|
||||
Statement [37] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) $f8 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) always clobbers reg byte a
|
||||
Statement [39] *((const byte*) plot_xhi + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a
|
||||
Statement [40] *((const byte*) plot_bit + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a
|
||||
Statement [48] (byte~) init_plot_tables::$9 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) always clobbers reg byte a
|
||||
Statement [55] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word)(number) $28*(number) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) always clobbers reg byte a
|
||||
Statement [62] if((byte*) init_screen::b#2!=(const byte*) BITMAP+(word) $2000) goto init_screen::@2 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) always clobbers reg byte a
|
||||
Statement [64] if((byte*) init_screen::c#2!=(const byte*) SCREEN+(word) $400) goto init_screen::@4 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) always clobbers reg byte a
|
||||
Statement [66] *((byte*) init_screen::c#2) ← (byte) $14 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [68] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [62] if((byte*) init_screen::b#2!=(const byte*) BITMAP+(word) $2000) goto init_screen::@2 [ init_screen::b#2 ] ( [ init_screen::b#2 ] { } ) always clobbers reg byte a
|
||||
Statement [64] if((byte*) init_screen::c#2!=(const byte*) SCREEN+(word) $400) goto init_screen::@4 [ init_screen::c#2 ] ( [ init_screen::c#2 ] { } ) always clobbers reg byte a
|
||||
Statement [66] *((byte*) init_screen::c#2) ← (byte) $14 [ init_screen::c#2 ] ( [ init_screen::c#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Statement [68] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( [ init_screen::b#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Statement [4] *((const byte*) BGCOL) ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [5] *((const byte*) FGCOL) ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [6] *((const byte*) D011) ← (const byte) BMM|(const byte) DEN|(const byte) RSEL|(byte) 3 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [7] *((const byte*) D018) ← (byte)(word)(const byte*) SCREEN/(byte) $40|(word)(const byte*) BITMAP/(word) $400 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [11] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@1 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [26] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( [ plot::x#0 plot::y#0 plot::plotter_x#2 plots::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [30] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 plots::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( [ plot::x#0 plot::plotter#0 plots::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [32] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte*) plot_bit + (byte) plot::x#0) [ plot::plotter#0 plot::$5 ] ( [ plot::plotter#0 plot::$5 plots::i#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Statement [33] *((byte*) plot::plotter#0) ← (byte~) plot::$5 [ ] ( [ plots::i#2 ] { } ) always clobbers reg byte y
|
||||
Statement [37] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) $f8 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] { } ) always clobbers reg byte a
|
||||
Statement [39] *((const byte*) plot_xhi + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( [ init_plot_tables::x#2 init_plot_tables::bits#3 ] { } ) always clobbers reg byte a
|
||||
Statement [40] *((const byte*) plot_bit + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( [ init_plot_tables::x#2 init_plot_tables::bits#3 ] { } ) always clobbers reg byte a
|
||||
Statement [48] (byte~) init_plot_tables::$9 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] { } ) always clobbers reg byte a
|
||||
Statement [55] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word)(number) $28*(number) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] { } ) always clobbers reg byte a
|
||||
Statement [62] if((byte*) init_screen::b#2!=(const byte*) BITMAP+(word) $2000) goto init_screen::@2 [ init_screen::b#2 ] ( [ init_screen::b#2 ] { } ) always clobbers reg byte a
|
||||
Statement [64] if((byte*) init_screen::c#2!=(const byte*) SCREEN+(word) $400) goto init_screen::@4 [ init_screen::c#2 ] ( [ init_screen::c#2 ] { } ) always clobbers reg byte a
|
||||
Statement [66] *((byte*) init_screen::c#2) ← (byte) $14 [ init_screen::c#2 ] ( [ init_screen::c#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Statement [68] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( [ init_screen::b#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Potential registers zp[1]:2 [ plots::i#2 plots::i#1 ] : zp[1]:2 , reg byte x ,
|
||||
Potential registers zp[1]:3 [ init_plot_tables::x#2 init_plot_tables::x#1 ] : zp[1]:3 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:4 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] : zp[1]:4 , reg byte x , reg byte y ,
|
||||
@ -1396,39 +1396,35 @@ Potential registers zp[1]:32 [ init_plot_tables::$7 ] : zp[1]:32 , reg byte a ,
|
||||
Potential registers zp[1]:33 [ init_plot_tables::$8 ] : zp[1]:33 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [plots] 303: zp[1]:2 [ plots::i#2 plots::i#1 ]
|
||||
Uplift Scope [init_plot_tables] 39.88: zp[2]:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] 24.93: zp[1]:4 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] 23.83: zp[1]:3 [ init_plot_tables::x#2 init_plot_tables::x#1 ] 22: zp[1]:5 [ init_plot_tables::y#2 init_plot_tables::y#1 ] 22: zp[1]:29 [ init_plot_tables::$0 ] 22: zp[1]:31 [ init_plot_tables::$6 ] 22: zp[1]:32 [ init_plot_tables::$7 ] 22: zp[1]:33 [ init_plot_tables::$8 ] 5.5: zp[1]:30 [ init_plot_tables::$9 ]
|
||||
Uplift Scope [init_screen] 36.67: zp[2]:8 [ init_screen::b#2 init_screen::b#1 ] 36.67: zp[2]:10 [ init_screen::c#2 init_screen::c#1 ]
|
||||
Uplift Scope [plot] 15: zp[1]:13 [ plot::y#0 ] 9.73: zp[1]:12 [ plot::x#0 ] 4: zp[1]:14 [ plot::$6 ] 4: zp[1]:17 [ plot::$7 ] 4: zp[1]:20 [ plot::$8 ] 4: zp[1]:23 [ plot::$9 ] 4: zp[2]:24 [ plot::plotter_y#2 ] 4: zp[1]:28 [ plot::$5 ] 3: zp[2]:26 [ plot::plotter#0 ] 2: zp[2]:15 [ plot::plotter_x#1 ] 2: zp[2]:21 [ plot::plotter_y#1 ] 0.8: zp[2]:18 [ plot::plotter_x#2 ]
|
||||
Uplift Scope [plot] 2,000,002: zp[1]:14 [ plot::$6 ] 2,000,002: zp[1]:17 [ plot::$7 ] 2,000,002: zp[1]:20 [ plot::$8 ] 2,000,002: zp[1]:23 [ plot::$9 ] 2,000,002: zp[2]:24 [ plot::plotter_y#2 ] 2,000,002: zp[1]:28 [ plot::$5 ] 1,500,001.5: zp[2]:26 [ plot::plotter#0 ] 1,000,001: zp[2]:15 [ plot::plotter_x#1 ] 1,000,001: zp[2]:21 [ plot::plotter_y#1 ] 400,000.4: zp[2]:18 [ plot::plotter_x#2 ] 300,000.43: zp[1]:13 [ plot::y#0 ] 281,818.55: zp[1]:12 [ plot::x#0 ]
|
||||
Uplift Scope [plots] 300,003: zp[1]:2 [ plots::i#2 plots::i#1 ]
|
||||
Uplift Scope [init_plot_tables] 3,628.62: zp[2]:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] 2,268.93: zp[1]:4 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] 2,168.83: zp[1]:3 [ init_plot_tables::x#2 init_plot_tables::x#1 ] 2,002: zp[1]:5 [ init_plot_tables::y#2 init_plot_tables::y#1 ] 2,002: zp[1]:29 [ init_plot_tables::$0 ] 2,002: zp[1]:31 [ init_plot_tables::$6 ] 2,002: zp[1]:32 [ init_plot_tables::$7 ] 2,002: zp[1]:33 [ init_plot_tables::$8 ] 500.5: zp[1]:30 [ init_plot_tables::$9 ]
|
||||
Uplift Scope [init_screen] 3,336.67: zp[2]:8 [ init_screen::b#2 init_screen::b#1 ] 3,336.67: zp[2]:10 [ init_screen::c#2 init_screen::c#1 ]
|
||||
Uplift Scope [main]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [plots] best 8915 combination reg byte x [ plots::i#2 plots::i#1 ]
|
||||
Uplifting [init_plot_tables] best 8395 combination zp[2]:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] reg byte y [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ] reg byte x [ init_plot_tables::y#2 init_plot_tables::y#1 ] reg byte a [ init_plot_tables::$0 ] zp[1]:31 [ init_plot_tables::$6 ] zp[1]:32 [ init_plot_tables::$7 ] zp[1]:33 [ init_plot_tables::$8 ] zp[1]:30 [ init_plot_tables::$9 ]
|
||||
Limited combination testing to 100 combinations of 34560 possible.
|
||||
Uplifting [init_screen] best 8395 combination zp[2]:8 [ init_screen::b#2 init_screen::b#1 ] zp[2]:10 [ init_screen::c#2 init_screen::c#1 ]
|
||||
Uplifting [plot] best 8383 combination zp[1]:13 [ plot::y#0 ] zp[1]:12 [ plot::x#0 ] reg byte a [ plot::$6 ] reg byte a [ plot::$7 ] zp[1]:20 [ plot::$8 ] zp[1]:23 [ plot::$9 ] zp[2]:24 [ plot::plotter_y#2 ] zp[1]:28 [ plot::$5 ] zp[2]:26 [ plot::plotter#0 ] zp[2]:15 [ plot::plotter_x#1 ] zp[2]:21 [ plot::plotter_y#1 ] zp[2]:18 [ plot::plotter_x#2 ]
|
||||
Uplifting [plot] best 10391 combination reg byte a [ plot::$6 ] reg byte a [ plot::$7 ] reg byte a [ plot::$8 ] reg byte a [ plot::$9 ] zp[2]:24 [ plot::plotter_y#2 ] zp[1]:28 [ plot::$5 ] zp[2]:26 [ plot::plotter#0 ] zp[2]:15 [ plot::plotter_x#1 ] zp[2]:21 [ plot::plotter_y#1 ] zp[2]:18 [ plot::plotter_x#2 ] zp[1]:13 [ plot::y#0 ] zp[1]:12 [ plot::x#0 ]
|
||||
Limited combination testing to 100 combinations of 9216 possible.
|
||||
Uplifting [main] best 8383 combination
|
||||
Uplifting [] best 8383 combination
|
||||
Attempting to uplift remaining variables inzp[1]:31 [ init_plot_tables::$6 ]
|
||||
Uplifting [init_plot_tables] best 8323 combination reg byte a [ init_plot_tables::$6 ]
|
||||
Attempting to uplift remaining variables inzp[1]:32 [ init_plot_tables::$7 ]
|
||||
Uplifting [init_plot_tables] best 8263 combination reg byte a [ init_plot_tables::$7 ]
|
||||
Attempting to uplift remaining variables inzp[1]:33 [ init_plot_tables::$8 ]
|
||||
Uplifting [init_plot_tables] best 8203 combination reg byte a [ init_plot_tables::$8 ]
|
||||
Attempting to uplift remaining variables inzp[1]:13 [ plot::y#0 ]
|
||||
Uplifting [plot] best 8203 combination zp[1]:13 [ plot::y#0 ]
|
||||
Attempting to uplift remaining variables inzp[1]:12 [ plot::x#0 ]
|
||||
Uplifting [plot] best 8203 combination zp[1]:12 [ plot::x#0 ]
|
||||
Attempting to uplift remaining variables inzp[1]:30 [ init_plot_tables::$9 ]
|
||||
Uplifting [init_plot_tables] best 8203 combination zp[1]:30 [ init_plot_tables::$9 ]
|
||||
Attempting to uplift remaining variables inzp[1]:20 [ plot::$8 ]
|
||||
Uplifting [plot] best 8197 combination reg byte a [ plot::$8 ]
|
||||
Attempting to uplift remaining variables inzp[1]:23 [ plot::$9 ]
|
||||
Uplifting [plot] best 8191 combination reg byte a [ plot::$9 ]
|
||||
Uplifting [plots] best 8891 combination reg byte x [ plots::i#2 plots::i#1 ]
|
||||
Uplifting [init_plot_tables] best 8371 combination zp[2]:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] reg byte y [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ] reg byte x [ init_plot_tables::y#2 init_plot_tables::y#1 ] reg byte a [ init_plot_tables::$0 ] zp[1]:31 [ init_plot_tables::$6 ] zp[1]:32 [ init_plot_tables::$7 ] zp[1]:33 [ init_plot_tables::$8 ] zp[1]:30 [ init_plot_tables::$9 ]
|
||||
Limited combination testing to 100 combinations of 34560 possible.
|
||||
Uplifting [init_screen] best 8371 combination zp[2]:8 [ init_screen::b#2 init_screen::b#1 ] zp[2]:10 [ init_screen::c#2 init_screen::c#1 ]
|
||||
Uplifting [main] best 8371 combination
|
||||
Uplifting [] best 8371 combination
|
||||
Attempting to uplift remaining variables inzp[1]:28 [ plot::$5 ]
|
||||
Uplifting [plot] best 8185 combination reg byte a [ plot::$5 ]
|
||||
Uplifting [plot] best 8365 combination reg byte a [ plot::$5 ]
|
||||
Attempting to uplift remaining variables inzp[1]:13 [ plot::y#0 ]
|
||||
Uplifting [plot] best 8365 combination zp[1]:13 [ plot::y#0 ]
|
||||
Attempting to uplift remaining variables inzp[1]:12 [ plot::x#0 ]
|
||||
Uplifting [plot] best 8365 combination zp[1]:12 [ plot::x#0 ]
|
||||
Attempting to uplift remaining variables inzp[1]:31 [ init_plot_tables::$6 ]
|
||||
Uplifting [init_plot_tables] best 8305 combination reg byte a [ init_plot_tables::$6 ]
|
||||
Attempting to uplift remaining variables inzp[1]:32 [ init_plot_tables::$7 ]
|
||||
Uplifting [init_plot_tables] best 8245 combination reg byte a [ init_plot_tables::$7 ]
|
||||
Attempting to uplift remaining variables inzp[1]:33 [ init_plot_tables::$8 ]
|
||||
Uplifting [init_plot_tables] best 8185 combination reg byte a [ init_plot_tables::$8 ]
|
||||
Attempting to uplift remaining variables inzp[1]:30 [ init_plot_tables::$9 ]
|
||||
Uplifting [init_plot_tables] best 8185 combination zp[1]:30 [ init_plot_tables::$9 ]
|
||||
Coalescing zero page register [ zp[2]:15 [ plot::plotter_x#1 ] ] with [ zp[2]:18 [ plot::plotter_x#2 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:21 [ plot::plotter_y#1 ] ] with [ zp[2]:24 [ plot::plotter_y#2 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:15 [ plot::plotter_x#1 plot::plotter_x#2 ] ] with [ zp[2]:26 [ plot::plotter#0 ] ] - score: 1
|
||||
@ -1910,11 +1906,11 @@ FINAL SYMBOL TABLE
|
||||
(const byte) RSEL = (byte) 8
|
||||
(const byte*) SCREEN = (byte*) 1024
|
||||
(void()) init_plot_tables()
|
||||
(byte~) init_plot_tables::$0 reg byte a 22.0
|
||||
(byte~) init_plot_tables::$6 reg byte a 22.0
|
||||
(byte~) init_plot_tables::$7 reg byte a 22.0
|
||||
(byte~) init_plot_tables::$8 reg byte a 22.0
|
||||
(byte~) init_plot_tables::$9 zp[1]:7 5.5
|
||||
(byte~) init_plot_tables::$0 reg byte a 2002.0
|
||||
(byte~) init_plot_tables::$6 reg byte a 2002.0
|
||||
(byte~) init_plot_tables::$7 reg byte a 2002.0
|
||||
(byte~) init_plot_tables::$8 reg byte a 2002.0
|
||||
(byte~) init_plot_tables::$9 zp[1]:7 500.5
|
||||
(label) init_plot_tables::@1
|
||||
(label) init_plot_tables::@2
|
||||
(label) init_plot_tables::@3
|
||||
@ -1923,19 +1919,19 @@ FINAL SYMBOL TABLE
|
||||
(label) init_plot_tables::@6
|
||||
(label) init_plot_tables::@return
|
||||
(byte) init_plot_tables::bits
|
||||
(byte) init_plot_tables::bits#1 reg byte y 11.0
|
||||
(byte) init_plot_tables::bits#3 reg byte y 6.6000000000000005
|
||||
(byte) init_plot_tables::bits#4 reg byte y 7.333333333333333
|
||||
(byte) init_plot_tables::bits#1 reg byte y 1001.0
|
||||
(byte) init_plot_tables::bits#3 reg byte y 600.5999999999999
|
||||
(byte) init_plot_tables::bits#4 reg byte y 667.3333333333334
|
||||
(byte) init_plot_tables::x
|
||||
(byte) init_plot_tables::x#1 reg byte x 16.5
|
||||
(byte) init_plot_tables::x#2 reg byte x 7.333333333333334
|
||||
(byte) init_plot_tables::x#1 reg byte x 1501.5
|
||||
(byte) init_plot_tables::x#2 reg byte x 667.3333333333333
|
||||
(byte) init_plot_tables::y
|
||||
(byte) init_plot_tables::y#1 reg byte x 16.5
|
||||
(byte) init_plot_tables::y#2 reg byte x 5.5
|
||||
(byte) init_plot_tables::y#1 reg byte x 1501.5
|
||||
(byte) init_plot_tables::y#2 reg byte x 500.5
|
||||
(byte*) init_plot_tables::yoffs
|
||||
(byte*) init_plot_tables::yoffs#1 yoffs zp[2]:5 22.0
|
||||
(byte*) init_plot_tables::yoffs#2 yoffs zp[2]:5 6.875
|
||||
(byte*) init_plot_tables::yoffs#4 yoffs zp[2]:5 11.0
|
||||
(byte*) init_plot_tables::yoffs#1 yoffs zp[2]:5 2002.0
|
||||
(byte*) init_plot_tables::yoffs#2 yoffs zp[2]:5 625.625
|
||||
(byte*) init_plot_tables::yoffs#4 yoffs zp[2]:5 1001.0
|
||||
(void()) init_screen()
|
||||
(label) init_screen::@1
|
||||
(label) init_screen::@2
|
||||
@ -1943,35 +1939,35 @@ FINAL SYMBOL TABLE
|
||||
(label) init_screen::@4
|
||||
(label) init_screen::@return
|
||||
(byte*) init_screen::b
|
||||
(byte*) init_screen::b#1 b zp[2]:5 22.0
|
||||
(byte*) init_screen::b#2 b zp[2]:5 14.666666666666666
|
||||
(byte*) init_screen::b#1 b zp[2]:5 2002.0
|
||||
(byte*) init_screen::b#2 b zp[2]:5 1334.6666666666667
|
||||
(byte*) init_screen::c
|
||||
(byte*) init_screen::c#1 c zp[2]:3 22.0
|
||||
(byte*) init_screen::c#2 c zp[2]:3 14.666666666666666
|
||||
(byte*) init_screen::c#1 c zp[2]:3 2002.0
|
||||
(byte*) init_screen::c#2 c zp[2]:3 1334.6666666666667
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@4
|
||||
(void()) plot((byte) plot::x , (byte) plot::y)
|
||||
(byte~) plot::$5 reg byte a 4.0
|
||||
(byte~) plot::$6 reg byte a 4.0
|
||||
(byte~) plot::$7 reg byte a 4.0
|
||||
(byte~) plot::$8 reg byte a 4.0
|
||||
(byte~) plot::$9 reg byte a 4.0
|
||||
(byte~) plot::$5 reg byte a 2000002.0
|
||||
(byte~) plot::$6 reg byte a 2000002.0
|
||||
(byte~) plot::$7 reg byte a 2000002.0
|
||||
(byte~) plot::$8 reg byte a 2000002.0
|
||||
(byte~) plot::$9 reg byte a 2000002.0
|
||||
(label) plot::@return
|
||||
(byte*) plot::plotter
|
||||
(byte*) plot::plotter#0 plotter zp[2]:3 3.0
|
||||
(byte*) plot::plotter#0 plotter zp[2]:3 1500001.5
|
||||
(byte*) plot::plotter_x
|
||||
(byte*) plot::plotter_x#1 plotter_x zp[2]:3 2.0
|
||||
(byte*) plot::plotter_x#2 plotter_x zp[2]:3 0.8
|
||||
(byte*) plot::plotter_x#1 plotter_x zp[2]:3 1000001.0
|
||||
(byte*) plot::plotter_x#2 plotter_x zp[2]:3 400000.4
|
||||
(word) plot::plotter_y
|
||||
(word) plot::plotter_y#1 plotter_y zp[2]:5 2.0
|
||||
(word) plot::plotter_y#2 plotter_y zp[2]:5 4.0
|
||||
(word) plot::plotter_y#1 plotter_y zp[2]:5 1000001.0
|
||||
(word) plot::plotter_y#2 plotter_y zp[2]:5 2000002.0
|
||||
(byte) plot::x
|
||||
(byte) plot::x#0 x zp[1]:7 9.727272727272727
|
||||
(byte) plot::x#0 x zp[1]:7 281818.54545454547
|
||||
(byte) plot::y
|
||||
(byte) plot::y#0 y zp[1]:2 15.000000000000002
|
||||
(byte) plot::y#0 y zp[1]:2 300000.4285714285
|
||||
(const byte*) plot_bit[(number) $100] = { fill( $100, 0) }
|
||||
(const byte*) plot_xhi[(number) $100] = { fill( $100, 0) }
|
||||
(const byte*) plot_xlo[(number) $100] = { fill( $100, 0) }
|
||||
@ -1983,8 +1979,8 @@ FINAL SYMBOL TABLE
|
||||
(label) plots::@3
|
||||
(label) plots::@return
|
||||
(byte) plots::i
|
||||
(byte) plots::i#1 reg byte x 202.0
|
||||
(byte) plots::i#2 reg byte x 101.0
|
||||
(byte) plots::i#1 reg byte x 200002.0
|
||||
(byte) plots::i#2 reg byte x 100001.0
|
||||
(const byte) plots_cnt = (byte) 8
|
||||
(const byte*) plots_x[] = { (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28, (byte) $a, (byte) $28 }
|
||||
(const byte*) plots_y[] = { (byte) $a, (byte) $28, (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28 }
|
||||
|
@ -12,11 +12,11 @@
|
||||
(const byte) RSEL = (byte) 8
|
||||
(const byte*) SCREEN = (byte*) 1024
|
||||
(void()) init_plot_tables()
|
||||
(byte~) init_plot_tables::$0 reg byte a 22.0
|
||||
(byte~) init_plot_tables::$6 reg byte a 22.0
|
||||
(byte~) init_plot_tables::$7 reg byte a 22.0
|
||||
(byte~) init_plot_tables::$8 reg byte a 22.0
|
||||
(byte~) init_plot_tables::$9 zp[1]:7 5.5
|
||||
(byte~) init_plot_tables::$0 reg byte a 2002.0
|
||||
(byte~) init_plot_tables::$6 reg byte a 2002.0
|
||||
(byte~) init_plot_tables::$7 reg byte a 2002.0
|
||||
(byte~) init_plot_tables::$8 reg byte a 2002.0
|
||||
(byte~) init_plot_tables::$9 zp[1]:7 500.5
|
||||
(label) init_plot_tables::@1
|
||||
(label) init_plot_tables::@2
|
||||
(label) init_plot_tables::@3
|
||||
@ -25,19 +25,19 @@
|
||||
(label) init_plot_tables::@6
|
||||
(label) init_plot_tables::@return
|
||||
(byte) init_plot_tables::bits
|
||||
(byte) init_plot_tables::bits#1 reg byte y 11.0
|
||||
(byte) init_plot_tables::bits#3 reg byte y 6.6000000000000005
|
||||
(byte) init_plot_tables::bits#4 reg byte y 7.333333333333333
|
||||
(byte) init_plot_tables::bits#1 reg byte y 1001.0
|
||||
(byte) init_plot_tables::bits#3 reg byte y 600.5999999999999
|
||||
(byte) init_plot_tables::bits#4 reg byte y 667.3333333333334
|
||||
(byte) init_plot_tables::x
|
||||
(byte) init_plot_tables::x#1 reg byte x 16.5
|
||||
(byte) init_plot_tables::x#2 reg byte x 7.333333333333334
|
||||
(byte) init_plot_tables::x#1 reg byte x 1501.5
|
||||
(byte) init_plot_tables::x#2 reg byte x 667.3333333333333
|
||||
(byte) init_plot_tables::y
|
||||
(byte) init_plot_tables::y#1 reg byte x 16.5
|
||||
(byte) init_plot_tables::y#2 reg byte x 5.5
|
||||
(byte) init_plot_tables::y#1 reg byte x 1501.5
|
||||
(byte) init_plot_tables::y#2 reg byte x 500.5
|
||||
(byte*) init_plot_tables::yoffs
|
||||
(byte*) init_plot_tables::yoffs#1 yoffs zp[2]:5 22.0
|
||||
(byte*) init_plot_tables::yoffs#2 yoffs zp[2]:5 6.875
|
||||
(byte*) init_plot_tables::yoffs#4 yoffs zp[2]:5 11.0
|
||||
(byte*) init_plot_tables::yoffs#1 yoffs zp[2]:5 2002.0
|
||||
(byte*) init_plot_tables::yoffs#2 yoffs zp[2]:5 625.625
|
||||
(byte*) init_plot_tables::yoffs#4 yoffs zp[2]:5 1001.0
|
||||
(void()) init_screen()
|
||||
(label) init_screen::@1
|
||||
(label) init_screen::@2
|
||||
@ -45,35 +45,35 @@
|
||||
(label) init_screen::@4
|
||||
(label) init_screen::@return
|
||||
(byte*) init_screen::b
|
||||
(byte*) init_screen::b#1 b zp[2]:5 22.0
|
||||
(byte*) init_screen::b#2 b zp[2]:5 14.666666666666666
|
||||
(byte*) init_screen::b#1 b zp[2]:5 2002.0
|
||||
(byte*) init_screen::b#2 b zp[2]:5 1334.6666666666667
|
||||
(byte*) init_screen::c
|
||||
(byte*) init_screen::c#1 c zp[2]:3 22.0
|
||||
(byte*) init_screen::c#2 c zp[2]:3 14.666666666666666
|
||||
(byte*) init_screen::c#1 c zp[2]:3 2002.0
|
||||
(byte*) init_screen::c#2 c zp[2]:3 1334.6666666666667
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@4
|
||||
(void()) plot((byte) plot::x , (byte) plot::y)
|
||||
(byte~) plot::$5 reg byte a 4.0
|
||||
(byte~) plot::$6 reg byte a 4.0
|
||||
(byte~) plot::$7 reg byte a 4.0
|
||||
(byte~) plot::$8 reg byte a 4.0
|
||||
(byte~) plot::$9 reg byte a 4.0
|
||||
(byte~) plot::$5 reg byte a 2000002.0
|
||||
(byte~) plot::$6 reg byte a 2000002.0
|
||||
(byte~) plot::$7 reg byte a 2000002.0
|
||||
(byte~) plot::$8 reg byte a 2000002.0
|
||||
(byte~) plot::$9 reg byte a 2000002.0
|
||||
(label) plot::@return
|
||||
(byte*) plot::plotter
|
||||
(byte*) plot::plotter#0 plotter zp[2]:3 3.0
|
||||
(byte*) plot::plotter#0 plotter zp[2]:3 1500001.5
|
||||
(byte*) plot::plotter_x
|
||||
(byte*) plot::plotter_x#1 plotter_x zp[2]:3 2.0
|
||||
(byte*) plot::plotter_x#2 plotter_x zp[2]:3 0.8
|
||||
(byte*) plot::plotter_x#1 plotter_x zp[2]:3 1000001.0
|
||||
(byte*) plot::plotter_x#2 plotter_x zp[2]:3 400000.4
|
||||
(word) plot::plotter_y
|
||||
(word) plot::plotter_y#1 plotter_y zp[2]:5 2.0
|
||||
(word) plot::plotter_y#2 plotter_y zp[2]:5 4.0
|
||||
(word) plot::plotter_y#1 plotter_y zp[2]:5 1000001.0
|
||||
(word) plot::plotter_y#2 plotter_y zp[2]:5 2000002.0
|
||||
(byte) plot::x
|
||||
(byte) plot::x#0 x zp[1]:7 9.727272727272727
|
||||
(byte) plot::x#0 x zp[1]:7 281818.54545454547
|
||||
(byte) plot::y
|
||||
(byte) plot::y#0 y zp[1]:2 15.000000000000002
|
||||
(byte) plot::y#0 y zp[1]:2 300000.4285714285
|
||||
(const byte*) plot_bit[(number) $100] = { fill( $100, 0) }
|
||||
(const byte*) plot_xhi[(number) $100] = { fill( $100, 0) }
|
||||
(const byte*) plot_xlo[(number) $100] = { fill( $100, 0) }
|
||||
@ -85,8 +85,8 @@
|
||||
(label) plots::@3
|
||||
(label) plots::@return
|
||||
(byte) plots::i
|
||||
(byte) plots::i#1 reg byte x 202.0
|
||||
(byte) plots::i#2 reg byte x 101.0
|
||||
(byte) plots::i#1 reg byte x 200002.0
|
||||
(byte) plots::i#2 reg byte x 100001.0
|
||||
(const byte) plots_cnt = (byte) 8
|
||||
(const byte*) plots_x[] = { (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28, (byte) $a, (byte) $28 }
|
||||
(const byte*) plots_y[] = { (byte) $a, (byte) $28, (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28 }
|
||||
|
@ -107,10 +107,10 @@ main::@return: scope:[main] from main::@1
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(void()) main()
|
||||
(byte~) main::$0 22.0
|
||||
(byte~) main::$0 202.0
|
||||
(byte) main::c
|
||||
(byte) main::c#1 16.5
|
||||
(byte) main::c#2 14.666666666666666
|
||||
(byte) main::c#1 151.5
|
||||
(byte) main::c#2 134.66666666666666
|
||||
|
||||
Initial phi equivalence classes
|
||||
[ main::c#2 main::c#1 ]
|
||||
@ -186,16 +186,16 @@ main: {
|
||||
// File Data
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [4] *((const byte*) main::SCREEN) ← ~(byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [6] (byte~) main::$0 ← ~ (byte) main::c#2 [ main::c#2 main::$0 ] ( main:2 [ main::c#2 main::$0 ] ) always clobbers reg byte a
|
||||
Statement [4] *((const byte*) main::SCREEN) ← ~(byte) 1 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [6] (byte~) main::$0 ← ~ (byte) main::c#2 [ main::c#2 main::$0 ] ( [ main::c#2 main::$0 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::c#2 main::c#1 ]
|
||||
Statement [4] *((const byte*) main::SCREEN) ← ~(byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [6] (byte~) main::$0 ← ~ (byte) main::c#2 [ main::c#2 main::$0 ] ( main:2 [ main::c#2 main::$0 ] ) always clobbers reg byte a
|
||||
Statement [4] *((const byte*) main::SCREEN) ← ~(byte) 1 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [6] (byte~) main::$0 ← ~ (byte) main::c#2 [ main::c#2 main::$0 ] ( [ main::c#2 main::$0 ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ main::c#2 main::c#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ main::$0 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 31.17: zp[1]:2 [ main::c#2 main::c#1 ] 22: zp[1]:3 [ main::$0 ]
|
||||
Uplift Scope [main] 286.17: zp[1]:2 [ main::c#2 main::c#1 ] 202: zp[1]:3 [ main::$0 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 289 combination reg byte x [ main::c#2 main::c#1 ] reg byte a [ main::$0 ]
|
||||
@ -286,13 +286,13 @@ FINAL SYMBOL TABLE
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(void()) main()
|
||||
(byte~) main::$0 reg byte a 22.0
|
||||
(byte~) main::$0 reg byte a 202.0
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
(const byte*) main::SCREEN = (byte*) 1024
|
||||
(byte) main::c
|
||||
(byte) main::c#1 reg byte x 16.5
|
||||
(byte) main::c#2 reg byte x 14.666666666666666
|
||||
(byte) main::c#1 reg byte x 151.5
|
||||
(byte) main::c#2 reg byte x 134.66666666666666
|
||||
|
||||
reg byte x [ main::c#2 main::c#1 ]
|
||||
reg byte a [ main::$0 ]
|
||||
|
@ -2,13 +2,13 @@
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(void()) main()
|
||||
(byte~) main::$0 reg byte a 22.0
|
||||
(byte~) main::$0 reg byte a 202.0
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
(const byte*) main::SCREEN = (byte*) 1024
|
||||
(byte) main::c
|
||||
(byte) main::c#1 reg byte x 16.5
|
||||
(byte) main::c#2 reg byte x 14.666666666666666
|
||||
(byte) main::c#1 reg byte x 151.5
|
||||
(byte) main::c#2 reg byte x 134.66666666666666
|
||||
|
||||
reg byte x [ main::c#2 main::c#1 ]
|
||||
reg byte a [ main::$0 ]
|
||||
|
@ -200,9 +200,9 @@ Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Inversing boolean not [10] (bool~) bool_const_vars::$2 ← (byte) $15 >= (const byte) bool_const_vars::a from [9] (bool~) bool_const_vars::$1 ← (byte) $15 < (const byte) bool_const_vars::a
|
||||
Inversing boolean not [31] (bool~) bool_const_inline::$6 ← (byte) $15 >= (const byte) bool_const_inline::a from [30] (bool~) bool_const_inline::$5 ← (byte) $15 < (const byte) bool_const_inline::a
|
||||
Successful SSA optimization Pass2UnaryNotSimplification
|
||||
Alias (bool) bool_const_vars::b1#0 = (bool~) bool_const_vars::$3
|
||||
Alias (bool) bool_const_vars::b2#0 = (bool~) bool_const_vars::$6
|
||||
Alias (bool) bool_const_vars::b#0 = (bool~) bool_const_vars::$9
|
||||
Alias bool_const_vars::b1#0 = bool_const_vars::$3
|
||||
Alias bool_const_vars::b2#0 = bool_const_vars::$6
|
||||
Alias bool_const_vars::b#0 = bool_const_vars::$9
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Rewriting || if()-condition to two if()s [16] (bool) bool_const_vars::b#0 ← (bool~) bool_const_vars::$8 || false
|
||||
Rewriting && if()-condition to two if()s [15] (bool~) bool_const_vars::$8 ← (bool) bool_const_vars::b1#0 && (bool~) bool_const_vars::$7
|
||||
@ -484,9 +484,9 @@ bool_const_if: {
|
||||
// File Data
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [12] *((const byte*) SCREEN+(byte) 2) ← (byte) 't' [ ] ( main:2::bool_const_inline:9 [ ] ) always clobbers reg byte a
|
||||
Statement [15] *((const byte*) SCREEN+(byte) 1) ← (byte) 'f' [ ] ( main:2::bool_const_vars:7 [ ] ) always clobbers reg byte a
|
||||
Statement [18] *((const byte*) SCREEN) ← (byte) 't' [ ] ( main:2::bool_const_if:5 [ ] ) always clobbers reg byte a
|
||||
Statement [12] *((const byte*) SCREEN+(byte) 2) ← (byte) 't' [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [15] *((const byte*) SCREEN+(byte) 1) ← (byte) 'f' [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [18] *((const byte*) SCREEN) ← (byte) 't' [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main]
|
||||
|
@ -16,6 +16,7 @@ main: {
|
||||
!:
|
||||
eor #1
|
||||
tay
|
||||
txa
|
||||
jsr isSet
|
||||
// if( isSet(i, (i&1)==0))
|
||||
cmp #0
|
||||
@ -38,10 +39,9 @@ main: {
|
||||
}
|
||||
// Determine whether to set a char to '*.
|
||||
// Returns true if i&8!=0 or b=true
|
||||
// isSet(byte register(X) i, bool register(Y) b)
|
||||
// isSet(byte register(A) i, bool register(Y) b)
|
||||
isSet: {
|
||||
// i&8
|
||||
txa
|
||||
and #8
|
||||
// (i&8)!=0
|
||||
eor #0
|
||||
|
@ -129,12 +129,12 @@ Finalized unsigned number type (byte) 0
|
||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Inferred type updated to byte in (unumber~) main::$0 ← (byte) main::i#2 & (byte) 1
|
||||
Inferred type updated to byte in (unumber~) isSet::$0 ← (byte) isSet::i#1 & (byte) 8
|
||||
Alias (bool) isSet::b#0 = (bool~) main::$1
|
||||
Alias (bool) isSet::return#0 = (bool) isSet::return#3
|
||||
Alias (byte) main::i#2 = (byte) main::i#6 (byte) main::i#3 (byte) main::i#4
|
||||
Alias (bool) isSet::return#1 = (bool~) isSet::$2 (bool) isSet::return#4 (bool) isSet::return#2
|
||||
Alias isSet::b#0 = main::$1
|
||||
Alias isSet::return#0 = isSet::return#3
|
||||
Alias main::i#2 = main::i#6 main::i#3 main::i#4
|
||||
Alias isSet::return#1 = isSet::$2 isSet::return#4 isSet::return#2
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Alias (byte) main::i#2 = (byte) main::i#5
|
||||
Alias main::i#2 = main::i#5
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Identical Phi Values (byte) isSet::i#1 (byte) isSet::i#0
|
||||
Identical Phi Values (bool) isSet::b#1 (bool) isSet::b#0
|
||||
@ -230,21 +230,21 @@ isSet::@return: scope:[isSet] from isSet
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(bool()) isSet((byte) isSet::i , (bool) isSet::b)
|
||||
(byte~) isSet::$0 4.0
|
||||
(bool~) isSet::$1 4.0
|
||||
(byte~) isSet::$0 2002.0
|
||||
(bool~) isSet::$1 2002.0
|
||||
(bool) isSet::b
|
||||
(bool) isSet::b#0 3.25
|
||||
(bool) isSet::b#0 275.5
|
||||
(byte) isSet::i
|
||||
(byte) isSet::i#0 13.0
|
||||
(byte) isSet::i#0 1102.0
|
||||
(bool) isSet::return
|
||||
(bool) isSet::return#0 22.0
|
||||
(bool) isSet::return#1 4.333333333333333
|
||||
(bool) isSet::return#0 202.0
|
||||
(bool) isSet::return#1 367.33333333333337
|
||||
(void()) main()
|
||||
(byte~) main::$0 22.0
|
||||
(bool~) main::$2 22.0
|
||||
(byte~) main::$0 202.0
|
||||
(bool~) main::$2 202.0
|
||||
(byte) main::i
|
||||
(byte) main::i#1 16.5
|
||||
(byte) main::i#2 6.6
|
||||
(byte) main::i#1 151.5
|
||||
(byte) main::i#2 60.6
|
||||
|
||||
Initial phi equivalence classes
|
||||
[ main::i#2 main::i#1 ]
|
||||
@ -413,19 +413,19 @@ isSet: {
|
||||
// File Data
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [7] (bool) isSet::b#0 ← (byte~) main::$0 == (byte) 0 [ main::i#2 isSet::b#0 ] ( main:2 [ main::i#2 isSet::b#0 ] ) always clobbers reg byte a
|
||||
Statement [7] (bool) isSet::b#0 ← (byte~) main::$0 == (byte) 0 [ main::i#2 isSet::b#0 ] ( [ main::i#2 isSet::b#0 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Statement [13] *((const byte*) main::screen + (byte) main::i#2) ← (byte) ' ' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a
|
||||
Statement [17] *((const byte*) main::screen + (byte) main::i#2) ← (byte) '*' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a
|
||||
Statement [19] (bool~) isSet::$1 ← (byte~) isSet::$0 != (byte) 0 [ isSet::b#0 isSet::$1 ] ( main:2::isSet:9 [ main::i#2 isSet::b#0 isSet::$1 ] ) always clobbers reg byte a
|
||||
Statement [13] *((const byte*) main::screen + (byte) main::i#2) ← (byte) ' ' [ main::i#2 ] ( [ main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [17] *((const byte*) main::screen + (byte) main::i#2) ← (byte) '*' [ main::i#2 ] ( [ main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [19] (bool~) isSet::$1 ← (byte~) isSet::$0 != (byte) 0 [ isSet::b#0 isSet::$1 ] ( [ isSet::b#0 isSet::$1 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:4 [ isSet::b#0 ]
|
||||
Statement [20] (bool) isSet::return#1 ← (bool) isSet::b#0 || (bool~) isSet::$1 [ isSet::return#1 ] ( main:2::isSet:9 [ main::i#2 isSet::return#1 ] ) always clobbers reg byte a
|
||||
Statement [6] (byte~) main::$0 ← (byte) main::i#2 & (byte) 1 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] ) always clobbers reg byte a
|
||||
Statement [7] (bool) isSet::b#0 ← (byte~) main::$0 == (byte) 0 [ main::i#2 isSet::b#0 ] ( main:2 [ main::i#2 isSet::b#0 ] ) always clobbers reg byte a
|
||||
Statement [13] *((const byte*) main::screen + (byte) main::i#2) ← (byte) ' ' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a
|
||||
Statement [17] *((const byte*) main::screen + (byte) main::i#2) ← (byte) '*' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a
|
||||
Statement [19] (bool~) isSet::$1 ← (byte~) isSet::$0 != (byte) 0 [ isSet::b#0 isSet::$1 ] ( main:2::isSet:9 [ main::i#2 isSet::b#0 isSet::$1 ] ) always clobbers reg byte a
|
||||
Statement [20] (bool) isSet::return#1 ← (bool) isSet::b#0 || (bool~) isSet::$1 [ isSet::return#1 ] ( main:2::isSet:9 [ main::i#2 isSet::return#1 ] ) always clobbers reg byte a
|
||||
Statement [20] (bool) isSet::return#1 ← (bool) isSet::b#0 || (bool~) isSet::$1 [ isSet::return#1 ] ( [ isSet::return#1 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [6] (byte~) main::$0 ← (byte) main::i#2 & (byte) 1 [ main::i#2 main::$0 ] ( [ main::i#2 main::$0 ] { } ) always clobbers reg byte a
|
||||
Statement [7] (bool) isSet::b#0 ← (byte~) main::$0 == (byte) 0 [ main::i#2 isSet::b#0 ] ( [ main::i#2 isSet::b#0 ] { } ) always clobbers reg byte a
|
||||
Statement [13] *((const byte*) main::screen + (byte) main::i#2) ← (byte) ' ' [ main::i#2 ] ( [ main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [17] *((const byte*) main::screen + (byte) main::i#2) ← (byte) '*' [ main::i#2 ] ( [ main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [19] (bool~) isSet::$1 ← (byte~) isSet::$0 != (byte) 0 [ isSet::b#0 isSet::$1 ] ( [ isSet::b#0 isSet::$1 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [20] (bool) isSet::return#1 ← (bool) isSet::b#0 || (bool~) isSet::$1 [ isSet::return#1 ] ( [ isSet::return#1 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ main::$0 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:4 [ isSet::b#0 ] : zp[1]:4 , reg byte x , reg byte y ,
|
||||
@ -437,18 +437,18 @@ Potential registers zp[1]:9 [ isSet::$1 ] : zp[1]:9 , reg byte a , reg byte x ,
|
||||
Potential registers zp[1]:10 [ isSet::return#1 ] : zp[1]:10 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 23.1: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:3 [ main::$0 ] 22: zp[1]:7 [ main::$2 ]
|
||||
Uplift Scope [isSet] 22: zp[1]:6 [ isSet::return#0 ] 13: zp[1]:5 [ isSet::i#0 ] 4.33: zp[1]:10 [ isSet::return#1 ] 4: zp[1]:8 [ isSet::$0 ] 4: zp[1]:9 [ isSet::$1 ] 3.25: zp[1]:4 [ isSet::b#0 ]
|
||||
Uplift Scope [isSet] 2,002: zp[1]:8 [ isSet::$0 ] 2,002: zp[1]:9 [ isSet::$1 ] 1,102: zp[1]:5 [ isSet::i#0 ] 367.33: zp[1]:10 [ isSet::return#1 ] 275.5: zp[1]:4 [ isSet::b#0 ] 202: zp[1]:6 [ isSet::return#0 ]
|
||||
Uplift Scope [main] 212.1: zp[1]:2 [ main::i#2 main::i#1 ] 202: zp[1]:3 [ main::$0 ] 202: zp[1]:7 [ main::$2 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 871 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$0 ] reg byte a [ main::$2 ]
|
||||
Uplifting [isSet] best 741 combination reg byte a [ isSet::return#0 ] reg byte x [ isSet::i#0 ] reg byte a [ isSet::return#1 ] reg byte a [ isSet::$0 ] zp[1]:9 [ isSet::$1 ] zp[1]:4 [ isSet::b#0 ]
|
||||
Uplifting [isSet] best 1103 combination reg byte a [ isSet::$0 ] reg byte a [ isSet::$1 ] reg byte a [ isSet::i#0 ] reg byte a [ isSet::return#1 ] zp[1]:4 [ isSet::b#0 ] zp[1]:6 [ isSet::return#0 ]
|
||||
Limited combination testing to 100 combinations of 3072 possible.
|
||||
Uplifting [] best 741 combination
|
||||
Attempting to uplift remaining variables inzp[1]:9 [ isSet::$1 ]
|
||||
Uplifting [isSet] best 735 combination reg byte a [ isSet::$1 ]
|
||||
Uplifting [main] best 813 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$0 ] reg byte a [ main::$2 ]
|
||||
Uplifting [] best 813 combination
|
||||
Attempting to uplift remaining variables inzp[1]:4 [ isSet::b#0 ]
|
||||
Uplifting [isSet] best 728 combination reg byte y [ isSet::b#0 ]
|
||||
Uplifting [isSet] best 806 combination reg byte y [ isSet::b#0 ]
|
||||
Attempting to uplift remaining variables inzp[1]:6 [ isSet::return#0 ]
|
||||
Uplifting [isSet] best 746 combination reg byte a [ isSet::return#0 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
@ -498,7 +498,8 @@ main: {
|
||||
!:
|
||||
eor #1
|
||||
tay
|
||||
// [8] (byte) isSet::i#0 ← (byte) main::i#2
|
||||
// [8] (byte) isSet::i#0 ← (byte) main::i#2 -- vbuaa=vbuxx
|
||||
txa
|
||||
// [9] call isSet
|
||||
jsr isSet
|
||||
// [10] (bool) isSet::return#0 ← (bool) isSet::return#1
|
||||
@ -538,10 +539,9 @@ main: {
|
||||
// isSet
|
||||
// Determine whether to set a char to '*.
|
||||
// Returns true if i&8!=0 or b=true
|
||||
// isSet(byte register(X) i, bool register(Y) b)
|
||||
// isSet(byte register(A) i, bool register(Y) b)
|
||||
isSet: {
|
||||
// [18] (byte~) isSet::$0 ← (byte) isSet::i#0 & (byte) 8 -- vbuaa=vbuxx_band_vbuc1
|
||||
txa
|
||||
// [18] (byte~) isSet::$0 ← (byte) isSet::i#0 & (byte) 8 -- vbuaa=vbuaa_band_vbuc1
|
||||
and #8
|
||||
// [19] (bool~) isSet::$1 ← (byte~) isSet::$0 != (byte) 0 -- vboaa=vbuaa_neq_vbuc1
|
||||
eor #0
|
||||
@ -596,19 +596,19 @@ FINAL SYMBOL TABLE
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(bool()) isSet((byte) isSet::i , (bool) isSet::b)
|
||||
(byte~) isSet::$0 reg byte a 4.0
|
||||
(bool~) isSet::$1 reg byte a 4.0
|
||||
(byte~) isSet::$0 reg byte a 2002.0
|
||||
(bool~) isSet::$1 reg byte a 2002.0
|
||||
(label) isSet::@return
|
||||
(bool) isSet::b
|
||||
(bool) isSet::b#0 reg byte y 3.25
|
||||
(bool) isSet::b#0 reg byte y 275.5
|
||||
(byte) isSet::i
|
||||
(byte) isSet::i#0 reg byte x 13.0
|
||||
(byte) isSet::i#0 reg byte a 1102.0
|
||||
(bool) isSet::return
|
||||
(bool) isSet::return#0 reg byte a 22.0
|
||||
(bool) isSet::return#1 reg byte a 4.333333333333333
|
||||
(bool) isSet::return#0 reg byte a 202.0
|
||||
(bool) isSet::return#1 reg byte a 367.33333333333337
|
||||
(void()) main()
|
||||
(byte~) main::$0 reg byte a 22.0
|
||||
(bool~) main::$2 reg byte a 22.0
|
||||
(byte~) main::$0 reg byte a 202.0
|
||||
(bool~) main::$2 reg byte a 202.0
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
@ -616,14 +616,14 @@ FINAL SYMBOL TABLE
|
||||
(label) main::@5
|
||||
(label) main::@return
|
||||
(byte) main::i
|
||||
(byte) main::i#1 reg byte x 16.5
|
||||
(byte) main::i#2 reg byte x 6.6
|
||||
(byte) main::i#1 reg byte x 151.5
|
||||
(byte) main::i#2 reg byte x 60.6
|
||||
(const byte*) main::screen = (byte*) 1024
|
||||
|
||||
reg byte x [ main::i#2 main::i#1 ]
|
||||
reg byte a [ main::$0 ]
|
||||
reg byte y [ isSet::b#0 ]
|
||||
reg byte x [ isSet::i#0 ]
|
||||
reg byte a [ isSet::i#0 ]
|
||||
reg byte a [ isSet::return#0 ]
|
||||
reg byte a [ main::$2 ]
|
||||
reg byte a [ isSet::$0 ]
|
||||
@ -632,7 +632,7 @@ reg byte a [ isSet::return#1 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 533
|
||||
Score: 551
|
||||
|
||||
// File Comments
|
||||
// Test a function taking boolean parameter and returning boolean result
|
||||
@ -670,7 +670,8 @@ main: {
|
||||
!:
|
||||
eor #1
|
||||
tay
|
||||
// [8] (byte) isSet::i#0 ← (byte) main::i#2
|
||||
// [8] (byte) isSet::i#0 ← (byte) main::i#2 -- vbuaa=vbuxx
|
||||
txa
|
||||
// [9] call isSet
|
||||
jsr isSet
|
||||
// [10] (bool) isSet::return#0 ← (bool) isSet::return#1
|
||||
@ -708,11 +709,10 @@ main: {
|
||||
// isSet
|
||||
// Determine whether to set a char to '*.
|
||||
// Returns true if i&8!=0 or b=true
|
||||
// isSet(byte register(X) i, bool register(Y) b)
|
||||
// isSet(byte register(A) i, bool register(Y) b)
|
||||
isSet: {
|
||||
// i&8
|
||||
// [18] (byte~) isSet::$0 ← (byte) isSet::i#0 & (byte) 8 -- vbuaa=vbuxx_band_vbuc1
|
||||
txa
|
||||
// [18] (byte~) isSet::$0 ← (byte) isSet::i#0 & (byte) 8 -- vbuaa=vbuaa_band_vbuc1
|
||||
and #8
|
||||
// (i&8)!=0
|
||||
// [19] (bool~) isSet::$1 ← (byte~) isSet::$0 != (byte) 0 -- vboaa=vbuaa_neq_vbuc1
|
||||
|
@ -2,19 +2,19 @@
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(bool()) isSet((byte) isSet::i , (bool) isSet::b)
|
||||
(byte~) isSet::$0 reg byte a 4.0
|
||||
(bool~) isSet::$1 reg byte a 4.0
|
||||
(byte~) isSet::$0 reg byte a 2002.0
|
||||
(bool~) isSet::$1 reg byte a 2002.0
|
||||
(label) isSet::@return
|
||||
(bool) isSet::b
|
||||
(bool) isSet::b#0 reg byte y 3.25
|
||||
(bool) isSet::b#0 reg byte y 275.5
|
||||
(byte) isSet::i
|
||||
(byte) isSet::i#0 reg byte x 13.0
|
||||
(byte) isSet::i#0 reg byte a 1102.0
|
||||
(bool) isSet::return
|
||||
(bool) isSet::return#0 reg byte a 22.0
|
||||
(bool) isSet::return#1 reg byte a 4.333333333333333
|
||||
(bool) isSet::return#0 reg byte a 202.0
|
||||
(bool) isSet::return#1 reg byte a 367.33333333333337
|
||||
(void()) main()
|
||||
(byte~) main::$0 reg byte a 22.0
|
||||
(bool~) main::$2 reg byte a 22.0
|
||||
(byte~) main::$0 reg byte a 202.0
|
||||
(bool~) main::$2 reg byte a 202.0
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
@ -22,14 +22,14 @@
|
||||
(label) main::@5
|
||||
(label) main::@return
|
||||
(byte) main::i
|
||||
(byte) main::i#1 reg byte x 16.5
|
||||
(byte) main::i#2 reg byte x 6.6
|
||||
(byte) main::i#1 reg byte x 151.5
|
||||
(byte) main::i#2 reg byte x 60.6
|
||||
(const byte*) main::screen = (byte*) 1024
|
||||
|
||||
reg byte x [ main::i#2 main::i#1 ]
|
||||
reg byte a [ main::$0 ]
|
||||
reg byte y [ isSet::b#0 ]
|
||||
reg byte x [ isSet::i#0 ]
|
||||
reg byte a [ isSet::i#0 ]
|
||||
reg byte a [ isSet::return#0 ]
|
||||
reg byte a [ main::$2 ]
|
||||
reg byte a [ isSet::$0 ]
|
||||
|
@ -76,9 +76,9 @@ Finalized unsigned number type (byte) 1
|
||||
Finalized unsigned number type (byte) 0
|
||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Inferred type updated to byte in (unumber~) main::$1 ← (byte) main::i#2 & (byte) 1
|
||||
Alias (byte) main::i#2 = (byte) main::i#4
|
||||
Alias main::i#2 = main::i#4
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Alias (byte) main::i#2 = (byte) main::i#3
|
||||
Alias main::i#2 = main::i#3
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Simple Condition (bool~) main::$5 [10] if((byte) main::i#1!=rangelast(0,$14)) goto main::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
@ -161,10 +161,10 @@ main::@return: scope:[main] from main::@2
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(void()) main()
|
||||
(byte~) main::$1 11.0
|
||||
(byte~) main::$1 101.0
|
||||
(byte) main::i
|
||||
(byte) main::i#1 16.5
|
||||
(byte) main::i#2 11.0
|
||||
(byte) main::i#1 151.5
|
||||
(byte) main::i#2 101.0
|
||||
|
||||
Initial phi equivalence classes
|
||||
[ main::i#2 main::i#1 ]
|
||||
@ -257,15 +257,15 @@ main: {
|
||||
// File Data
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [9] *((const byte*) main::screen + (byte) main::i#2) ← (byte) '*' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a
|
||||
Statement [9] *((const byte*) main::screen + (byte) main::i#2) ← (byte) '*' [ main::i#2 ] ( [ main::i#2 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Statement [6] (byte~) main::$1 ← (byte) main::i#2 & (byte) 1 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) always clobbers reg byte a
|
||||
Statement [9] *((const byte*) main::screen + (byte) main::i#2) ← (byte) '*' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a
|
||||
Statement [6] (byte~) main::$1 ← (byte) main::i#2 & (byte) 1 [ main::i#2 main::$1 ] ( [ main::i#2 main::$1 ] { } ) always clobbers reg byte a
|
||||
Statement [9] *((const byte*) main::screen + (byte) main::i#2) ← (byte) '*' [ main::i#2 ] ( [ main::i#2 ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ main::$1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 27.5: zp[1]:2 [ main::i#2 main::i#1 ] 11: zp[1]:3 [ main::$1 ]
|
||||
Uplift Scope [main] 252.5: zp[1]:2 [ main::i#2 main::i#1 ] 101: zp[1]:3 [ main::$1 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 483 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$1 ]
|
||||
@ -378,15 +378,15 @@ FINAL SYMBOL TABLE
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(void()) main()
|
||||
(byte~) main::$1 reg byte a 11.0
|
||||
(byte~) main::$1 reg byte a 101.0
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@4
|
||||
(label) main::@return
|
||||
(byte) main::i
|
||||
(byte) main::i#1 reg byte x 16.5
|
||||
(byte) main::i#2 reg byte x 11.0
|
||||
(byte) main::i#1 reg byte x 151.5
|
||||
(byte) main::i#2 reg byte x 101.0
|
||||
(const byte*) main::screen = (byte*) 1024
|
||||
|
||||
reg byte x [ main::i#2 main::i#1 ]
|
||||
|
@ -2,15 +2,15 @@
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(void()) main()
|
||||
(byte~) main::$1 reg byte a 11.0
|
||||
(byte~) main::$1 reg byte a 101.0
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@4
|
||||
(label) main::@return
|
||||
(byte) main::i
|
||||
(byte) main::i#1 reg byte x 16.5
|
||||
(byte) main::i#2 reg byte x 11.0
|
||||
(byte) main::i#1 reg byte x 151.5
|
||||
(byte) main::i#2 reg byte x 101.0
|
||||
(const byte*) main::screen = (byte*) 1024
|
||||
|
||||
reg byte x [ main::i#2 main::i#1 ]
|
||||
|
@ -67,9 +67,9 @@ SYMBOL TABLE SSA
|
||||
(label) main::@6
|
||||
(label) main::@return
|
||||
|
||||
Alias (bool) framedone#2 = (bool) framedone#5 (bool) framedone#7
|
||||
Alias (bool) framedone#0 = (bool) framedone#8
|
||||
Alias (bool) framedone#3 = (bool) framedone#6
|
||||
Alias framedone#2 = framedone#5 framedone#7
|
||||
Alias framedone#0 = framedone#8
|
||||
Alias framedone#3 = framedone#6
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Identical Phi Values (bool) framedone#9 (bool) framedone#0
|
||||
Identical Phi Values (bool) framedone#4 (bool) framedone#2
|
||||
@ -133,7 +133,7 @@ main::@2: scope:[main] from main::@1 main::@2
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(bool) framedone
|
||||
(bool) framedone#2 50.5
|
||||
(bool) framedone#2 500.5
|
||||
(void()) main()
|
||||
|
||||
Initial phi equivalence classes
|
||||
@ -199,7 +199,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Potential registers zp[1]:2 [ framedone#2 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [] 50.5: zp[1]:2 [ framedone#2 ]
|
||||
Uplift Scope [] 500.5: zp[1]:2 [ framedone#2 ]
|
||||
Uplift Scope [main]
|
||||
|
||||
Uplifting [] best 892 combination reg byte a [ framedone#2 ]
|
||||
@ -282,7 +282,7 @@ FINAL SYMBOL TABLE
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(bool) framedone
|
||||
(bool) framedone#2 reg byte a 50.5
|
||||
(bool) framedone#2 reg byte a 500.5
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
|
@ -2,7 +2,7 @@
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(bool) framedone
|
||||
(bool) framedone#2 reg byte a 50.5
|
||||
(bool) framedone#2 reg byte a 500.5
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
|
@ -59,7 +59,7 @@ Finalized unsigned number type (byte) 0
|
||||
Finalized unsigned number type (byte) 1
|
||||
Finalized unsigned number type (byte) 2
|
||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Alias (bool*) main::bscreen#1 = (bool*~) main::$0 (bool*) main::bscreen#3
|
||||
Alias main::bscreen#1 = main::$0 main::bscreen#3
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Rewriting ! if()-condition to reversed if() [5] (bool~) main::$1 ← ! *((bool*) main::bscreen#1)
|
||||
Successful SSA optimization Pass2ConditionalAndOrRewriting
|
||||
@ -187,11 +187,11 @@ main: {
|
||||
// File Data
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [4] *((bool*) 1024) ← true [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [5] *((bool*) 1024+(byte) 1) ← false [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [6] *((bool*) 1024+(byte) 2) ← true [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [7] if(*((bool*) 1024+(byte) 2)) goto main::@1 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [8] *((bool*) 1024+(byte) 3) ← true [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [4] *((bool*) 1024) ← true [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [5] *((bool*) 1024+(byte) 1) ← false [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [6] *((bool*) 1024+(byte) 2) ← true [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [7] if(*((bool*) 1024+(byte) 2)) goto main::@1 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [8] *((bool*) 1024+(byte) 3) ← true [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main]
|
||||
|
@ -349,29 +349,29 @@ Inferred type updated to byte in (unumber~) bool_and::$1 ← (byte) bool_and::i#
|
||||
Inferred type updated to byte in (unumber~) bool_or::$1 ← (byte) bool_or::i#2 & (byte) 1
|
||||
Inferred type updated to byte in (unumber~) bool_not::$1 ← (byte) bool_not::i#2 & (byte) 1
|
||||
Inferred type updated to byte in (unumber~) bool_complex::$1 ← (byte) bool_complex::i#2 & (byte) 1
|
||||
Alias (bool) bool_and::o1#0 = (bool~) bool_and::$0
|
||||
Alias (bool) bool_and::o2#0 = (bool~) bool_and::$2
|
||||
Alias (bool) bool_and::o3#0 = (bool~) bool_and::$3
|
||||
Alias (byte) bool_and::i#2 = (byte) bool_and::i#3 (byte) bool_and::i#4
|
||||
Alias (bool) bool_or::o1#0 = (bool~) bool_or::$0
|
||||
Alias (bool) bool_or::o2#0 = (bool~) bool_or::$2
|
||||
Alias (bool) bool_or::o3#0 = (bool~) bool_or::$3
|
||||
Alias (byte) bool_or::i#2 = (byte) bool_or::i#3 (byte) bool_or::i#4
|
||||
Alias (bool) bool_not::o1#0 = (bool~) bool_not::$0
|
||||
Alias (bool) bool_not::o2#0 = (bool~) bool_not::$2
|
||||
Alias (bool) bool_not::o3#0 = (bool~) bool_not::$4
|
||||
Alias (byte) bool_not::i#2 = (byte) bool_not::i#3 (byte) bool_not::i#4
|
||||
Alias (bool) bool_complex::o1#0 = (bool~) bool_complex::$0
|
||||
Alias (bool) bool_complex::o2#0 = (bool~) bool_complex::$2
|
||||
Alias (bool) bool_complex::o3#0 = (bool~) bool_complex::$3
|
||||
Alias (bool) bool_complex::o4#0 = (bool~) bool_complex::$5
|
||||
Alias (bool) bool_complex::o5#0 = (bool~) bool_complex::$6
|
||||
Alias (byte) bool_complex::i#2 = (byte) bool_complex::i#3 (byte) bool_complex::i#4
|
||||
Alias bool_and::o1#0 = bool_and::$0
|
||||
Alias bool_and::o2#0 = bool_and::$2
|
||||
Alias bool_and::o3#0 = bool_and::$3
|
||||
Alias bool_and::i#2 = bool_and::i#3 bool_and::i#4
|
||||
Alias bool_or::o1#0 = bool_or::$0
|
||||
Alias bool_or::o2#0 = bool_or::$2
|
||||
Alias bool_or::o3#0 = bool_or::$3
|
||||
Alias bool_or::i#2 = bool_or::i#3 bool_or::i#4
|
||||
Alias bool_not::o1#0 = bool_not::$0
|
||||
Alias bool_not::o2#0 = bool_not::$2
|
||||
Alias bool_not::o3#0 = bool_not::$4
|
||||
Alias bool_not::i#2 = bool_not::i#3 bool_not::i#4
|
||||
Alias bool_complex::o1#0 = bool_complex::$0
|
||||
Alias bool_complex::o2#0 = bool_complex::$2
|
||||
Alias bool_complex::o3#0 = bool_complex::$3
|
||||
Alias bool_complex::o4#0 = bool_complex::$5
|
||||
Alias bool_complex::o5#0 = bool_complex::$6
|
||||
Alias bool_complex::i#2 = bool_complex::i#3 bool_complex::i#4
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Alias (byte) bool_and::i#2 = (byte) bool_and::i#5
|
||||
Alias (byte) bool_or::i#2 = (byte) bool_or::i#5
|
||||
Alias (byte) bool_not::i#2 = (byte) bool_not::i#5
|
||||
Alias (byte) bool_complex::i#2 = (byte) bool_complex::i#5
|
||||
Alias bool_and::i#2 = bool_and::i#5
|
||||
Alias bool_or::i#2 = bool_or::i#5
|
||||
Alias bool_not::i#2 = bool_not::i#5
|
||||
Alias bool_complex::i#2 = bool_complex::i#5
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Simple Condition (bool~) bool_and::$4 [16] if((byte) bool_and::i#1!=rangelast(0,$14)) goto bool_and::@1
|
||||
Simple Condition (bool~) bool_or::$4 [29] if((byte) bool_or::i#1!=rangelast(0,$14)) goto bool_or::@1
|
||||
@ -631,38 +631,38 @@ bool_and::@2: scope:[bool_and] from bool_and::@5
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(void()) bool_and()
|
||||
(byte~) bool_and::$1 11.0
|
||||
(byte~) bool_and::$1 1001.0
|
||||
(byte) bool_and::i
|
||||
(byte) bool_and::i#1 16.5
|
||||
(byte) bool_and::i#2 11.0
|
||||
(byte) bool_and::i#1 1501.5
|
||||
(byte) bool_and::i#2 1001.0000000000001
|
||||
(bool) bool_and::o1
|
||||
(bool) bool_and::o2
|
||||
(bool) bool_and::o3
|
||||
(void()) bool_complex()
|
||||
(byte~) bool_complex::$1 22.0
|
||||
(byte~) bool_complex::$1 2002.0
|
||||
(byte) bool_complex::i
|
||||
(byte) bool_complex::i#1 16.5
|
||||
(byte) bool_complex::i#2 6.6
|
||||
(byte) bool_complex::i#1 1501.5
|
||||
(byte) bool_complex::i#2 600.6
|
||||
(bool) bool_complex::o1
|
||||
(bool) bool_complex::o1#0 6.6000000000000005
|
||||
(bool) bool_complex::o1#0 600.5999999999999
|
||||
(bool) bool_complex::o2
|
||||
(bool) bool_complex::o2#0 8.25
|
||||
(bool) bool_complex::o2#0 750.75
|
||||
(bool) bool_complex::o3
|
||||
(bool) bool_complex::o4
|
||||
(bool) bool_complex::o5
|
||||
(void()) bool_not()
|
||||
(byte~) bool_not::$1 11.0
|
||||
(byte~) bool_not::$1 1001.0
|
||||
(byte) bool_not::i
|
||||
(byte) bool_not::i#1 16.5
|
||||
(byte) bool_not::i#2 11.0
|
||||
(byte) bool_not::i#1 1501.5
|
||||
(byte) bool_not::i#2 1001.0000000000001
|
||||
(bool) bool_not::o1
|
||||
(bool) bool_not::o2
|
||||
(bool) bool_not::o3
|
||||
(void()) bool_or()
|
||||
(byte~) bool_or::$1 11.0
|
||||
(byte~) bool_or::$1 1001.0
|
||||
(byte) bool_or::i
|
||||
(byte) bool_or::i#1 16.5
|
||||
(byte) bool_or::i#2 11.0
|
||||
(byte) bool_or::i#1 1501.5
|
||||
(byte) bool_or::i#2 1001.0000000000001
|
||||
(bool) bool_or::o1
|
||||
(bool) bool_or::o2
|
||||
(bool) bool_or::o3
|
||||
@ -1043,36 +1043,36 @@ bool_and: {
|
||||
// File Data
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [15] (bool) bool_complex::o1#0 ← (byte) bool_complex::i#2 < (byte) $a [ bool_complex::i#2 bool_complex::o1#0 ] ( main:2::bool_complex:11 [ bool_complex::i#2 bool_complex::o1#0 ] ) always clobbers reg byte a
|
||||
Statement [15] (bool) bool_complex::o1#0 ← (byte) bool_complex::i#2 < (byte) $a [ bool_complex::i#2 bool_complex::o1#0 ] ( [ bool_complex::i#2 bool_complex::o1#0 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ bool_complex::i#2 bool_complex::i#1 ]
|
||||
Statement [16] (byte~) bool_complex::$1 ← (byte) bool_complex::i#2 & (byte) 1 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::$1 ] ( main:2::bool_complex:11 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::$1 ] ) always clobbers reg byte a
|
||||
Statement [16] (byte~) bool_complex::$1 ← (byte) bool_complex::i#2 & (byte) 1 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::$1 ] ( [ bool_complex::i#2 bool_complex::o1#0 bool_complex::$1 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:6 [ bool_complex::o1#0 ]
|
||||
Statement [17] (bool) bool_complex::o2#0 ← (byte~) bool_complex::$1 == (byte) 0 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::o2#0 ] ( main:2::bool_complex:11 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::o2#0 ] ) always clobbers reg byte a
|
||||
Statement [22] *((const byte*) bool_complex::screen + (byte) bool_complex::i#2) ← (byte) '*' [ bool_complex::i#2 ] ( main:2::bool_complex:11 [ bool_complex::i#2 ] ) always clobbers reg byte a
|
||||
Statement [26] *((const byte*) bool_complex::screen + (byte) bool_complex::i#2) ← (byte) ' ' [ bool_complex::i#2 ] ( main:2::bool_complex:11 [ bool_complex::i#2 ] ) always clobbers reg byte a
|
||||
Statement [32] *((const byte*) bool_not::screen + (byte) bool_not::i#2) ← (byte) '*' [ bool_not::i#2 ] ( main:2::bool_not:9 [ bool_not::i#2 ] ) always clobbers reg byte a
|
||||
Statement [17] (bool) bool_complex::o2#0 ← (byte~) bool_complex::$1 == (byte) 0 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::o2#0 ] ( [ bool_complex::i#2 bool_complex::o1#0 bool_complex::o2#0 ] { } ) always clobbers reg byte a
|
||||
Statement [22] *((const byte*) bool_complex::screen + (byte) bool_complex::i#2) ← (byte) '*' [ bool_complex::i#2 ] ( [ bool_complex::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [26] *((const byte*) bool_complex::screen + (byte) bool_complex::i#2) ← (byte) ' ' [ bool_complex::i#2 ] ( [ bool_complex::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [32] *((const byte*) bool_not::screen + (byte) bool_not::i#2) ← (byte) '*' [ bool_not::i#2 ] ( [ bool_not::i#2 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ bool_not::i#2 bool_not::i#1 ]
|
||||
Statement [36] *((const byte*) bool_not::screen + (byte) bool_not::i#2) ← (byte) ' ' [ bool_not::i#2 ] ( main:2::bool_not:9 [ bool_not::i#2 ] ) always clobbers reg byte a
|
||||
Statement [42] *((const byte*) bool_or::screen + (byte) bool_or::i#2) ← (byte) ' ' [ bool_or::i#2 ] ( main:2::bool_or:7 [ bool_or::i#2 ] ) always clobbers reg byte a
|
||||
Statement [36] *((const byte*) bool_not::screen + (byte) bool_not::i#2) ← (byte) ' ' [ bool_not::i#2 ] ( [ bool_not::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [42] *((const byte*) bool_or::screen + (byte) bool_or::i#2) ← (byte) ' ' [ bool_or::i#2 ] ( [ bool_or::i#2 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:4 [ bool_or::i#2 bool_or::i#1 ]
|
||||
Statement [46] *((const byte*) bool_or::screen + (byte) bool_or::i#2) ← (byte) '*' [ bool_or::i#2 ] ( main:2::bool_or:7 [ bool_or::i#2 ] ) always clobbers reg byte a
|
||||
Statement [52] *((const byte*) bool_and::screen + (byte) bool_and::i#2) ← (byte) ' ' [ bool_and::i#2 ] ( main:2::bool_and:5 [ bool_and::i#2 ] ) always clobbers reg byte a
|
||||
Statement [46] *((const byte*) bool_or::screen + (byte) bool_or::i#2) ← (byte) '*' [ bool_or::i#2 ] ( [ bool_or::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [52] *((const byte*) bool_and::screen + (byte) bool_and::i#2) ← (byte) ' ' [ bool_and::i#2 ] ( [ bool_and::i#2 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:5 [ bool_and::i#2 bool_and::i#1 ]
|
||||
Statement [56] *((const byte*) bool_and::screen + (byte) bool_and::i#2) ← (byte) '*' [ bool_and::i#2 ] ( main:2::bool_and:5 [ bool_and::i#2 ] ) always clobbers reg byte a
|
||||
Statement [15] (bool) bool_complex::o1#0 ← (byte) bool_complex::i#2 < (byte) $a [ bool_complex::i#2 bool_complex::o1#0 ] ( main:2::bool_complex:11 [ bool_complex::i#2 bool_complex::o1#0 ] ) always clobbers reg byte a
|
||||
Statement [16] (byte~) bool_complex::$1 ← (byte) bool_complex::i#2 & (byte) 1 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::$1 ] ( main:2::bool_complex:11 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::$1 ] ) always clobbers reg byte a
|
||||
Statement [17] (bool) bool_complex::o2#0 ← (byte~) bool_complex::$1 == (byte) 0 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::o2#0 ] ( main:2::bool_complex:11 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::o2#0 ] ) always clobbers reg byte a
|
||||
Statement [22] *((const byte*) bool_complex::screen + (byte) bool_complex::i#2) ← (byte) '*' [ bool_complex::i#2 ] ( main:2::bool_complex:11 [ bool_complex::i#2 ] ) always clobbers reg byte a
|
||||
Statement [26] *((const byte*) bool_complex::screen + (byte) bool_complex::i#2) ← (byte) ' ' [ bool_complex::i#2 ] ( main:2::bool_complex:11 [ bool_complex::i#2 ] ) always clobbers reg byte a
|
||||
Statement [29] (byte~) bool_not::$1 ← (byte) bool_not::i#2 & (byte) 1 [ bool_not::i#2 bool_not::$1 ] ( main:2::bool_not:9 [ bool_not::i#2 bool_not::$1 ] ) always clobbers reg byte a
|
||||
Statement [32] *((const byte*) bool_not::screen + (byte) bool_not::i#2) ← (byte) '*' [ bool_not::i#2 ] ( main:2::bool_not:9 [ bool_not::i#2 ] ) always clobbers reg byte a
|
||||
Statement [36] *((const byte*) bool_not::screen + (byte) bool_not::i#2) ← (byte) ' ' [ bool_not::i#2 ] ( main:2::bool_not:9 [ bool_not::i#2 ] ) always clobbers reg byte a
|
||||
Statement [39] (byte~) bool_or::$1 ← (byte) bool_or::i#2 & (byte) 1 [ bool_or::i#2 bool_or::$1 ] ( main:2::bool_or:7 [ bool_or::i#2 bool_or::$1 ] ) always clobbers reg byte a
|
||||
Statement [42] *((const byte*) bool_or::screen + (byte) bool_or::i#2) ← (byte) ' ' [ bool_or::i#2 ] ( main:2::bool_or:7 [ bool_or::i#2 ] ) always clobbers reg byte a
|
||||
Statement [46] *((const byte*) bool_or::screen + (byte) bool_or::i#2) ← (byte) '*' [ bool_or::i#2 ] ( main:2::bool_or:7 [ bool_or::i#2 ] ) always clobbers reg byte a
|
||||
Statement [49] (byte~) bool_and::$1 ← (byte) bool_and::i#2 & (byte) 1 [ bool_and::i#2 bool_and::$1 ] ( main:2::bool_and:5 [ bool_and::i#2 bool_and::$1 ] ) always clobbers reg byte a
|
||||
Statement [52] *((const byte*) bool_and::screen + (byte) bool_and::i#2) ← (byte) ' ' [ bool_and::i#2 ] ( main:2::bool_and:5 [ bool_and::i#2 ] ) always clobbers reg byte a
|
||||
Statement [56] *((const byte*) bool_and::screen + (byte) bool_and::i#2) ← (byte) '*' [ bool_and::i#2 ] ( main:2::bool_and:5 [ bool_and::i#2 ] ) always clobbers reg byte a
|
||||
Statement [56] *((const byte*) bool_and::screen + (byte) bool_and::i#2) ← (byte) '*' [ bool_and::i#2 ] ( [ bool_and::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [15] (bool) bool_complex::o1#0 ← (byte) bool_complex::i#2 < (byte) $a [ bool_complex::i#2 bool_complex::o1#0 ] ( [ bool_complex::i#2 bool_complex::o1#0 ] { } ) always clobbers reg byte a
|
||||
Statement [16] (byte~) bool_complex::$1 ← (byte) bool_complex::i#2 & (byte) 1 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::$1 ] ( [ bool_complex::i#2 bool_complex::o1#0 bool_complex::$1 ] { } ) always clobbers reg byte a
|
||||
Statement [17] (bool) bool_complex::o2#0 ← (byte~) bool_complex::$1 == (byte) 0 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::o2#0 ] ( [ bool_complex::i#2 bool_complex::o1#0 bool_complex::o2#0 ] { } ) always clobbers reg byte a
|
||||
Statement [22] *((const byte*) bool_complex::screen + (byte) bool_complex::i#2) ← (byte) '*' [ bool_complex::i#2 ] ( [ bool_complex::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [26] *((const byte*) bool_complex::screen + (byte) bool_complex::i#2) ← (byte) ' ' [ bool_complex::i#2 ] ( [ bool_complex::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [29] (byte~) bool_not::$1 ← (byte) bool_not::i#2 & (byte) 1 [ bool_not::i#2 bool_not::$1 ] ( [ bool_not::i#2 bool_not::$1 ] { } ) always clobbers reg byte a
|
||||
Statement [32] *((const byte*) bool_not::screen + (byte) bool_not::i#2) ← (byte) '*' [ bool_not::i#2 ] ( [ bool_not::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [36] *((const byte*) bool_not::screen + (byte) bool_not::i#2) ← (byte) ' ' [ bool_not::i#2 ] ( [ bool_not::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [39] (byte~) bool_or::$1 ← (byte) bool_or::i#2 & (byte) 1 [ bool_or::i#2 bool_or::$1 ] ( [ bool_or::i#2 bool_or::$1 ] { } ) always clobbers reg byte a
|
||||
Statement [42] *((const byte*) bool_or::screen + (byte) bool_or::i#2) ← (byte) ' ' [ bool_or::i#2 ] ( [ bool_or::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [46] *((const byte*) bool_or::screen + (byte) bool_or::i#2) ← (byte) '*' [ bool_or::i#2 ] ( [ bool_or::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [49] (byte~) bool_and::$1 ← (byte) bool_and::i#2 & (byte) 1 [ bool_and::i#2 bool_and::$1 ] ( [ bool_and::i#2 bool_and::$1 ] { } ) always clobbers reg byte a
|
||||
Statement [52] *((const byte*) bool_and::screen + (byte) bool_and::i#2) ← (byte) ' ' [ bool_and::i#2 ] ( [ bool_and::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [56] *((const byte*) bool_and::screen + (byte) bool_and::i#2) ← (byte) '*' [ bool_and::i#2 ] ( [ bool_and::i#2 ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ bool_complex::i#2 bool_complex::i#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ bool_not::i#2 bool_not::i#1 ] : zp[1]:3 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:4 [ bool_or::i#2 bool_or::i#1 ] : zp[1]:4 , reg byte x , reg byte y ,
|
||||
@ -1085,10 +1085,10 @@ Potential registers zp[1]:10 [ bool_or::$1 ] : zp[1]:10 , reg byte a , reg byte
|
||||
Potential registers zp[1]:11 [ bool_and::$1 ] : zp[1]:11 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [bool_complex] 23.1: zp[1]:2 [ bool_complex::i#2 bool_complex::i#1 ] 22: zp[1]:7 [ bool_complex::$1 ] 8.25: zp[1]:8 [ bool_complex::o2#0 ] 6.6: zp[1]:6 [ bool_complex::o1#0 ]
|
||||
Uplift Scope [bool_and] 27.5: zp[1]:5 [ bool_and::i#2 bool_and::i#1 ] 11: zp[1]:11 [ bool_and::$1 ]
|
||||
Uplift Scope [bool_or] 27.5: zp[1]:4 [ bool_or::i#2 bool_or::i#1 ] 11: zp[1]:10 [ bool_or::$1 ]
|
||||
Uplift Scope [bool_not] 27.5: zp[1]:3 [ bool_not::i#2 bool_not::i#1 ] 11: zp[1]:9 [ bool_not::$1 ]
|
||||
Uplift Scope [bool_complex] 2,102.1: zp[1]:2 [ bool_complex::i#2 bool_complex::i#1 ] 2,002: zp[1]:7 [ bool_complex::$1 ] 750.75: zp[1]:8 [ bool_complex::o2#0 ] 600.6: zp[1]:6 [ bool_complex::o1#0 ]
|
||||
Uplift Scope [bool_and] 2,502.5: zp[1]:5 [ bool_and::i#2 bool_and::i#1 ] 1,001: zp[1]:11 [ bool_and::$1 ]
|
||||
Uplift Scope [bool_or] 2,502.5: zp[1]:4 [ bool_or::i#2 bool_or::i#1 ] 1,001: zp[1]:10 [ bool_or::$1 ]
|
||||
Uplift Scope [bool_not] 2,502.5: zp[1]:3 [ bool_not::i#2 bool_not::i#1 ] 1,001: zp[1]:9 [ bool_not::$1 ]
|
||||
Uplift Scope [main]
|
||||
Uplift Scope []
|
||||
|
||||
@ -1482,7 +1482,7 @@ FINAL SYMBOL TABLE
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(void()) bool_and()
|
||||
(byte~) bool_and::$1 reg byte a 11.0
|
||||
(byte~) bool_and::$1 reg byte a 1001.0
|
||||
(label) bool_and::@1
|
||||
(label) bool_and::@2
|
||||
(label) bool_and::@3
|
||||
@ -1490,14 +1490,14 @@ FINAL SYMBOL TABLE
|
||||
(label) bool_and::@5
|
||||
(label) bool_and::@return
|
||||
(byte) bool_and::i
|
||||
(byte) bool_and::i#1 reg byte x 16.5
|
||||
(byte) bool_and::i#2 reg byte x 11.0
|
||||
(byte) bool_and::i#1 reg byte x 1501.5
|
||||
(byte) bool_and::i#2 reg byte x 1001.0000000000001
|
||||
(bool) bool_and::o1
|
||||
(bool) bool_and::o2
|
||||
(bool) bool_and::o3
|
||||
(const byte*) bool_and::screen = (byte*) 1024
|
||||
(void()) bool_complex()
|
||||
(byte~) bool_complex::$1 reg byte a 22.0
|
||||
(byte~) bool_complex::$1 reg byte a 2002.0
|
||||
(label) bool_complex::@1
|
||||
(label) bool_complex::@2
|
||||
(label) bool_complex::@3
|
||||
@ -1507,18 +1507,18 @@ FINAL SYMBOL TABLE
|
||||
(label) bool_complex::@7
|
||||
(label) bool_complex::@return
|
||||
(byte) bool_complex::i
|
||||
(byte) bool_complex::i#1 reg byte y 16.5
|
||||
(byte) bool_complex::i#2 reg byte y 6.6
|
||||
(byte) bool_complex::i#1 reg byte y 1501.5
|
||||
(byte) bool_complex::i#2 reg byte y 600.6
|
||||
(bool) bool_complex::o1
|
||||
(bool) bool_complex::o1#0 reg byte x 6.6000000000000005
|
||||
(bool) bool_complex::o1#0 reg byte x 600.5999999999999
|
||||
(bool) bool_complex::o2
|
||||
(bool) bool_complex::o2#0 reg byte a 8.25
|
||||
(bool) bool_complex::o2#0 reg byte a 750.75
|
||||
(bool) bool_complex::o3
|
||||
(bool) bool_complex::o4
|
||||
(bool) bool_complex::o5
|
||||
(const byte*) bool_complex::screen = (byte*) 1144
|
||||
(void()) bool_not()
|
||||
(byte~) bool_not::$1 reg byte a 11.0
|
||||
(byte~) bool_not::$1 reg byte a 1001.0
|
||||
(label) bool_not::@1
|
||||
(label) bool_not::@2
|
||||
(label) bool_not::@3
|
||||
@ -1526,14 +1526,14 @@ FINAL SYMBOL TABLE
|
||||
(label) bool_not::@5
|
||||
(label) bool_not::@return
|
||||
(byte) bool_not::i
|
||||
(byte) bool_not::i#1 reg byte x 16.5
|
||||
(byte) bool_not::i#2 reg byte x 11.0
|
||||
(byte) bool_not::i#1 reg byte x 1501.5
|
||||
(byte) bool_not::i#2 reg byte x 1001.0000000000001
|
||||
(bool) bool_not::o1
|
||||
(bool) bool_not::o2
|
||||
(bool) bool_not::o3
|
||||
(const byte*) bool_not::screen = (byte*) 1104
|
||||
(void()) bool_or()
|
||||
(byte~) bool_or::$1 reg byte a 11.0
|
||||
(byte~) bool_or::$1 reg byte a 1001.0
|
||||
(label) bool_or::@1
|
||||
(label) bool_or::@2
|
||||
(label) bool_or::@3
|
||||
@ -1541,8 +1541,8 @@ FINAL SYMBOL TABLE
|
||||
(label) bool_or::@5
|
||||
(label) bool_or::@return
|
||||
(byte) bool_or::i
|
||||
(byte) bool_or::i#1 reg byte x 16.5
|
||||
(byte) bool_or::i#2 reg byte x 11.0
|
||||
(byte) bool_or::i#1 reg byte x 1501.5
|
||||
(byte) bool_or::i#2 reg byte x 1001.0000000000001
|
||||
(bool) bool_or::o1
|
||||
(bool) bool_or::o2
|
||||
(bool) bool_or::o3
|
||||
|
@ -2,7 +2,7 @@
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(void()) bool_and()
|
||||
(byte~) bool_and::$1 reg byte a 11.0
|
||||
(byte~) bool_and::$1 reg byte a 1001.0
|
||||
(label) bool_and::@1
|
||||
(label) bool_and::@2
|
||||
(label) bool_and::@3
|
||||
@ -10,14 +10,14 @@
|
||||
(label) bool_and::@5
|
||||
(label) bool_and::@return
|
||||
(byte) bool_and::i
|
||||
(byte) bool_and::i#1 reg byte x 16.5
|
||||
(byte) bool_and::i#2 reg byte x 11.0
|
||||
(byte) bool_and::i#1 reg byte x 1501.5
|
||||
(byte) bool_and::i#2 reg byte x 1001.0000000000001
|
||||
(bool) bool_and::o1
|
||||
(bool) bool_and::o2
|
||||
(bool) bool_and::o3
|
||||
(const byte*) bool_and::screen = (byte*) 1024
|
||||
(void()) bool_complex()
|
||||
(byte~) bool_complex::$1 reg byte a 22.0
|
||||
(byte~) bool_complex::$1 reg byte a 2002.0
|
||||
(label) bool_complex::@1
|
||||
(label) bool_complex::@2
|
||||
(label) bool_complex::@3
|
||||
@ -27,18 +27,18 @@
|
||||
(label) bool_complex::@7
|
||||
(label) bool_complex::@return
|
||||
(byte) bool_complex::i
|
||||
(byte) bool_complex::i#1 reg byte y 16.5
|
||||
(byte) bool_complex::i#2 reg byte y 6.6
|
||||
(byte) bool_complex::i#1 reg byte y 1501.5
|
||||
(byte) bool_complex::i#2 reg byte y 600.6
|
||||
(bool) bool_complex::o1
|
||||
(bool) bool_complex::o1#0 reg byte x 6.6000000000000005
|
||||
(bool) bool_complex::o1#0 reg byte x 600.5999999999999
|
||||
(bool) bool_complex::o2
|
||||
(bool) bool_complex::o2#0 reg byte a 8.25
|
||||
(bool) bool_complex::o2#0 reg byte a 750.75
|
||||
(bool) bool_complex::o3
|
||||
(bool) bool_complex::o4
|
||||
(bool) bool_complex::o5
|
||||
(const byte*) bool_complex::screen = (byte*) 1144
|
||||
(void()) bool_not()
|
||||
(byte~) bool_not::$1 reg byte a 11.0
|
||||
(byte~) bool_not::$1 reg byte a 1001.0
|
||||
(label) bool_not::@1
|
||||
(label) bool_not::@2
|
||||
(label) bool_not::@3
|
||||
@ -46,14 +46,14 @@
|
||||
(label) bool_not::@5
|
||||
(label) bool_not::@return
|
||||
(byte) bool_not::i
|
||||
(byte) bool_not::i#1 reg byte x 16.5
|
||||
(byte) bool_not::i#2 reg byte x 11.0
|
||||
(byte) bool_not::i#1 reg byte x 1501.5
|
||||
(byte) bool_not::i#2 reg byte x 1001.0000000000001
|
||||
(bool) bool_not::o1
|
||||
(bool) bool_not::o2
|
||||
(bool) bool_not::o3
|
||||
(const byte*) bool_not::screen = (byte*) 1104
|
||||
(void()) bool_or()
|
||||
(byte~) bool_or::$1 reg byte a 11.0
|
||||
(byte~) bool_or::$1 reg byte a 1001.0
|
||||
(label) bool_or::@1
|
||||
(label) bool_or::@2
|
||||
(label) bool_or::@3
|
||||
@ -61,8 +61,8 @@
|
||||
(label) bool_or::@5
|
||||
(label) bool_or::@return
|
||||
(byte) bool_or::i
|
||||
(byte) bool_or::i#1 reg byte x 16.5
|
||||
(byte) bool_or::i#2 reg byte x 11.0
|
||||
(byte) bool_or::i#1 reg byte x 1501.5
|
||||
(byte) bool_or::i#2 reg byte x 1001.0000000000001
|
||||
(bool) bool_or::o1
|
||||
(bool) bool_or::o2
|
||||
(bool) bool_or::o3
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user