mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-04-13 03:39:12 +00:00
Fixed tests.
This commit is contained in:
parent
0b477d24ae
commit
b6b01ab232
@ -74,17 +74,17 @@ public class AsmFragmentTemplate {
|
||||
*/
|
||||
private void initAsm() {
|
||||
// Parse the body ASM
|
||||
this.bodyAsm = AsmParser.parseAsm(this.body, new StatementSource(signature+".asm", 1, this.body, 0, 0));
|
||||
this.bodyAsm = AsmParser.parseAsm(this.body, new StatementSource(signature + ".asm", 1, this.body, 0, 0));
|
||||
// Generate a dummy instance to find clobber & cycles
|
||||
ProgramScope scope = new ProgramScope();
|
||||
LinkedHashMap<String, Value> bindings = new LinkedHashMap<>();
|
||||
{
|
||||
Variable v1 = new Variable( "z1", scope, SymbolType.BYTE, Variable.Kind.PHI_VERSION, Variable.MemoryArea.ZEROPAGE_MEMORY, null);
|
||||
Variable v2 = new Variable( "z2", scope, SymbolType.BYTE, Variable.Kind.PHI_VERSION, Variable.MemoryArea.ZEROPAGE_MEMORY, null);
|
||||
Variable v3 = new Variable( "z3", scope, SymbolType.BYTE, Variable.Kind.PHI_VERSION, Variable.MemoryArea.ZEROPAGE_MEMORY, null);
|
||||
Variable v4 = new Variable( "z4", scope, SymbolType.BYTE, Variable.Kind.PHI_VERSION, Variable.MemoryArea.ZEROPAGE_MEMORY, null);
|
||||
Variable v5 = new Variable( "z5", scope, SymbolType.BYTE, Variable.Kind.PHI_VERSION, Variable.MemoryArea.ZEROPAGE_MEMORY, null);
|
||||
Variable v6 = new Variable( "z6", scope, SymbolType.BYTE, Variable.Kind.PHI_VERSION, Variable.MemoryArea.ZEROPAGE_MEMORY, null);
|
||||
Variable v1 = new Variable(false, "z1", scope, SymbolType.BYTE, Variable.Kind.PHI_VERSION, Variable.MemoryArea.ZEROPAGE_MEMORY, null);
|
||||
Variable v2 = new Variable(false, "z2", scope, SymbolType.BYTE, Variable.Kind.PHI_VERSION, Variable.MemoryArea.ZEROPAGE_MEMORY, null);
|
||||
Variable v3 = new Variable(false, "z3", scope, SymbolType.BYTE, Variable.Kind.PHI_VERSION, Variable.MemoryArea.ZEROPAGE_MEMORY, null);
|
||||
Variable v4 = new Variable(false, "z4", scope, SymbolType.BYTE, Variable.Kind.PHI_VERSION, Variable.MemoryArea.ZEROPAGE_MEMORY, null);
|
||||
Variable v5 = new Variable(false, "z5", scope, SymbolType.BYTE, Variable.Kind.PHI_VERSION, Variable.MemoryArea.ZEROPAGE_MEMORY, null);
|
||||
Variable v6 = new Variable(false, "z6", scope, SymbolType.BYTE, Variable.Kind.PHI_VERSION, Variable.MemoryArea.ZEROPAGE_MEMORY, null);
|
||||
v1.setAllocation(new Registers.RegisterZpMem(2, 1));
|
||||
v2.setAllocation(new Registers.RegisterZpMem(4, 1));
|
||||
v3.setAllocation(new Registers.RegisterZpMem(6, 1));
|
||||
@ -99,13 +99,13 @@ public class AsmFragmentTemplate {
|
||||
if(signature.contains("z6")) bindings.put("z6", v6);
|
||||
}
|
||||
{
|
||||
Variable v1 = new Variable( "m1", scope, SymbolType.BYTE, Variable.Kind.LOAD_STORE, Variable.MemoryArea.MAIN_MEMORY, null);
|
||||
Variable v2 = new Variable( "m2", scope, SymbolType.BYTE, Variable.Kind.LOAD_STORE, Variable.MemoryArea.MAIN_MEMORY, null);
|
||||
Variable v3 = new Variable( "m3", scope, SymbolType.BYTE, Variable.Kind.LOAD_STORE, Variable.MemoryArea.MAIN_MEMORY, null);
|
||||
Variable v4 = new Variable( "m4", scope, SymbolType.BYTE, Variable.Kind.LOAD_STORE, Variable.MemoryArea.MAIN_MEMORY, null);
|
||||
Variable v5 = new Variable( "m5", scope, SymbolType.BYTE, Variable.Kind.LOAD_STORE, Variable.MemoryArea.MAIN_MEMORY, null);
|
||||
Variable v6 = new Variable( "m6", scope, SymbolType.BYTE, Variable.Kind.LOAD_STORE, Variable.MemoryArea.MAIN_MEMORY, null);
|
||||
v1.setAllocation(new Registers.RegisterMainMem(v1.getVariableRef(), 1, null));
|
||||
Variable v1 = new Variable(false, "m1", scope, SymbolType.BYTE, Variable.Kind.LOAD_STORE, Variable.MemoryArea.MAIN_MEMORY, null);
|
||||
Variable v2 = new Variable(false, "m2", scope, SymbolType.BYTE, Variable.Kind.LOAD_STORE, Variable.MemoryArea.MAIN_MEMORY, null);
|
||||
Variable v3 = new Variable(false, "m3", scope, SymbolType.BYTE, Variable.Kind.LOAD_STORE, Variable.MemoryArea.MAIN_MEMORY, null);
|
||||
Variable v4 = new Variable(false, "m4", scope, SymbolType.BYTE, Variable.Kind.LOAD_STORE, Variable.MemoryArea.MAIN_MEMORY, null);
|
||||
Variable v5 = new Variable(false, "m5", scope, SymbolType.BYTE, Variable.Kind.LOAD_STORE, Variable.MemoryArea.MAIN_MEMORY, null);
|
||||
Variable v6 = new Variable(false, "m6", scope, SymbolType.BYTE, Variable.Kind.LOAD_STORE, Variable.MemoryArea.MAIN_MEMORY, null);
|
||||
v1.setAllocation(new Registers.RegisterMainMem(v1.getVariableRef(), 1, null));
|
||||
v2.setAllocation(new Registers.RegisterMainMem(v2.getVariableRef(), 1, null));
|
||||
v3.setAllocation(new Registers.RegisterMainMem(v3.getVariableRef(), 1, null));
|
||||
v4.setAllocation(new Registers.RegisterMainMem(v4.getVariableRef(), 1, null));
|
||||
|
@ -101,16 +101,16 @@ public abstract class Scope implements Symbol, Serializable {
|
||||
}
|
||||
|
||||
public Variable addVariable(Variable.Kind kind, String name, SymbolType type, Variable.MemoryArea memoryArea, String dataSegment) {
|
||||
return add(new Variable( name, this, type, kind, memoryArea, dataSegment));
|
||||
return add(new Variable( false, name, this, type, kind, memoryArea, dataSegment));
|
||||
}
|
||||
|
||||
public Variable addVariablePhiMaster(String name, SymbolType type, Variable.MemoryArea memoryArea, String dataSegment) {
|
||||
return add(new Variable( name, this, type, Variable.Kind.PHI_MASTER, memoryArea, dataSegment));
|
||||
return add(new Variable( false, name, this, type, Variable.Kind.PHI_MASTER, memoryArea, dataSegment));
|
||||
}
|
||||
|
||||
public Variable addVariableIntermediate() {
|
||||
String name = allocateIntermediateVariableName();
|
||||
return add(new Variable( name, this, SymbolType.VAR, Variable.Kind.INTERMEDIATE, Variable.MemoryArea.ZEROPAGE_MEMORY, getSegmentData()));
|
||||
return add(new Variable( false, name, this, SymbolType.VAR, Variable.Kind.INTERMEDIATE, Variable.MemoryArea.ZEROPAGE_MEMORY, getSegmentData()));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -12,6 +12,7 @@ import dk.camelot64.kickc.model.values.VariableRef;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/** A Variable symbol (can either be a runtime variable or a compile-time constant)*/
|
||||
public class Variable implements Symbol {
|
||||
@ -137,8 +138,8 @@ public class Variable implements Symbol {
|
||||
* @param memoryArea The memory area (zeropage/main memory)
|
||||
* @param dataSegment The data segment (in main memory)
|
||||
*/
|
||||
public Variable(String name, Scope scope, SymbolType type, Kind kind, MemoryArea memoryArea, String dataSegment) {
|
||||
this.isConstant = false;
|
||||
public Variable(boolean isConstant, String name, Scope scope, SymbolType type, Kind kind, MemoryArea memoryArea, String dataSegment) {
|
||||
this.isConstant = isConstant;
|
||||
this.name = name;
|
||||
this.scope = scope;
|
||||
this.type = type;
|
||||
@ -160,7 +161,7 @@ public class Variable implements Symbol {
|
||||
* @param version The version number
|
||||
*/
|
||||
public Variable(Variable phiMaster, int version) {
|
||||
this(phiMaster.getName() + "#" + version, phiMaster.getScope(), phiMaster.getType(), Kind.PHI_VERSION, phiMaster.getMemoryArea(), phiMaster.getDataSegment());
|
||||
this(false, phiMaster.getName() + "#" + version, phiMaster.getScope(), phiMaster.getType(), Kind.PHI_VERSION, phiMaster.getMemoryArea(), phiMaster.getDataSegment());
|
||||
this.setDeclaredAlignment(phiMaster.getDeclaredAlignment());
|
||||
this.setDeclaredAsRegister(phiMaster.isDeclaredAsRegister());
|
||||
this.setDeclaredNotRegister(phiMaster.isDeclaredAsNotRegister());
|
||||
@ -182,7 +183,7 @@ public class Variable implements Symbol {
|
||||
* @param original The original variable
|
||||
*/
|
||||
public Variable(String name, Scope scope, Variable original) {
|
||||
this(name, scope, original.getType(), original.getKind(), original.getMemoryArea(), original.getDataSegment());
|
||||
this(original.isConstant(), name, scope, original.getType(), original.getKind(), original.getMemoryArea(), original.getDataSegment());
|
||||
this.setDeclaredAlignment(original.getDeclaredAlignment());
|
||||
this.setDeclaredAsRegister(original.isDeclaredAsRegister());
|
||||
this.setDeclaredNotRegister(original.isDeclaredAsNotRegister());
|
||||
@ -194,6 +195,7 @@ public class Variable implements Symbol {
|
||||
this.setInferredVolatile(original.isInferredVolatile());
|
||||
this.setInferredType(original.isInferredType());
|
||||
this.setComments(original.getComments());
|
||||
this.setConstantValue(original.getConstantValue());
|
||||
}
|
||||
|
||||
public Kind getKind() {
|
||||
@ -497,33 +499,18 @@ public class Variable implements Symbol {
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if(this == o) {
|
||||
return true;
|
||||
}
|
||||
if(o == null || getClass() != o.getClass()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(this == o) return true;
|
||||
if(o == null || getClass() != o.getClass()) return false;
|
||||
Variable variable = (Variable) o;
|
||||
if(name != null ? !name.equals(variable.name) : variable.name != null) {
|
||||
return false;
|
||||
}
|
||||
if(scope != null ? !scope.equals(variable.scope) : variable.scope != null) {
|
||||
return false;
|
||||
}
|
||||
if(type != null ? !type.equals(variable.type) : variable.type != null) {
|
||||
return false;
|
||||
}
|
||||
return asmName != null ? asmName.equals(variable.asmName) : variable.asmName == null;
|
||||
return kind == variable.kind &&
|
||||
Objects.equals(name, variable.name) &&
|
||||
Objects.equals(scope, variable.scope) &&
|
||||
Objects.equals(type, variable.type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int result = name != null ? name.hashCode() : 0;
|
||||
result = 31 * result + (scope != null ? scope.hashCode() : 0);
|
||||
result = 31 * result + (type != null ? type.hashCode() : 0);
|
||||
result = 31 * result + (asmName != null ? asmName.hashCode() : 0);
|
||||
return result;
|
||||
return Objects.hash(kind, name, scope, type);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -5,6 +5,8 @@ import dk.camelot64.kickc.model.Program;
|
||||
import dk.camelot64.kickc.model.symbols.ProgramScope;
|
||||
import dk.camelot64.kickc.model.types.SymbolType;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
/** Constant integer value */
|
||||
public class ConstantInteger implements ConstantEnumerable<Long> {
|
||||
|
||||
@ -67,7 +69,7 @@ public class ConstantInteger implements ConstantEnumerable<Long> {
|
||||
if(this == o) return true;
|
||||
if(o == null || getClass() != o.getClass()) return false;
|
||||
ConstantInteger that = (ConstantInteger) o;
|
||||
return number != null ? number.equals(that.number) : that.number == null;
|
||||
return Objects.equals(number, that.number);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -4,6 +4,7 @@ import dk.camelot64.kickc.NumberParser;
|
||||
import dk.camelot64.kickc.SourceLoader;
|
||||
import dk.camelot64.kickc.asm.AsmClobber;
|
||||
import dk.camelot64.kickc.model.*;
|
||||
import dk.camelot64.kickc.model.InternalError;
|
||||
import dk.camelot64.kickc.model.operators.*;
|
||||
import dk.camelot64.kickc.model.statements.*;
|
||||
import dk.camelot64.kickc.model.symbols.*;
|
||||
@ -266,7 +267,7 @@ public class Pass0GenerateStatementSequence extends KickCParserBaseVisitor<Objec
|
||||
this.visitDeclTypes(ctx.declTypes());
|
||||
SymbolType type = declVarType;
|
||||
List<Directive> directives = declVarDirectives;
|
||||
Variable param = new Variable(ctx.NAME().getText(), getCurrentScope(), type, Variable.Kind.PHI_MASTER, defaultMemoryArea, currentDataSegment);
|
||||
Variable param = new Variable(false, ctx.NAME().getText(), getCurrentScope(), type, Variable.Kind.PHI_MASTER, defaultMemoryArea, currentDataSegment);
|
||||
// Add directives
|
||||
directiveContext.applyDirectives(param, true, directives, new StatementSource(ctx));
|
||||
exitDeclTypes();
|
||||
@ -561,8 +562,13 @@ public class Pass0GenerateStatementSequence extends KickCParserBaseVisitor<Objec
|
||||
SymbolType type = declVarType;
|
||||
List<Comment> comments = declVarComments;
|
||||
KickCParser.ExprContext initializer = ctx.expr();
|
||||
if(declVarStructMember && initializer != null)
|
||||
throw new CompileError("Initializers not supported inside structs " + type.getTypeName(), new StatementSource(ctx));
|
||||
if(declVarStructMember) {
|
||||
if(initializer != null)
|
||||
throw new CompileError("Initializers not supported inside structs " + type.getTypeName(), new StatementSource(ctx));
|
||||
else
|
||||
// No initializer statements for struct members
|
||||
return null;
|
||||
}
|
||||
if(initializer != null) {
|
||||
addInitialAssignment(initializer, lValue, comments, new StatementSource(ctx));
|
||||
} else {
|
||||
@ -1397,6 +1403,15 @@ public class Pass0GenerateStatementSequence extends KickCParserBaseVisitor<Objec
|
||||
private void addInitialAssignment(KickCParser.ExprContext initializer, Variable lValue, List<Comment> comments, StatementSource statementSource) {
|
||||
PrePostModifierHandler.addPreModifiers(this, initializer, statementSource);
|
||||
RValue rValue = (RValue) visit(initializer);
|
||||
if(lValue.isDeclaredConst() && rValue instanceof ForwardVariableRef) {
|
||||
throw new CompileError("Variable used before being defined " + rValue.toString(), statementSource);
|
||||
}
|
||||
/*
|
||||
if(lValue.isDeclaredConst() && !(rValue instanceof ConstantValue)) {
|
||||
throw new InternalError("RValue is not constant!");
|
||||
}
|
||||
*/
|
||||
|
||||
if(lValue.isDeclaredConst() && rValue instanceof ConstantValue) {
|
||||
Scope scope = lValue.getScope();
|
||||
ConstantValue constantValue = (ConstantValue) rValue;
|
||||
@ -1674,6 +1689,9 @@ public class Pass0GenerateStatementSequence extends KickCParserBaseVisitor<Objec
|
||||
@Override
|
||||
public Object visitExprAssignment(KickCParser.ExprAssignmentContext ctx) {
|
||||
Object val = visit(ctx.expr(0));
|
||||
if(val instanceof ConstantRef) {
|
||||
throw new CompileError("Error! Constants can not be modified " + val.toString(), new StatementSource(ctx));
|
||||
}
|
||||
if(!(val instanceof LValue)) {
|
||||
throw new CompileError("Error! Illegal assignment Lvalue " + val.toString(), new StatementSource(ctx));
|
||||
}
|
||||
@ -2198,6 +2216,9 @@ public class Pass0GenerateStatementSequence extends KickCParserBaseVisitor<Objec
|
||||
List<PrePostModifier> modifiers,
|
||||
StatementSource source) {
|
||||
for(PrePostModifier mod : modifiers) {
|
||||
if(mod.child instanceof ConstantRef) {
|
||||
throw new CompileError("Constants can not be modified "+mod.child.toString(), source);
|
||||
}
|
||||
Statement stmt = new StatementAssignment((LValue) mod.child, mod.operator, copyLValue((LValue) mod.child), source, Comment.NO_COMMENTS);
|
||||
parser.sequence.addStatement(stmt);
|
||||
parser.consumeExpr(mod.child);
|
||||
|
@ -1,5 +1,7 @@
|
||||
package dk.camelot64.kickc.passes;
|
||||
|
||||
import dk.camelot64.kickc.model.CompileError;
|
||||
import dk.camelot64.kickc.model.ConstantNotLiteral;
|
||||
import dk.camelot64.kickc.model.ControlFlowBlock;
|
||||
import dk.camelot64.kickc.model.Program;
|
||||
import dk.camelot64.kickc.model.iterator.ProgramValueIterator;
|
||||
@ -9,7 +11,12 @@ import dk.camelot64.kickc.model.statements.StatementAssignment;
|
||||
import dk.camelot64.kickc.model.statements.StatementLValue;
|
||||
import dk.camelot64.kickc.model.symbols.Procedure;
|
||||
import dk.camelot64.kickc.model.symbols.Scope;
|
||||
import dk.camelot64.kickc.model.symbols.StructDefinition;
|
||||
import dk.camelot64.kickc.model.symbols.Variable;
|
||||
import dk.camelot64.kickc.model.types.SymbolType;
|
||||
import dk.camelot64.kickc.model.types.SymbolTypeConversion;
|
||||
import dk.camelot64.kickc.model.types.SymbolTypeInference;
|
||||
import dk.camelot64.kickc.model.types.SymbolTypeIntegerFixed;
|
||||
import dk.camelot64.kickc.model.values.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@ -35,6 +42,9 @@ public class Pass1EarlyConstantIdentification extends Pass1Base {
|
||||
if(variable.isDeclaredNotConst())
|
||||
// Skip explicit non-constants
|
||||
continue;
|
||||
if(variable.getScope() instanceof StructDefinition)
|
||||
// Skip structs
|
||||
continue;
|
||||
if(!isParameter(variableRef)) {
|
||||
Collection<StatementLValue> assignments = getAssignments(variable);
|
||||
if(assignments.size() == 1) {
|
||||
@ -78,7 +88,40 @@ public class Pass1EarlyConstantIdentification extends Pass1Base {
|
||||
* @param constantValue The constant value
|
||||
* @param aliases Aliases where the map from var to const is added
|
||||
*/
|
||||
private void convertToConst(Variable variable, ConstantValue constantValue, Statement assignemnt, HashMap<SymbolRef, RValue> aliases) {
|
||||
private void convertToConst(Variable variable, ConstantValue constantValue, Statement assignment, HashMap<SymbolRef, RValue> aliases) {
|
||||
// Perform type checking
|
||||
SymbolType valueType = SymbolTypeInference.inferType(getScope(), constantValue);
|
||||
SymbolType variableType = variable.getType();
|
||||
|
||||
if(!SymbolTypeConversion.assignmentTypeMatch(variableType, valueType) || SymbolType.NUMBER.equals(valueType)) {
|
||||
boolean typeOk = false;
|
||||
ConstantLiteral constantLiteral = null;
|
||||
try {
|
||||
constantLiteral = constantValue.calculateLiteral(getScope());
|
||||
} catch(ConstantNotLiteral e) {
|
||||
// ignore
|
||||
}
|
||||
String literalStr = (constantLiteral == null) ? "null" : constantLiteral.toString(getProgram());
|
||||
if(SymbolType.NUMBER.equals(valueType)) {
|
||||
if(variableType instanceof SymbolTypeIntegerFixed && constantLiteral instanceof ConstantInteger) {
|
||||
SymbolTypeIntegerFixed variableTypeInt = (SymbolTypeIntegerFixed) variableType;
|
||||
ConstantInteger valueInt = (ConstantInteger) constantLiteral;
|
||||
if(variableTypeInt.contains(valueInt.getInteger())) {
|
||||
constantValue = new ConstantInteger(valueInt.getInteger(), variableType);
|
||||
typeOk = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!typeOk) {
|
||||
throw new CompileError(
|
||||
"Constant variable has a non-matching type \n variable: " + variable.toString(getProgram()) +
|
||||
"\n value: (" + valueType.toString() + ") " + literalStr +
|
||||
"\n value definition: " + constantValue.toString(getProgram())
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Convert to constant
|
||||
SymbolVariableRef variableRef = variable.getRef();
|
||||
Scope scope = variable.getScope();
|
||||
scope.remove(variable);
|
||||
@ -94,7 +137,7 @@ public class Pass1EarlyConstantIdentification extends Pass1Base {
|
||||
constVar.setInferredVolatile(variable.isInferredVolatile());
|
||||
constVar.setInferredType(variable.isInferredType());
|
||||
constVar.setComments(variable.getComments());
|
||||
constVar.getComments().addAll(assignemnt.getComments());
|
||||
constVar.getComments().addAll(assignment.getComments());
|
||||
SymbolVariableRef constRef = constVar.getRef();
|
||||
aliases.put(variableRef, constRef);
|
||||
scope.add(constVar);
|
||||
|
@ -4,10 +4,7 @@ import dk.camelot64.kickc.model.CompileError;
|
||||
import dk.camelot64.kickc.model.Program;
|
||||
import dk.camelot64.kickc.model.iterator.ProgramValueIterator;
|
||||
import dk.camelot64.kickc.model.symbols.*;
|
||||
import dk.camelot64.kickc.model.values.LabelRef;
|
||||
import dk.camelot64.kickc.model.values.SymbolRef;
|
||||
import dk.camelot64.kickc.model.values.Value;
|
||||
import dk.camelot64.kickc.model.values.VariableRef;
|
||||
import dk.camelot64.kickc.model.values.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
@ -36,7 +33,7 @@ public class Pass1UnwindBlockScopes extends Pass1Base {
|
||||
|
||||
ProgramValueIterator.execute(getGraph(), (programValue, currentStmt, stmtIt, currentBlock) -> {
|
||||
Value value = programValue.get();
|
||||
if(value instanceof VariableRef) {
|
||||
if(value instanceof SymbolVariableRef) {
|
||||
SymbolRef unwound = unwoundSymbols.get(value);
|
||||
if(unwound != null) {
|
||||
programValue.set(unwound);
|
||||
@ -73,7 +70,12 @@ public class Pass1UnwindBlockScopes extends Pass1Base {
|
||||
}
|
||||
} else if(symbol instanceof Variable) {
|
||||
Variable variable = (Variable) symbol;
|
||||
if(variable.isKindPhiMaster() || variable.isKindConstant()) {
|
||||
if(variable.isConstant()) {
|
||||
String name = findLocalName(procedure, symbol);
|
||||
Variable unwound = new Variable(name, procedure, (Variable) symbol);
|
||||
procedure.add(unwound);
|
||||
unwoundSymbols.put(symbol.getRef(), unwound.getRef());
|
||||
} else if(variable.isKindPhiMaster() || variable.isKindConstant()) {
|
||||
String name = findLocalName(procedure, symbol);
|
||||
Variable unwound = new Variable(name, procedure, (Variable) symbol);
|
||||
procedure.add(unwound);
|
||||
|
@ -212,7 +212,7 @@ public class Pass1UnwindStructValues extends Pass1Base {
|
||||
for(Variable member : structDefinition.getAllVariables(false)) {
|
||||
String name = variable.getLocalName() + "_" + member.getLocalName();
|
||||
Variable.MemoryArea memoryArea = (member.getType() instanceof SymbolTypePointer)?Variable.MemoryArea.ZEROPAGE_MEMORY:variable.getMemoryArea();
|
||||
Variable memberVariable = scope.add(new Variable(name, scope, member.getType(), variable.getKind(), memoryArea, variable.getDataSegment()));
|
||||
Variable memberVariable = scope.add(new Variable( false, name, scope, member.getType(), variable.getKind(), memoryArea, variable.getDataSegment()));
|
||||
memberVariable.setDeclaredVolatile(variable.isDeclaredVolatile());
|
||||
memberVariable.setInferredVolatile(variable.isInferredVolatile());
|
||||
memberVariable.setDeclaredConst(variable.isDeclaredConst());
|
||||
|
@ -79,7 +79,7 @@ public class PassNAddInitializerValueListTypeCasts extends Pass2SsaOptimization
|
||||
if(size!=valueList.getList().size()) {
|
||||
throw new CompileError(
|
||||
"Struct initializer has wrong size ("+valueList.getList().size()+"), " +
|
||||
"which does not match the number of members in "+declaredStructType.getTypeName()+" (\"+size+\" members).\n" +
|
||||
"which does not match the number of members in "+declaredStructType.getTypeName()+" ("+size+" members).\n" +
|
||||
" Struct initializer: "+valueList.toString(getProgram()),
|
||||
currentStmt);
|
||||
}
|
||||
|
@ -34,7 +34,7 @@ SYMBOL TABLE SSA
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte) SZ = (number) $f
|
||||
(const byte) SZ = (byte) $f
|
||||
(byte[SZ]) items
|
||||
(void()) main()
|
||||
(bool~) main::$0
|
||||
@ -288,7 +288,7 @@ FINAL SYMBOL TABLE
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte) SZ = (number) $f
|
||||
(const byte) SZ = (byte) $f
|
||||
(const byte[SZ]) items = { fill( SZ, 0) }
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
|
@ -1,7 +1,7 @@
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte) SZ = (number) $f
|
||||
(const byte) SZ = (byte) $f
|
||||
(const byte[SZ]) items = { fill( SZ, 0) }
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
|
@ -55,8 +55,8 @@ SYMBOL TABLE SSA
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte) ITEM_COUNT = (number) 3
|
||||
(const byte) ITEM_SIZE = (number) 5
|
||||
(const byte) ITEM_COUNT = (byte) 3
|
||||
(const byte) ITEM_SIZE = (byte) 5
|
||||
(byte[$0]) items
|
||||
(void()) main()
|
||||
(number~) main::$0
|
||||
@ -538,8 +538,8 @@ FINAL SYMBOL TABLE
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte) ITEM_COUNT = (number) 3
|
||||
(const byte) ITEM_SIZE = (number) 5
|
||||
(const byte) ITEM_COUNT = (byte) 3
|
||||
(const byte) ITEM_SIZE = (byte) 5
|
||||
(const byte[ITEM_COUNT*ITEM_SIZE]) items = { (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::$2 reg byte a 202.0
|
||||
|
@ -1,8 +1,8 @@
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte) ITEM_COUNT = (number) 3
|
||||
(const byte) ITEM_SIZE = (number) 5
|
||||
(const byte) ITEM_COUNT = (byte) 3
|
||||
(const byte) ITEM_SIZE = (byte) 5
|
||||
(const byte[ITEM_COUNT*ITEM_SIZE]) items = { (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::$2 reg byte a 202.0
|
||||
|
@ -47,7 +47,7 @@ SYMBOL TABLE SSA
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
(const byte) main::jmp = (number) 1
|
||||
(const byte) main::jmp = (byte) 1
|
||||
|
||||
Adding number conversion cast (unumber) 1 in *((const byte*) lda + (number) 1) ← (byte) bne::jsr#1
|
||||
Successful SSA optimization PassNAddNumberTypeConversions
|
||||
@ -292,7 +292,7 @@ FINAL SYMBOL TABLE
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
(const byte) main::jmp = (number) 1
|
||||
(const byte) main::jmp = (byte) 1
|
||||
|
||||
|
||||
|
||||
|
@ -8,5 +8,5 @@
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
(const byte) main::jmp = (number) 1
|
||||
(const byte) main::jmp = (byte) 1
|
||||
|
||||
|
@ -165,8 +165,8 @@ SYMBOL TABLE SSA
|
||||
(label) @3
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte) GREEN = (number) 5
|
||||
(const byte) RED = (number) 2
|
||||
(const byte) GREEN = (byte) 5
|
||||
(const byte) RED = (byte) 2
|
||||
(const byte*) cols = (byte*)(number) $d800
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
@ -1281,8 +1281,8 @@ FINAL SYMBOL TABLE
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte) GREEN = (number) 5
|
||||
(const byte) RED = (number) 2
|
||||
(const byte) GREEN = (byte) 5
|
||||
(const byte) RED = (byte) 2
|
||||
(const byte*) cols = (byte*) 55296
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
|
@ -1,8 +1,8 @@
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte) GREEN = (number) 5
|
||||
(const byte) RED = (number) 2
|
||||
(const byte) GREEN = (byte) 5
|
||||
(const byte) RED = (byte) 2
|
||||
(const byte*) cols = (byte*) 55296
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
|
@ -241,13 +241,13 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(const byte*) BGCOL = (byte*)(number) $d020
|
||||
(const byte*) BITMAP = (byte*)(number) $2000
|
||||
(const byte) BMM = (number) $20
|
||||
(const byte) BMM = (byte) $20
|
||||
(const byte*) D011 = (byte*)(number) $d011
|
||||
(const byte*) D018 = (byte*)(number) $d018
|
||||
(const byte) DEN = (number) $10
|
||||
(const byte) DEN = (byte) $10
|
||||
(const byte*) FGCOL = (byte*)(number) $d021
|
||||
(const byte*) RASTER = (byte*)(number) $d012
|
||||
(const byte) RSEL = (number) 8
|
||||
(const byte) RSEL = (byte) 8
|
||||
(const byte*) SCREEN = (byte*)(number) $400
|
||||
(void()) init_plot_tables()
|
||||
(number~) init_plot_tables::$0
|
||||
@ -374,7 +374,7 @@ SYMBOL TABLE SSA
|
||||
(byte) plots::i#2
|
||||
(byte) plots::i#3
|
||||
(byte) plots::i#4
|
||||
(const byte) plots_cnt = (number) 8
|
||||
(const byte) plots_cnt = (byte) 8
|
||||
(byte[]) plots_x
|
||||
(byte[]) plots_y
|
||||
|
||||
@ -1976,13 +1976,13 @@ FINAL SYMBOL TABLE
|
||||
(label) @end
|
||||
(const byte*) BGCOL = (byte*) 53280
|
||||
(const byte*) BITMAP = (byte*) 8192
|
||||
(const byte) BMM = (number) $20
|
||||
(const byte) BMM = (byte) $20
|
||||
(const byte*) D011 = (byte*) 53265
|
||||
(const byte*) D018 = (byte*) 53272
|
||||
(const byte) DEN = (number) $10
|
||||
(const byte) DEN = (byte) $10
|
||||
(const byte*) FGCOL = (byte*) 53281
|
||||
(const byte*) RASTER = (byte*) 53266
|
||||
(const byte) RSEL = (number) 8
|
||||
(const byte) RSEL = (byte) 8
|
||||
(const byte*) SCREEN = (byte*) 1024
|
||||
(void()) init_plot_tables()
|
||||
(byte~) init_plot_tables::$0 reg byte a 22.0
|
||||
@ -2060,7 +2060,7 @@ FINAL SYMBOL TABLE
|
||||
(byte) plots::i
|
||||
(byte) plots::i#1 reg byte x 202.0
|
||||
(byte) plots::i#2 reg byte x 101.0
|
||||
(const byte) plots_cnt = (number) 8
|
||||
(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 }
|
||||
|
||||
|
@ -3,13 +3,13 @@
|
||||
(label) @end
|
||||
(const byte*) BGCOL = (byte*) 53280
|
||||
(const byte*) BITMAP = (byte*) 8192
|
||||
(const byte) BMM = (number) $20
|
||||
(const byte) BMM = (byte) $20
|
||||
(const byte*) D011 = (byte*) 53265
|
||||
(const byte*) D018 = (byte*) 53272
|
||||
(const byte) DEN = (number) $10
|
||||
(const byte) DEN = (byte) $10
|
||||
(const byte*) FGCOL = (byte*) 53281
|
||||
(const byte*) RASTER = (byte*) 53266
|
||||
(const byte) RSEL = (number) 8
|
||||
(const byte) RSEL = (byte) 8
|
||||
(const byte*) SCREEN = (byte*) 1024
|
||||
(void()) init_plot_tables()
|
||||
(byte~) init_plot_tables::$0 reg byte a 22.0
|
||||
@ -87,7 +87,7 @@
|
||||
(byte) plots::i
|
||||
(byte) plots::i#1 reg byte x 202.0
|
||||
(byte) plots::i#2 reg byte x 101.0
|
||||
(const byte) plots_cnt = (number) 8
|
||||
(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 }
|
||||
|
||||
|
@ -123,7 +123,7 @@ SYMBOL TABLE SSA
|
||||
(label) bool_const_inline::@1
|
||||
(label) bool_const_inline::@3
|
||||
(label) bool_const_inline::@return
|
||||
(const byte) bool_const_inline::a = (number) $17
|
||||
(const byte) bool_const_inline::a = (byte) $17
|
||||
(void()) bool_const_vars()
|
||||
(bool~) bool_const_vars::$0
|
||||
(bool~) bool_const_vars::$1
|
||||
@ -138,7 +138,7 @@ SYMBOL TABLE SSA
|
||||
(label) bool_const_vars::@1
|
||||
(label) bool_const_vars::@3
|
||||
(label) bool_const_vars::@return
|
||||
(const byte) bool_const_vars::a = (number) $e
|
||||
(const byte) bool_const_vars::a = (byte) $e
|
||||
(bool) bool_const_vars::b
|
||||
(bool) bool_const_vars::b#0
|
||||
(bool) bool_const_vars::b1
|
||||
|
@ -83,7 +83,7 @@ SYMBOL TABLE SSA
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte[$28*$19]) SCREEN = (byte[$28*$19])(number) $400
|
||||
(const byte) STAR = (number) $51
|
||||
(const byte) STAR = (byte) $51
|
||||
(void()) main()
|
||||
(byte~) main::$0
|
||||
(byte~) main::$1
|
||||
@ -125,8 +125,8 @@ SYMBOL TABLE SSA
|
||||
(byte) main::x#2
|
||||
(byte) main::x#3
|
||||
(byte) main::x#4
|
||||
(const byte) main::x0 = (number) 4
|
||||
(const byte) main::x1 = (number) $27
|
||||
(const byte) main::x0 = (byte) 4
|
||||
(const byte) main::x1 = (byte) $27
|
||||
(byte) main::xd
|
||||
(byte) main::xd#0
|
||||
(byte) main::xd#1
|
||||
@ -138,8 +138,8 @@ SYMBOL TABLE SSA
|
||||
(byte) main::y#2
|
||||
(byte) main::y#3
|
||||
(byte) main::y#4
|
||||
(const byte) main::y0 = (number) 4
|
||||
(const byte) main::y1 = (number) $18
|
||||
(const byte) main::y0 = (byte) 4
|
||||
(const byte) main::y1 = (byte) $18
|
||||
(byte) main::yd
|
||||
(byte) main::yd#0
|
||||
(byte) main::yd#1
|
||||
@ -661,7 +661,7 @@ FINAL SYMBOL TABLE
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte[$28*$19]) SCREEN = (byte*) 1024
|
||||
(const byte) STAR = (number) $51
|
||||
(const byte) STAR = (byte) $51
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
@ -680,16 +680,16 @@ FINAL SYMBOL TABLE
|
||||
(byte) main::x
|
||||
(byte) main::x#1 x zp[1]:4 3.666666666666667
|
||||
(byte) main::x#2 x zp[1]:4 11.0
|
||||
(const byte) main::x0 = (number) 4
|
||||
(const byte) main::x1 = (number) $27
|
||||
(const byte) main::x0 = (byte) 4
|
||||
(const byte) main::x1 = (byte) $27
|
||||
(byte) main::xd
|
||||
(const byte) main::xd#0 xd = (const byte) main::x1-(const byte) main::x0
|
||||
(byte) main::y
|
||||
(byte) main::y#1 y zp[1]:5 7.333333333333333
|
||||
(byte) main::y#2 y zp[1]:5 5.5
|
||||
(byte) main::y#4 y zp[1]:5 16.5
|
||||
(const byte) main::y0 = (number) 4
|
||||
(const byte) main::y1 = (number) $18
|
||||
(const byte) main::y0 = (byte) 4
|
||||
(const byte) main::y1 = (byte) $18
|
||||
(byte) main::yd
|
||||
(const byte) main::yd#0 yd = (const byte) main::y1-(const byte) main::y0
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte[$28*$19]) SCREEN = (byte*) 1024
|
||||
(const byte) STAR = (number) $51
|
||||
(const byte) STAR = (byte) $51
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
@ -21,16 +21,16 @@
|
||||
(byte) main::x
|
||||
(byte) main::x#1 x zp[1]:4 3.666666666666667
|
||||
(byte) main::x#2 x zp[1]:4 11.0
|
||||
(const byte) main::x0 = (number) 4
|
||||
(const byte) main::x1 = (number) $27
|
||||
(const byte) main::x0 = (byte) 4
|
||||
(const byte) main::x1 = (byte) $27
|
||||
(byte) main::xd
|
||||
(const byte) main::xd#0 xd = (const byte) main::x1-(const byte) main::x0
|
||||
(byte) main::y
|
||||
(byte) main::y#1 y zp[1]:5 7.333333333333333
|
||||
(byte) main::y#2 y zp[1]:5 5.5
|
||||
(byte) main::y#4 y zp[1]:5 16.5
|
||||
(const byte) main::y0 = (number) 4
|
||||
(const byte) main::y1 = (number) $18
|
||||
(const byte) main::y0 = (byte) 4
|
||||
(const byte) main::y1 = (byte) $18
|
||||
(byte) main::yd
|
||||
(const byte) main::yd#0 yd = (const byte) main::y1-(const byte) main::y0
|
||||
|
||||
|
@ -101,7 +101,7 @@ SYMBOL TABLE SSA
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@return
|
||||
(const byte) main::STAR = (number) $51
|
||||
(const byte) main::STAR = (byte) $51
|
||||
(byte) main::e
|
||||
(byte) main::e#0
|
||||
(byte) main::e#1
|
||||
@ -123,8 +123,8 @@ SYMBOL TABLE SSA
|
||||
(byte) main::x#2
|
||||
(byte) main::x#3
|
||||
(byte) main::x#4
|
||||
(const byte) main::x0 = (number) 0
|
||||
(const byte) main::x1 = (number) $27
|
||||
(const byte) main::x0 = (byte) 0
|
||||
(const byte) main::x1 = (byte) $27
|
||||
(byte) main::xd
|
||||
(byte) main::xd#0
|
||||
(byte) main::xd#1
|
||||
@ -136,8 +136,8 @@ SYMBOL TABLE SSA
|
||||
(byte) main::y#2
|
||||
(byte) main::y#3
|
||||
(byte) main::y#4
|
||||
(const byte) main::y0 = (number) 0
|
||||
(const byte) main::y1 = (number) $18
|
||||
(const byte) main::y0 = (byte) 0
|
||||
(const byte) main::y1 = (byte) $18
|
||||
(byte) main::yd
|
||||
(byte) main::yd#0
|
||||
(byte) main::yd#1
|
||||
@ -699,7 +699,7 @@ FINAL SYMBOL TABLE
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@return
|
||||
(const byte) main::STAR = (number) $51
|
||||
(const byte) main::STAR = (byte) $51
|
||||
(byte) main::e
|
||||
(byte) main::e#1 reg byte x 11.0
|
||||
(byte) main::e#2 reg byte x 22.0
|
||||
@ -714,15 +714,15 @@ FINAL SYMBOL TABLE
|
||||
(byte) main::x
|
||||
(byte) main::x#1 x zp[1]:4 3.666666666666667
|
||||
(byte) main::x#2 x zp[1]:4 7.333333333333333
|
||||
(const byte) main::x0 = (number) 0
|
||||
(const byte) main::x1 = (number) $27
|
||||
(const byte) main::x0 = (byte) 0
|
||||
(const byte) main::x1 = (byte) $27
|
||||
(byte) main::xd
|
||||
(byte) main::y
|
||||
(byte) main::y#1 y zp[1]:5 7.333333333333333
|
||||
(byte) main::y#2 y zp[1]:5 4.714285714285714
|
||||
(byte) main::y#4 y zp[1]:5 16.5
|
||||
(const byte) main::y0 = (number) 0
|
||||
(const byte) main::y1 = (number) $18
|
||||
(const byte) main::y0 = (byte) 0
|
||||
(const byte) main::y1 = (byte) $18
|
||||
(byte) main::yd
|
||||
|
||||
zp[2]:2 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ]
|
||||
|
@ -7,7 +7,7 @@
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@return
|
||||
(const byte) main::STAR = (number) $51
|
||||
(const byte) main::STAR = (byte) $51
|
||||
(byte) main::e
|
||||
(byte) main::e#1 reg byte x 11.0
|
||||
(byte) main::e#2 reg byte x 22.0
|
||||
@ -22,15 +22,15 @@
|
||||
(byte) main::x
|
||||
(byte) main::x#1 x zp[1]:4 3.666666666666667
|
||||
(byte) main::x#2 x zp[1]:4 7.333333333333333
|
||||
(const byte) main::x0 = (number) 0
|
||||
(const byte) main::x1 = (number) $27
|
||||
(const byte) main::x0 = (byte) 0
|
||||
(const byte) main::x1 = (byte) $27
|
||||
(byte) main::xd
|
||||
(byte) main::y
|
||||
(byte) main::y#1 y zp[1]:5 7.333333333333333
|
||||
(byte) main::y#2 y zp[1]:5 4.714285714285714
|
||||
(byte) main::y#4 y zp[1]:5 16.5
|
||||
(const byte) main::y0 = (number) 0
|
||||
(const byte) main::y1 = (number) $18
|
||||
(const byte) main::y0 = (byte) 0
|
||||
(const byte) main::y1 = (byte) $18
|
||||
(byte) main::yd
|
||||
|
||||
zp[2]:2 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ]
|
||||
|
@ -1196,10 +1196,10 @@ SYMBOL TABLE SSA
|
||||
(label) testChar::@6
|
||||
(label) testChar::@7
|
||||
(label) testChar::@return
|
||||
(const byte) testChar::n = (number) $e
|
||||
(const signed byte) testChar::s = (number) -$e
|
||||
(const byte) testChar::n = (byte) $e
|
||||
(const signed byte) testChar::s = (signed byte) -$e
|
||||
(const string) testChar::str = (string) "char: "
|
||||
(const byte) testChar::u = (number) $e
|
||||
(const byte) testChar::u = (byte) $e
|
||||
(void()) testInt()
|
||||
(label) testInt::@1
|
||||
(label) testInt::@2
|
||||
@ -1209,10 +1209,10 @@ SYMBOL TABLE SSA
|
||||
(label) testInt::@6
|
||||
(label) testInt::@7
|
||||
(label) testInt::@return
|
||||
(const signed word) testInt::n = (number) -$578
|
||||
(const signed word) testInt::s = (number) -$578
|
||||
(const signed word) testInt::n = (signed word) -$578
|
||||
(const signed word) testInt::s = (signed word) -$578
|
||||
(const string) testInt::str = (string) "int: "
|
||||
(const word) testInt::u = (number) $578
|
||||
(const word) testInt::u = (word) $578
|
||||
(void()) testLong()
|
||||
(label) testLong::@1
|
||||
(label) testLong::@2
|
||||
@ -1222,10 +1222,10 @@ SYMBOL TABLE SSA
|
||||
(label) testLong::@6
|
||||
(label) testLong::@7
|
||||
(label) testLong::@return
|
||||
(const signed dword) testLong::n = (number) -$222e0
|
||||
(const signed dword) testLong::s = (number) -$222e0
|
||||
(const signed dword) testLong::n = (signed dword) -$222e0
|
||||
(const signed dword) testLong::s = (signed dword) -$222e0
|
||||
(const string) testLong::str = (string) "long: "
|
||||
(const dword) testLong::u = (number) $222e0
|
||||
(const dword) testLong::u = (dword) $222e0
|
||||
(void()) testShort()
|
||||
(label) testShort::@1
|
||||
(label) testShort::@2
|
||||
@ -1235,10 +1235,10 @@ SYMBOL TABLE SSA
|
||||
(label) testShort::@6
|
||||
(label) testShort::@7
|
||||
(label) testShort::@return
|
||||
(const signed word) testShort::n = (number) -$578
|
||||
(const signed word) testShort::s = (number) -$578
|
||||
(const signed word) testShort::n = (signed word) -$578
|
||||
(const signed word) testShort::s = (signed word) -$578
|
||||
(const string) testShort::str = (string) "short: "
|
||||
(const word) testShort::u = (number) $578
|
||||
(const word) testShort::u = (word) $578
|
||||
|
||||
Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memset::num#1 > (number) 0
|
||||
Adding number conversion cast (unumber) 0 in (bool~) print_str::$0 ← (number) 0 != *((byte*) print_str::str#5)
|
||||
@ -4600,10 +4600,10 @@ FINAL SYMBOL TABLE
|
||||
(label) testChar::@5
|
||||
(label) testChar::@6
|
||||
(label) testChar::@return
|
||||
(const byte) testChar::n = (number) $e
|
||||
(const signed byte) testChar::s = (number) -$e
|
||||
(const byte) testChar::n = (byte) $e
|
||||
(const signed byte) testChar::s = (signed byte) -$e
|
||||
(const string) testChar::str = (string) "char: "
|
||||
(const byte) testChar::u = (number) $e
|
||||
(const byte) testChar::u = (byte) $e
|
||||
(void()) testInt()
|
||||
(label) testInt::@1
|
||||
(label) testInt::@2
|
||||
@ -4612,10 +4612,10 @@ FINAL SYMBOL TABLE
|
||||
(label) testInt::@5
|
||||
(label) testInt::@6
|
||||
(label) testInt::@return
|
||||
(const signed word) testInt::n = (number) -$578
|
||||
(const signed word) testInt::s = (number) -$578
|
||||
(const signed word) testInt::n = (signed word) -$578
|
||||
(const signed word) testInt::s = (signed word) -$578
|
||||
(const string) testInt::str = (string) "int: "
|
||||
(const word) testInt::u = (number) $578
|
||||
(const word) testInt::u = (word) $578
|
||||
(void()) testLong()
|
||||
(label) testLong::@1
|
||||
(label) testLong::@2
|
||||
@ -4624,10 +4624,10 @@ FINAL SYMBOL TABLE
|
||||
(label) testLong::@5
|
||||
(label) testLong::@6
|
||||
(label) testLong::@return
|
||||
(const signed dword) testLong::n = (number) -$222e0
|
||||
(const signed dword) testLong::s = (number) -$222e0
|
||||
(const signed dword) testLong::n = (signed dword) -$222e0
|
||||
(const signed dword) testLong::s = (signed dword) -$222e0
|
||||
(const string) testLong::str = (string) "long: "
|
||||
(const dword) testLong::u = (number) $222e0
|
||||
(const dword) testLong::u = (dword) $222e0
|
||||
(void()) testShort()
|
||||
(label) testShort::@1
|
||||
(label) testShort::@2
|
||||
@ -4636,10 +4636,10 @@ FINAL SYMBOL TABLE
|
||||
(label) testShort::@5
|
||||
(label) testShort::@6
|
||||
(label) testShort::@return
|
||||
(const signed word) testShort::n = (number) -$578
|
||||
(const signed word) testShort::s = (number) -$578
|
||||
(const signed word) testShort::n = (signed word) -$578
|
||||
(const signed word) testShort::s = (signed word) -$578
|
||||
(const string) testShort::str = (string) "short: "
|
||||
(const word) testShort::u = (number) $578
|
||||
(const word) testShort::u = (word) $578
|
||||
|
||||
zp[4]:2 [ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 print_dword::dw#2 print_dword::dw#0 ]
|
||||
reg byte a [ print_char::ch#16 print_char::ch#6 print_char::ch#7 ]
|
||||
|
@ -121,10 +121,10 @@
|
||||
(label) testChar::@5
|
||||
(label) testChar::@6
|
||||
(label) testChar::@return
|
||||
(const byte) testChar::n = (number) $e
|
||||
(const signed byte) testChar::s = (number) -$e
|
||||
(const byte) testChar::n = (byte) $e
|
||||
(const signed byte) testChar::s = (signed byte) -$e
|
||||
(const string) testChar::str = (string) "char: "
|
||||
(const byte) testChar::u = (number) $e
|
||||
(const byte) testChar::u = (byte) $e
|
||||
(void()) testInt()
|
||||
(label) testInt::@1
|
||||
(label) testInt::@2
|
||||
@ -133,10 +133,10 @@
|
||||
(label) testInt::@5
|
||||
(label) testInt::@6
|
||||
(label) testInt::@return
|
||||
(const signed word) testInt::n = (number) -$578
|
||||
(const signed word) testInt::s = (number) -$578
|
||||
(const signed word) testInt::n = (signed word) -$578
|
||||
(const signed word) testInt::s = (signed word) -$578
|
||||
(const string) testInt::str = (string) "int: "
|
||||
(const word) testInt::u = (number) $578
|
||||
(const word) testInt::u = (word) $578
|
||||
(void()) testLong()
|
||||
(label) testLong::@1
|
||||
(label) testLong::@2
|
||||
@ -145,10 +145,10 @@
|
||||
(label) testLong::@5
|
||||
(label) testLong::@6
|
||||
(label) testLong::@return
|
||||
(const signed dword) testLong::n = (number) -$222e0
|
||||
(const signed dword) testLong::s = (number) -$222e0
|
||||
(const signed dword) testLong::n = (signed dword) -$222e0
|
||||
(const signed dword) testLong::s = (signed dword) -$222e0
|
||||
(const string) testLong::str = (string) "long: "
|
||||
(const dword) testLong::u = (number) $222e0
|
||||
(const dword) testLong::u = (dword) $222e0
|
||||
(void()) testShort()
|
||||
(label) testShort::@1
|
||||
(label) testShort::@2
|
||||
@ -157,10 +157,10 @@
|
||||
(label) testShort::@5
|
||||
(label) testShort::@6
|
||||
(label) testShort::@return
|
||||
(const signed word) testShort::n = (number) -$578
|
||||
(const signed word) testShort::s = (number) -$578
|
||||
(const signed word) testShort::n = (signed word) -$578
|
||||
(const signed word) testShort::s = (signed word) -$578
|
||||
(const string) testShort::str = (string) "short: "
|
||||
(const word) testShort::u = (number) $578
|
||||
(const word) testShort::u = (word) $578
|
||||
|
||||
zp[4]:2 [ print_sdword::dw#5 print_sdword::dw#0 print_sdword::dw#3 print_dword::dw#2 print_dword::dw#0 ]
|
||||
reg byte a [ print_char::ch#16 print_char::ch#6 print_char::ch#7 ]
|
||||
|
@ -4758,7 +4758,7 @@ SYMBOL TABLE SSA
|
||||
(byte) form_field_ptr::x#0
|
||||
(byte) form_field_ptr::y
|
||||
(byte) form_field_ptr::y#0
|
||||
(const byte) form_fields_cnt = (number) $24
|
||||
(const byte) form_fields_cnt = (byte) $24
|
||||
(byte[]) form_fields_max
|
||||
(byte[]) form_fields_val
|
||||
(byte[]) form_fields_x
|
||||
@ -5550,7 +5550,7 @@ SYMBOL TABLE SSA
|
||||
(byte) gfx_init_vic_bitmap::l#2
|
||||
(byte) gfx_init_vic_bitmap::l#3
|
||||
(byte) gfx_init_vic_bitmap::l#4
|
||||
(const byte) gfx_init_vic_bitmap::lines_cnt = (number) 9
|
||||
(const byte) gfx_init_vic_bitmap::lines_cnt = (byte) 9
|
||||
(byte[]) gfx_init_vic_bitmap::lines_x
|
||||
(byte[]) gfx_init_vic_bitmap::lines_y
|
||||
(void()) gfx_mode()
|
||||
@ -28680,7 +28680,7 @@ FINAL SYMBOL TABLE
|
||||
(byte) form_field_ptr::x#0 x zp[1]:30 33.90000000000003
|
||||
(byte) form_field_ptr::y
|
||||
(byte) form_field_ptr::y#0 reg byte a 6.0
|
||||
(const byte) form_fields_cnt = (number) $24
|
||||
(const byte) form_fields_cnt = (byte) $24
|
||||
(const byte[]) form_fields_max = { (byte) $a, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) $d, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $d, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) 3, (byte) 1, (byte) 4, (byte) 1, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f }
|
||||
(const byte[]) form_fields_val = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 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 }
|
||||
(const byte[]) form_fields_x = { (byte) 8, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $19, (byte) $18, (byte) $19, (byte) $18, (byte) $19, (byte) $18, (byte) $19, (byte) $19, (byte) $18, (byte) $19, (byte) $18, (byte) $19, (byte) $18, (byte) $19, (byte) $25, (byte) $25, (byte) $25, (byte) $25, (byte) $24, (byte) $25, (byte) $24, (byte) $25, (byte) $24, (byte) $25, (byte) $24, (byte) $25 }
|
||||
@ -29093,7 +29093,7 @@ FINAL SYMBOL TABLE
|
||||
(byte) gfx_init_vic_bitmap::l
|
||||
(byte) gfx_init_vic_bitmap::l#1 l zp[1]:8 22.0
|
||||
(byte) gfx_init_vic_bitmap::l#2 l zp[1]:8 11.0
|
||||
(const byte) gfx_init_vic_bitmap::lines_cnt = (number) 9
|
||||
(const byte) gfx_init_vic_bitmap::lines_cnt = (byte) 9
|
||||
(const byte[]) gfx_init_vic_bitmap::lines_x = { (byte) 0, (byte) $ff, (byte) $ff, (byte) 0, (byte) 0, (byte) $80, (byte) $ff, (byte) $80, (byte) 0, (byte) $80 }
|
||||
(const byte[]) gfx_init_vic_bitmap::lines_y = { (byte) 0, (byte) 0, (byte) $c7, (byte) $c7, (byte) 0, (byte) 0, (byte) $64, (byte) $c7, (byte) $64, (byte) 0 }
|
||||
(void()) gfx_mode()
|
||||
|
@ -441,7 +441,7 @@
|
||||
(byte) form_field_ptr::x#0 x zp[1]:30 33.90000000000003
|
||||
(byte) form_field_ptr::y
|
||||
(byte) form_field_ptr::y#0 reg byte a 6.0
|
||||
(const byte) form_fields_cnt = (number) $24
|
||||
(const byte) form_fields_cnt = (byte) $24
|
||||
(const byte[]) form_fields_max = { (byte) $a, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) $d, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $d, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) 3, (byte) 1, (byte) 4, (byte) 1, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f, (byte) $f }
|
||||
(const byte[]) form_fields_val = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 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 }
|
||||
(const byte[]) form_fields_x = { (byte) 8, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $c, (byte) $19, (byte) $18, (byte) $19, (byte) $18, (byte) $19, (byte) $18, (byte) $19, (byte) $19, (byte) $18, (byte) $19, (byte) $18, (byte) $19, (byte) $18, (byte) $19, (byte) $25, (byte) $25, (byte) $25, (byte) $25, (byte) $24, (byte) $25, (byte) $24, (byte) $25, (byte) $24, (byte) $25, (byte) $24, (byte) $25 }
|
||||
@ -854,7 +854,7 @@
|
||||
(byte) gfx_init_vic_bitmap::l
|
||||
(byte) gfx_init_vic_bitmap::l#1 l zp[1]:8 22.0
|
||||
(byte) gfx_init_vic_bitmap::l#2 l zp[1]:8 11.0
|
||||
(const byte) gfx_init_vic_bitmap::lines_cnt = (number) 9
|
||||
(const byte) gfx_init_vic_bitmap::lines_cnt = (byte) 9
|
||||
(const byte[]) gfx_init_vic_bitmap::lines_x = { (byte) 0, (byte) $ff, (byte) $ff, (byte) 0, (byte) 0, (byte) $80, (byte) $ff, (byte) $80, (byte) 0, (byte) $80 }
|
||||
(const byte[]) gfx_init_vic_bitmap::lines_y = { (byte) 0, (byte) 0, (byte) $c7, (byte) $c7, (byte) 0, (byte) 0, (byte) $64, (byte) $c7, (byte) $64, (byte) 0 }
|
||||
(void()) gfx_mode()
|
||||
|
@ -5218,7 +5218,7 @@ SYMBOL TABLE SSA
|
||||
(byte) mode_stdbitmap::l#2
|
||||
(byte) mode_stdbitmap::l#3
|
||||
(byte) mode_stdbitmap::l#4
|
||||
(const byte) mode_stdbitmap::lines_cnt = (number) 9
|
||||
(const byte) mode_stdbitmap::lines_cnt = (byte) 9
|
||||
(byte[]) mode_stdbitmap::lines_x
|
||||
(byte[]) mode_stdbitmap::lines_y
|
||||
(void()) mode_stdchar()
|
||||
@ -26565,7 +26565,7 @@ FINAL SYMBOL TABLE
|
||||
(byte) mode_stdbitmap::l
|
||||
(byte) mode_stdbitmap::l#1 l zp[1]:14 202.0
|
||||
(byte) mode_stdbitmap::l#2 l zp[1]:14 101.0
|
||||
(const byte) mode_stdbitmap::lines_cnt = (number) 9
|
||||
(const byte) mode_stdbitmap::lines_cnt = (byte) 9
|
||||
(const byte[]) mode_stdbitmap::lines_x = { (byte) 0, (byte) $ff, (byte) $ff, (byte) 0, (byte) 0, (byte) $80, (byte) $ff, (byte) $80, (byte) 0, (byte) $80 }
|
||||
(const byte[]) mode_stdbitmap::lines_y = { (byte) 0, (byte) 0, (byte) $c7, (byte) $c7, (byte) 0, (byte) 0, (byte) $64, (byte) $c7, (byte) $64, (byte) 0 }
|
||||
(void()) mode_stdchar()
|
||||
|
@ -942,7 +942,7 @@
|
||||
(byte) mode_stdbitmap::l
|
||||
(byte) mode_stdbitmap::l#1 l zp[1]:14 202.0
|
||||
(byte) mode_stdbitmap::l#2 l zp[1]:14 101.0
|
||||
(const byte) mode_stdbitmap::lines_cnt = (number) 9
|
||||
(const byte) mode_stdbitmap::lines_cnt = (byte) 9
|
||||
(const byte[]) mode_stdbitmap::lines_x = { (byte) 0, (byte) $ff, (byte) $ff, (byte) 0, (byte) 0, (byte) $80, (byte) $ff, (byte) $80, (byte) 0, (byte) $80 }
|
||||
(const byte[]) mode_stdbitmap::lines_y = { (byte) 0, (byte) 0, (byte) $c7, (byte) $c7, (byte) 0, (byte) 0, (byte) $64, (byte) $c7, (byte) $64, (byte) 0 }
|
||||
(void()) mode_stdchar()
|
||||
|
@ -90,7 +90,7 @@ SYMBOL TABLE SSA
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@return
|
||||
(const word) main::w = (number) $1234
|
||||
(const word) main::w = (word) $1234
|
||||
(void()) print((word) print::w)
|
||||
(byte~) print::$0
|
||||
(label) print::@return
|
||||
@ -517,7 +517,7 @@ FINAL SYMBOL TABLE
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@return
|
||||
(const word) main::w = (number) $1234
|
||||
(const word) main::w = (word) $1234
|
||||
(void()) print((word) print::w)
|
||||
(byte~) print::$0 reg byte a 4.0
|
||||
(label) print::@return
|
||||
|
@ -9,7 +9,7 @@
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@return
|
||||
(const word) main::w = (number) $1234
|
||||
(const word) main::w = (word) $1234
|
||||
(void()) print((word) print::w)
|
||||
(byte~) print::$0 reg byte a 4.0
|
||||
(label) print::@return
|
||||
|
@ -62,12 +62,12 @@ SYMBOL TABLE SSA
|
||||
(label) main::@return
|
||||
(const byte*) main::BGCOL = (byte*)(number) $d021
|
||||
(const byte*) main::SCREEN = (byte*)(number) $400
|
||||
(const byte) main::max = (number) $c8
|
||||
(const byte) main::max = (byte) $c8
|
||||
(byte) main::midb
|
||||
(byte) main::midb#0
|
||||
(byte) main::midw
|
||||
(byte) main::midw#0
|
||||
(const byte) main::min = (number) $a
|
||||
(const byte) main::min = (byte) $a
|
||||
(byte) main::sumb
|
||||
(byte) main::sumb#0
|
||||
(word) main::sumw
|
||||
@ -378,12 +378,12 @@ FINAL SYMBOL TABLE
|
||||
(label) main::@return
|
||||
(const byte*) main::BGCOL = (byte*) 53281
|
||||
(const byte*) main::SCREEN = (byte*) 1024
|
||||
(const byte) main::max = (number) $c8
|
||||
(const byte) main::max = (byte) $c8
|
||||
(byte) main::midb
|
||||
(const byte) main::midb#0 midb = (const byte) main::sumb#0>>(byte) 1+(byte) 1
|
||||
(byte) main::midw
|
||||
(const byte) main::midw#0 midw = (byte)(const word) main::sumw#0>>(byte) 1+(byte) 1
|
||||
(const byte) main::min = (number) $a
|
||||
(const byte) main::min = (byte) $a
|
||||
(byte) main::sumb
|
||||
(const byte) main::sumb#0 sumb = (const byte) main::min+(const byte) main::max
|
||||
(word) main::sumw
|
||||
|
@ -7,12 +7,12 @@
|
||||
(label) main::@return
|
||||
(const byte*) main::BGCOL = (byte*) 53281
|
||||
(const byte*) main::SCREEN = (byte*) 1024
|
||||
(const byte) main::max = (number) $c8
|
||||
(const byte) main::max = (byte) $c8
|
||||
(byte) main::midb
|
||||
(const byte) main::midb#0 midb = (const byte) main::sumb#0>>(byte) 1+(byte) 1
|
||||
(byte) main::midw
|
||||
(const byte) main::midw#0 midw = (byte)(const word) main::sumw#0>>(byte) 1+(byte) 1
|
||||
(const byte) main::min = (number) $a
|
||||
(const byte) main::min = (byte) $a
|
||||
(byte) main::sumb
|
||||
(const byte) main::sumb#0 sumb = (const byte) main::min+(const byte) main::max
|
||||
(word) main::sumw
|
||||
|
@ -146,8 +146,8 @@ SYMBOL TABLE SSA
|
||||
(byte) w::i#0
|
||||
(byte) w::i#1
|
||||
(byte) w::i#2
|
||||
(const word) w::w1 = (number) $514
|
||||
(const word) w::w2 = (number) $4e2
|
||||
(const word) w::w1 = (word) $514
|
||||
(const word) w::w2 = (word) $4e2
|
||||
|
||||
Adding number conversion cast (unumber) $28*3 in (byte*~) $0 ← (const byte*) SCREEN + (number) $28*(number) 3
|
||||
Adding number conversion cast (unumber) $28*6 in (byte*~) $1 ← (const byte*) SCREEN + (number) $28*(number) 6
|
||||
@ -685,8 +685,8 @@ FINAL SYMBOL TABLE
|
||||
(byte) w::i
|
||||
(byte) w::i#1 reg byte y 16.5
|
||||
(byte) w::i#2 reg byte y 13.75
|
||||
(const word) w::w1 = (number) $514
|
||||
(const word) w::w2 = (number) $4e2
|
||||
(const word) w::w1 = (word) $514
|
||||
(const word) w::w2 = (word) $4e2
|
||||
|
||||
reg byte x [ main::b#2 main::b#1 ]
|
||||
reg byte y [ w::i#2 w::i#1 ]
|
||||
|
@ -29,8 +29,8 @@
|
||||
(byte) w::i
|
||||
(byte) w::i#1 reg byte y 16.5
|
||||
(byte) w::i#2 reg byte y 13.75
|
||||
(const word) w::w1 = (number) $514
|
||||
(const word) w::w2 = (number) $4e2
|
||||
(const word) w::w1 = (word) $514
|
||||
(const word) w::w2 = (word) $4e2
|
||||
|
||||
reg byte x [ main::b#2 main::b#1 ]
|
||||
reg byte y [ w::i#2 w::i#1 ]
|
||||
|
@ -61,9 +61,9 @@ SYMBOL TABLE SSA
|
||||
(label) @3
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte) BLACK = (number) 0
|
||||
(const byte) BLACK = (byte) 0
|
||||
(const byte*) BORDERCOL = (byte*)(number) $d020
|
||||
(const byte) DARK_GREY = (number) $b
|
||||
(const byte) DARK_GREY = (byte) $b
|
||||
(const void()**) KERNEL_IRQ = (void()**)(number) $314
|
||||
(const byte*) RASTER = (byte*)(number) $d012
|
||||
interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
@ -482,9 +482,9 @@ FINAL SYMBOL TABLE
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte) BLACK = (number) 0
|
||||
(const byte) BLACK = (byte) 0
|
||||
(const byte*) BORDERCOL = (byte*) 53280
|
||||
(const byte) DARK_GREY = (number) $b
|
||||
(const byte) DARK_GREY = (byte) $b
|
||||
(const void()**) KERNEL_IRQ = (void()**) 788
|
||||
(const byte*) RASTER = (byte*) 53266
|
||||
interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
|
@ -2,9 +2,9 @@
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte) BLACK = (number) 0
|
||||
(const byte) BLACK = (byte) 0
|
||||
(const byte*) BORDERCOL = (byte*) 53280
|
||||
(const byte) DARK_GREY = (number) $b
|
||||
(const byte) DARK_GREY = (byte) $b
|
||||
(const void()**) KERNEL_IRQ = (void()**) 788
|
||||
(const byte*) RASTER = (byte*) 53266
|
||||
interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
|
@ -29,7 +29,7 @@ SYMBOL TABLE SSA
|
||||
(number~) main::$0
|
||||
(label) main::@return
|
||||
(const byte*) main::SCREEN = (byte*)(number) $400
|
||||
(const byte) main::b = (number) 3
|
||||
(const byte) main::b = (byte) 3
|
||||
(byte) main::c
|
||||
(byte) main::c#0
|
||||
|
||||
@ -207,7 +207,7 @@ FINAL SYMBOL TABLE
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
(const byte*) main::SCREEN = (byte*) 1024
|
||||
(const byte) main::b = (number) 3
|
||||
(const byte) main::b = (byte) 3
|
||||
(byte) main::c
|
||||
(const byte) main::c#0 c = (const byte) main::b+(byte) 1
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
(const byte*) main::SCREEN = (byte*) 1024
|
||||
(const byte) main::b = (number) 3
|
||||
(const byte) main::b = (byte) 3
|
||||
(byte) main::c
|
||||
(const byte) main::c#0 c = (const byte) main::b+(byte) 1
|
||||
|
||||
|
@ -115,18 +115,6 @@ Warning! Adding boolean cast to non-boolean condition *((byte*) strcpy::src)
|
||||
Warning! Adding boolean cast to non-boolean condition (byte~) processChars::$9
|
||||
Warning! Adding boolean cast to non-boolean sub-expression (byte) atan2_16::shift
|
||||
Identified constant variable (byte*) HEAP_TOP
|
||||
Identified constant variable (byte) ProcessingChar::x
|
||||
Identified constant variable (byte) ProcessingChar::y
|
||||
Identified constant variable (byte) ProcessingChar::dist
|
||||
Identified constant variable (word) ProcessingSprite::x
|
||||
Identified constant variable (word) ProcessingSprite::y
|
||||
Identified constant variable (word) ProcessingSprite::vx
|
||||
Identified constant variable (word) ProcessingSprite::vy
|
||||
Identified constant variable (byte) ProcessingSprite::id
|
||||
Identified constant variable (byte) ProcessingSprite::ptr
|
||||
Identified constant variable (byte) ProcessingSprite::col
|
||||
Identified constant variable (byte) ProcessingSprite::status
|
||||
Identified constant variable (byte*) ProcessingSprite::screenPtr
|
||||
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) @2
|
||||
@ -1343,9 +1331,21 @@ SYMBOL TABLE SSA
|
||||
(const byte) PROCPORT_DDR_MEMORY_MASK = (number) 7
|
||||
(const byte) PROCPORT_RAM_CHARROM = (number) 1
|
||||
(const byte) PROCPORT_RAM_IO = (number) 5
|
||||
(byte) ProcessingChar::dist
|
||||
(byte) ProcessingChar::x
|
||||
(byte) ProcessingChar::y
|
||||
(const byte) ProcessingSprite::$0::STATUS_FREE = (byte) 0
|
||||
(const byte) ProcessingSprite::$0::STATUS_NEW = (byte) 1
|
||||
(const byte) ProcessingSprite::$0::STATUS_PROCESSING = (byte) 2
|
||||
(byte) ProcessingSprite::col
|
||||
(byte) ProcessingSprite::id
|
||||
(byte) ProcessingSprite::ptr
|
||||
(byte*) ProcessingSprite::screenPtr
|
||||
(byte) ProcessingSprite::status
|
||||
(word) ProcessingSprite::vx
|
||||
(word) ProcessingSprite::vy
|
||||
(word) ProcessingSprite::x
|
||||
(word) ProcessingSprite::y
|
||||
(const byte) RADIX::BINARY = (number) 2
|
||||
(const byte) RADIX::DECIMAL = (number) $a
|
||||
(const byte) RADIX::HEXADECIMAL = (number) $10
|
||||
@ -4166,6 +4166,18 @@ irqTop::@return: scope:[irqTop] from irqTop::@1
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte) ProcessingChar::dist
|
||||
(byte) ProcessingChar::x
|
||||
(byte) ProcessingChar::y
|
||||
(byte) ProcessingSprite::col
|
||||
(byte) ProcessingSprite::id
|
||||
(byte) ProcessingSprite::ptr
|
||||
(byte*) ProcessingSprite::screenPtr
|
||||
(byte) ProcessingSprite::status
|
||||
(word) ProcessingSprite::vx
|
||||
(word) ProcessingSprite::vy
|
||||
(word) ProcessingSprite::x
|
||||
(word) ProcessingSprite::y
|
||||
(byte*) SCREEN_COPY
|
||||
(void*) SCREEN_COPY#0 0.0273972602739726
|
||||
(byte*) SCREEN_DIST
|
||||
@ -10225,6 +10237,18 @@ FINAL SYMBOL TABLE
|
||||
(const byte) PROCPORT_DDR_MEMORY_MASK = (number) 7
|
||||
(const byte) PROCPORT_RAM_CHARROM = (number) 1
|
||||
(const byte) PROCPORT_RAM_IO = (number) 5
|
||||
(byte) ProcessingChar::dist
|
||||
(byte) ProcessingChar::x
|
||||
(byte) ProcessingChar::y
|
||||
(byte) ProcessingSprite::col
|
||||
(byte) ProcessingSprite::id
|
||||
(byte) ProcessingSprite::ptr
|
||||
(byte*) ProcessingSprite::screenPtr
|
||||
(byte) ProcessingSprite::status
|
||||
(word) ProcessingSprite::vx
|
||||
(word) ProcessingSprite::vy
|
||||
(word) ProcessingSprite::x
|
||||
(word) ProcessingSprite::y
|
||||
(const byte) RADIX::BINARY = (number) 2
|
||||
(const byte) RADIX::DECIMAL = (number) $a
|
||||
(const byte) RADIX::HEXADECIMAL = (number) $10
|
||||
|
@ -38,6 +38,18 @@
|
||||
(const byte) PROCPORT_DDR_MEMORY_MASK = (number) 7
|
||||
(const byte) PROCPORT_RAM_CHARROM = (number) 1
|
||||
(const byte) PROCPORT_RAM_IO = (number) 5
|
||||
(byte) ProcessingChar::dist
|
||||
(byte) ProcessingChar::x
|
||||
(byte) ProcessingChar::y
|
||||
(byte) ProcessingSprite::col
|
||||
(byte) ProcessingSprite::id
|
||||
(byte) ProcessingSprite::ptr
|
||||
(byte*) ProcessingSprite::screenPtr
|
||||
(byte) ProcessingSprite::status
|
||||
(word) ProcessingSprite::vx
|
||||
(word) ProcessingSprite::vy
|
||||
(word) ProcessingSprite::x
|
||||
(word) ProcessingSprite::y
|
||||
(const byte) RADIX::BINARY = (number) 2
|
||||
(const byte) RADIX::DECIMAL = (number) $a
|
||||
(const byte) RADIX::HEXADECIMAL = (number) $10
|
||||
|
@ -2,13 +2,6 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.const MOVE_TO = 0
|
||||
.const SPLINE_TO = 1
|
||||
.const LINE_TO = 2
|
||||
.const SIZEOF_STRUCT_SPLINEVECTOR16 = 4
|
||||
.const OFFSET_STRUCT_SPLINEVECTOR16_Y = 2
|
||||
.const OFFSET_STRUCT_SEGMENT_TO = 1
|
||||
.const OFFSET_STRUCT_SEGMENT_VIA = 5
|
||||
.label RASTER = $d012
|
||||
.label D011 = $d011
|
||||
.const VIC_BMM = $20
|
||||
@ -22,6 +15,13 @@
|
||||
.const WHITE = 1
|
||||
.label BITMAP_SCREEN = $5c00
|
||||
.label BITMAP_GRAPHICS = $6000
|
||||
.const MOVE_TO = 0
|
||||
.const SPLINE_TO = 1
|
||||
.const LINE_TO = 2
|
||||
.const SIZEOF_STRUCT_SPLINEVECTOR16 = 4
|
||||
.const OFFSET_STRUCT_SPLINEVECTOR16_Y = 2
|
||||
.const OFFSET_STRUCT_SEGMENT_TO = 1
|
||||
.const OFFSET_STRUCT_SEGMENT_VIA = 5
|
||||
.label COS = SIN+$40
|
||||
main: {
|
||||
.const vicSelectGfxBank1_toDd001_return = 3^(>BITMAP_SCREEN)/$40
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -35,10 +35,10 @@
|
||||
(signed word) SplineVector16::y
|
||||
(signed dword) SplineVector32::x
|
||||
(signed dword) SplineVector32::y
|
||||
(const byte) VIC_BMM = (byte) $20
|
||||
(const byte) VIC_DEN = (byte) $10
|
||||
(const byte) VIC_RSEL = (byte) 8
|
||||
(const byte) WHITE = (byte) 1
|
||||
(const byte) VIC_BMM = (number) $20
|
||||
(const byte) VIC_DEN = (number) $10
|
||||
(const byte) VIC_RSEL = (number) 8
|
||||
(const byte) WHITE = (number) 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
|
||||
|
@ -274,9 +274,9 @@ render_screen_swap: {
|
||||
}
|
||||
// Show the current score
|
||||
render_score: {
|
||||
.const score_offset = $28*5+$1c
|
||||
.const lines_offset = $28*1+$16
|
||||
.const level_offset = $28*$13+$1f
|
||||
.const score_offset = $e4
|
||||
.const lines_offset = $3e
|
||||
.const level_offset = $317
|
||||
.label score_bytes = score_bcd
|
||||
.label screen = $24
|
||||
lda.z render_screen_render
|
||||
@ -384,7 +384,7 @@ render_bcd: {
|
||||
// Render the next tetromino in the "next" area
|
||||
render_next: {
|
||||
// Find the screen area
|
||||
.const next_area_offset = $28*$c+$18+4
|
||||
.const next_area_offset = $1fc
|
||||
.label next_piece_char = $21
|
||||
.label next_piece_gfx = $24
|
||||
.label screen_next_area = $22
|
||||
|
@ -6151,7 +6151,7 @@ SYMBOL TABLE SSA
|
||||
(byte) render_next::l#5
|
||||
(byte) render_next::l#6
|
||||
(byte) render_next::l#7
|
||||
(const word) render_next::next_area_offset = (number) $28*(number) $c+(number) $18+(number) 4
|
||||
(const word) render_next::next_area_offset = (word) $1fc
|
||||
(byte) render_next::next_piece_char
|
||||
(byte) render_next::next_piece_char#0
|
||||
(byte) render_next::next_piece_char#1
|
||||
@ -6230,13 +6230,13 @@ SYMBOL TABLE SSA
|
||||
(label) render_score::@8
|
||||
(label) render_score::@9
|
||||
(label) render_score::@return
|
||||
(const word) render_score::level_offset = (number) $28*(number) $13+(number) $1f
|
||||
(const word) render_score::lines_offset = (number) $28*(number) 1+(number) $16
|
||||
(const word) render_score::level_offset = (word) $317
|
||||
(const word) render_score::lines_offset = (word) $3e
|
||||
(byte*) render_score::score_bytes
|
||||
(byte*) render_score::score_bytes#0
|
||||
(byte*) render_score::score_bytes#1
|
||||
(byte*) render_score::score_bytes#2
|
||||
(const word) render_score::score_offset = (number) $28*(number) 5+(number) $1c
|
||||
(const word) render_score::score_offset = (word) $e4
|
||||
(byte*) render_score::screen
|
||||
(byte*) render_score::screen#0
|
||||
(byte*) render_score::screen#1
|
||||
@ -6258,7 +6258,7 @@ SYMBOL TABLE SSA
|
||||
(label) render_screen_original::@6
|
||||
(label) render_screen_original::@7
|
||||
(label) render_screen_original::@return
|
||||
(const byte) render_screen_original::SPACE = (number) 0
|
||||
(const byte) render_screen_original::SPACE = (byte) 0
|
||||
(byte*) render_screen_original::cols
|
||||
(byte*) render_screen_original::cols#0
|
||||
(byte*) render_screen_original::cols#1
|
||||
@ -13597,9 +13597,9 @@ render_screen_swap: {
|
||||
// render_score
|
||||
// Show the current score
|
||||
render_score: {
|
||||
.const score_offset = $28*5+$1c
|
||||
.const lines_offset = $28*1+$16
|
||||
.const level_offset = $28*$13+$1f
|
||||
.const score_offset = $e4
|
||||
.const lines_offset = $3e
|
||||
.const level_offset = $317
|
||||
.label score_bytes = score_bcd
|
||||
.label screen = 6
|
||||
// [75] if((byte) render_screen_render#18==(byte) 0) goto render_score::@1 -- vbuz1_eq_0_then_la1
|
||||
@ -13864,7 +13864,7 @@ render_bcd: {
|
||||
// Render the next tetromino in the "next" area
|
||||
render_next: {
|
||||
// Find the screen area
|
||||
.const next_area_offset = $28*$c+$18+4
|
||||
.const next_area_offset = $1fc
|
||||
.label __6 = $83
|
||||
.label next_piece_char = $84
|
||||
.label cell = $85
|
||||
@ -18690,9 +18690,9 @@ render_screen_swap: {
|
||||
// render_score
|
||||
// Show the current score
|
||||
render_score: {
|
||||
.const score_offset = $28*5+$1c
|
||||
.const lines_offset = $28*1+$16
|
||||
.const level_offset = $28*$13+$1f
|
||||
.const score_offset = $e4
|
||||
.const lines_offset = $3e
|
||||
.const level_offset = $317
|
||||
.label score_bytes = score_bcd
|
||||
.label screen = $24
|
||||
// [75] if((byte) render_screen_render#18==(byte) 0) goto render_score::@1 -- vbuz1_eq_0_then_la1
|
||||
@ -18910,7 +18910,7 @@ render_bcd: {
|
||||
// Render the next tetromino in the "next" area
|
||||
render_next: {
|
||||
// Find the screen area
|
||||
.const next_area_offset = $28*$c+$18+4
|
||||
.const next_area_offset = $1fc
|
||||
.label next_piece_char = $21
|
||||
.label next_piece_gfx = $24
|
||||
.label screen_next_area = $22
|
||||
@ -23075,7 +23075,7 @@ FINAL SYMBOL TABLE
|
||||
(byte) render_next::l
|
||||
(byte) render_next::l#1 l zp[1]:13 151.5
|
||||
(byte) render_next::l#7 l zp[1]:13 18.363636363636363
|
||||
(const word) render_next::next_area_offset = (number) $28*(number) $c+(number) $18+(number) 4
|
||||
(const word) render_next::next_area_offset = (word) $1fc
|
||||
(byte) render_next::next_piece_char
|
||||
(byte) render_next::next_piece_char#0 next_piece_char zp[1]:33 66.86666666666667
|
||||
(byte*) render_next::next_piece_gfx
|
||||
@ -23119,11 +23119,11 @@ FINAL SYMBOL TABLE
|
||||
(label) render_score::@6
|
||||
(label) render_score::@7
|
||||
(label) render_score::@return
|
||||
(const word) render_score::level_offset = (number) $28*(number) $13+(number) $1f
|
||||
(const word) render_score::lines_offset = (number) $28*(number) 1+(number) $16
|
||||
(const word) render_score::level_offset = (word) $317
|
||||
(const word) render_score::lines_offset = (word) $3e
|
||||
(byte*) render_score::score_bytes
|
||||
(const byte*) render_score::score_bytes#0 score_bytes = (byte*)&(dword) score_bcd#14
|
||||
(const word) render_score::score_offset = (number) $28*(number) 5+(number) $1c
|
||||
(const word) render_score::score_offset = (word) $e4
|
||||
(byte*) render_score::screen
|
||||
(byte*) render_score::screen#3 screen zp[2]:36 0.75
|
||||
(void()) render_screen_original((byte*) render_screen_original::screen)
|
||||
@ -23133,7 +23133,7 @@ FINAL SYMBOL TABLE
|
||||
(label) render_screen_original::@4
|
||||
(label) render_screen_original::@5
|
||||
(label) render_screen_original::@return
|
||||
(const byte) render_screen_original::SPACE = (number) 0
|
||||
(const byte) render_screen_original::SPACE = (byte) 0
|
||||
(byte*) render_screen_original::cols
|
||||
(byte*) render_screen_original::cols#1 cols zp[2]:44 101.0
|
||||
(byte*) render_screen_original::cols#2 cols zp[2]:44 75.75
|
||||
@ -23901,9 +23901,9 @@ render_screen_swap: {
|
||||
// render_score
|
||||
// Show the current score
|
||||
render_score: {
|
||||
.const score_offset = $28*5+$1c
|
||||
.const lines_offset = $28*1+$16
|
||||
.const level_offset = $28*$13+$1f
|
||||
.const score_offset = $e4
|
||||
.const lines_offset = $3e
|
||||
.const level_offset = $317
|
||||
.label score_bytes = score_bcd
|
||||
.label screen = $24
|
||||
// if(render_screen_render==0)
|
||||
@ -24109,7 +24109,7 @@ render_bcd: {
|
||||
// Render the next tetromino in the "next" area
|
||||
render_next: {
|
||||
// Find the screen area
|
||||
.const next_area_offset = $28*$c+$18+4
|
||||
.const next_area_offset = $1fc
|
||||
.label next_piece_char = $21
|
||||
.label next_piece_gfx = $24
|
||||
.label screen_next_area = $22
|
||||
|
@ -750,7 +750,7 @@
|
||||
(byte) render_next::l
|
||||
(byte) render_next::l#1 l zp[1]:13 151.5
|
||||
(byte) render_next::l#7 l zp[1]:13 18.363636363636363
|
||||
(const word) render_next::next_area_offset = (number) $28*(number) $c+(number) $18+(number) 4
|
||||
(const word) render_next::next_area_offset = (word) $1fc
|
||||
(byte) render_next::next_piece_char
|
||||
(byte) render_next::next_piece_char#0 next_piece_char zp[1]:33 66.86666666666667
|
||||
(byte*) render_next::next_piece_gfx
|
||||
@ -794,11 +794,11 @@
|
||||
(label) render_score::@6
|
||||
(label) render_score::@7
|
||||
(label) render_score::@return
|
||||
(const word) render_score::level_offset = (number) $28*(number) $13+(number) $1f
|
||||
(const word) render_score::lines_offset = (number) $28*(number) 1+(number) $16
|
||||
(const word) render_score::level_offset = (word) $317
|
||||
(const word) render_score::lines_offset = (word) $3e
|
||||
(byte*) render_score::score_bytes
|
||||
(const byte*) render_score::score_bytes#0 score_bytes = (byte*)&(dword) score_bcd#14
|
||||
(const word) render_score::score_offset = (number) $28*(number) 5+(number) $1c
|
||||
(const word) render_score::score_offset = (word) $e4
|
||||
(byte*) render_score::screen
|
||||
(byte*) render_score::screen#3 screen zp[2]:36 0.75
|
||||
(void()) render_screen_original((byte*) render_screen_original::screen)
|
||||
@ -808,7 +808,7 @@
|
||||
(label) render_screen_original::@4
|
||||
(label) render_screen_original::@5
|
||||
(label) render_screen_original::@return
|
||||
(const byte) render_screen_original::SPACE = (number) 0
|
||||
(const byte) render_screen_original::SPACE = (byte) 0
|
||||
(byte*) render_screen_original::cols
|
||||
(byte*) render_screen_original::cols#1 cols zp[2]:44 101.0
|
||||
(byte*) render_screen_original::cols#2 cols zp[2]:44 75.75
|
||||
|
@ -9,6 +9,7 @@ Culled Empty Block (label) memset::@8
|
||||
Culled Empty Block (label) memset::@9
|
||||
Culled Empty Block (label) memset::@3
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) main::@4
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) main::@5
|
||||
@ -24,7 +25,7 @@ Culled Empty Block (label) @6
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@4
|
||||
to:@7
|
||||
|
||||
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
||||
memset: scope:[memset] from main main::@17
|
||||
@ -69,43 +70,32 @@ memset::@return: scope:[memset] from memset::@1
|
||||
(void*) memset::return#1 ← (void*) memset::return#4
|
||||
return
|
||||
to:@return
|
||||
@4: scope:[] from @begin
|
||||
(byte*) RASTER ← ((byte*)) (number) $d012
|
||||
(byte*) VIC_MEMORY ← ((byte*)) (number) $d018
|
||||
(byte*) SCREEN ← ((byte*)) (number) $400
|
||||
(byte*) BGCOL ← ((byte*)) (number) $d021
|
||||
(byte*) COLS ← ((byte*)) (number) $d800
|
||||
(byte) BLACK ← (number) 0
|
||||
(byte) WHITE ← (number) 1
|
||||
(byte[]) MESSAGE ← (const string) $3
|
||||
to:@7
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @7
|
||||
*((byte*) VIC_MEMORY) ← (number) $14
|
||||
(void*) memset::str#0 ← (void*)(byte*) SCREEN
|
||||
*((const byte*) VIC_MEMORY) ← (number) $14
|
||||
(void*) memset::str#0 ← (void*)(const byte*) SCREEN
|
||||
(byte) memset::c#0 ← (byte) ' '
|
||||
(word) memset::num#0 ← (number) $28*(number) $19
|
||||
call memset
|
||||
(void*) memset::return#2 ← (void*) memset::return#1
|
||||
to:main::@17
|
||||
main::@17: scope:[main] from main
|
||||
(void*) memset::str#1 ← (void*)(byte*) COLS
|
||||
(byte) memset::c#1 ← (byte) WHITE
|
||||
(void*) memset::str#1 ← (void*)(const byte*) COLS
|
||||
(byte) memset::c#1 ← (const byte) WHITE
|
||||
(word) memset::num#1 ← (number) $28*(number) $19
|
||||
call memset
|
||||
(void*) memset::return#3 ← (void*) memset::return#1
|
||||
to:main::@18
|
||||
main::@18: scope:[main] from main::@17
|
||||
(byte*~) main::$2 ← (byte*) SCREEN + (number) $28
|
||||
(byte*) main::sc#0 ← (byte*~) main::$2
|
||||
(byte*) main::msg#0 ← (byte[]) MESSAGE
|
||||
(byte*) main::sc#0 ← (const byte*) SCREEN+(number) $28
|
||||
(byte*) main::msg#0 ← (const byte[]) MESSAGE
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main::@18 main::@2
|
||||
(byte*) main::sc#3 ← phi( main::@18/(byte*) main::sc#0 main::@2/(byte*) main::sc#1 )
|
||||
(byte*) main::msg#2 ← phi( main::@18/(byte*) main::msg#0 main::@2/(byte*) main::msg#1 )
|
||||
(bool~) main::$6 ← (number) 0 != *((byte*) main::msg#2)
|
||||
if((bool~) main::$6) goto main::@2
|
||||
(bool~) main::$5 ← (number) 0 != *((byte*) main::msg#2)
|
||||
if((bool~) main::$5) goto main::@2
|
||||
to:main::@7
|
||||
main::@2: scope:[main] from main::@1
|
||||
(byte*) main::sc#2 ← phi( main::@1/(byte*) main::sc#3 )
|
||||
@ -118,16 +108,16 @@ main::@7: scope:[main] from main::@1 main::@10 main::@14
|
||||
if(true) goto main::@8
|
||||
to:main::@return
|
||||
main::@8: scope:[main] from main::@7
|
||||
(bool~) main::$3 ← *((byte*) RASTER) == (number) $36
|
||||
(bool~) main::$4 ← *((byte*) RASTER) == (number) $42
|
||||
(bool~) main::$5 ← (bool~) main::$3 || (bool~) main::$4
|
||||
if((bool~) main::$5) goto main::@10
|
||||
(bool~) main::$2 ← *((const byte*) RASTER) == (number) $36
|
||||
(bool~) main::$3 ← *((const byte*) RASTER) == (number) $42
|
||||
(bool~) main::$4 ← (bool~) main::$2 || (bool~) main::$3
|
||||
if((bool~) main::$4) goto main::@10
|
||||
to:main::@14
|
||||
main::@10: scope:[main] from main::@8
|
||||
*((byte*) BGCOL) ← (byte) WHITE
|
||||
*((const byte*) BGCOL) ← (const byte) WHITE
|
||||
to:main::@7
|
||||
main::@14: scope:[main] from main::@8
|
||||
*((byte*) BGCOL) ← (byte) BLACK
|
||||
*((const byte*) BGCOL) ← (const byte) BLACK
|
||||
to:main::@7
|
||||
main::@return: scope:[main] from main::@7
|
||||
return
|
||||
@ -135,8 +125,7 @@ main::@return: scope:[main] from main::@7
|
||||
|
||||
(void()) syscall1()
|
||||
syscall1: scope:[syscall1] from
|
||||
(byte*~) syscall1::$0 ← (byte*) SCREEN + (number) $4f
|
||||
*((byte*~) syscall1::$0) ← (byte) '>'
|
||||
*((const byte*) SCREEN+(number) $4f) ← (byte) '>'
|
||||
to:syscall1::@return
|
||||
syscall1::@return: scope:[syscall1] from syscall1
|
||||
return
|
||||
@ -144,20 +133,17 @@ syscall1::@return: scope:[syscall1] from syscall1
|
||||
|
||||
(void()) syscall2()
|
||||
syscall2: scope:[syscall2] from
|
||||
(byte*~) syscall2::$0 ← (byte*) SCREEN + (number) $4e
|
||||
*((byte*~) syscall2::$0) ← (byte) '<'
|
||||
*((const byte*) SCREEN+(number) $4e) ← (byte) '<'
|
||||
to:syscall2::@return
|
||||
syscall2::@return: scope:[syscall2] from syscall2
|
||||
return
|
||||
to:@return
|
||||
@7: scope:[] from @4
|
||||
(byte) JMP ← (number) $4c
|
||||
(byte) NOP ← (number) $ea
|
||||
@7: scope:[] from @begin
|
||||
(void()*~) $0 ← & (void()) syscall1()
|
||||
(void()*~) $1 ← & (void()) syscall2()
|
||||
(struct SysCall[]) SYSCALLS ← { { (byte) JMP, (void()*~) $0, (byte) NOP }, { (byte) JMP, (void()*~) $1, (byte) NOP } }
|
||||
(struct SysCall[]) SYSCALLS ← { { (const byte) JMP, (void()*~) $0, (const byte) NOP }, { (const byte) JMP, (void()*~) $1, (const byte) NOP } }
|
||||
(void()*~) $2 ← & (void()) main()
|
||||
(struct SysCall[]) SYSCALL_RESET ← { { (byte) JMP, (void()*~) $2, (byte) NOP } }
|
||||
(struct SysCall[]) SYSCALL_RESET ← { { (const byte) JMP, (void()*~) $2, (const byte) NOP } }
|
||||
call main
|
||||
to:@8
|
||||
@8: scope:[] from @7
|
||||
@ -168,33 +154,30 @@ SYMBOL TABLE SSA
|
||||
(void()*~) $0
|
||||
(void()*~) $1
|
||||
(void()*~) $2
|
||||
(const string) $3 = (string) "hello world!"
|
||||
(label) @4
|
||||
(label) @7
|
||||
(label) @8
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte) BLACK
|
||||
(byte*) COLS
|
||||
(byte) JMP
|
||||
(byte[]) MESSAGE
|
||||
(byte) NOP
|
||||
(byte*) RASTER
|
||||
(byte*) SCREEN
|
||||
(const byte*) BGCOL = (byte*)(number) $d021
|
||||
(const byte) BLACK = (number) 0
|
||||
(const byte*) COLS = (byte*)(number) $d800
|
||||
(const byte) JMP = (number) $4c
|
||||
(const byte[]) MESSAGE = (string) "hello world!"
|
||||
(const byte) NOP = (number) $ea
|
||||
(const byte*) RASTER = (byte*)(number) $d012
|
||||
(const byte*) SCREEN = (byte*)(number) $400
|
||||
(struct SysCall[]) SYSCALLS
|
||||
(struct SysCall[]) SYSCALL_RESET
|
||||
(void()*) SysCall::syscall
|
||||
(byte) SysCall::xjmp
|
||||
(byte) SysCall::xnop
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) WHITE
|
||||
(const byte*) VIC_MEMORY = (byte*)(number) $d018
|
||||
(const byte) WHITE = (number) 1
|
||||
(void()) main()
|
||||
(byte*~) main::$2
|
||||
(bool~) main::$2
|
||||
(bool~) main::$3
|
||||
(bool~) main::$4
|
||||
(bool~) main::$5
|
||||
(bool~) main::$6
|
||||
(label) main::@1
|
||||
(label) main::@10
|
||||
(label) main::@14
|
||||
@ -261,50 +244,33 @@ SYMBOL TABLE SSA
|
||||
(void*) memset::str#5
|
||||
(void*) memset::str#6
|
||||
(void()) syscall1()
|
||||
(byte*~) syscall1::$0
|
||||
(label) syscall1::@return
|
||||
(void()) syscall2()
|
||||
(byte*~) syscall2::$0
|
||||
(label) syscall2::@return
|
||||
|
||||
Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memset::num#2 > (number) 0
|
||||
Adding number conversion cast (unumber) 0 in (byte) BLACK ← (number) 0
|
||||
Adding number conversion cast (unumber) 1 in (byte) WHITE ← (number) 1
|
||||
Adding number conversion cast (unumber) $14 in *((byte*) VIC_MEMORY) ← (number) $14
|
||||
Adding number conversion cast (unumber) $14 in *((const byte*) VIC_MEMORY) ← (number) $14
|
||||
Adding number conversion cast (unumber) $28*$19 in (word) memset::num#0 ← (number) $28*(number) $19
|
||||
Adding number conversion cast (unumber) $28*$19 in (word) memset::num#1 ← (number) $28*(number) $19
|
||||
Adding number conversion cast (unumber) $28 in (byte*~) main::$2 ← (byte*) SCREEN + (number) $28
|
||||
Adding number conversion cast (unumber) 0 in (bool~) main::$6 ← (number) 0 != *((byte*) main::msg#2)
|
||||
Adding number conversion cast (unumber) $36 in (bool~) main::$3 ← *((byte*) RASTER) == (number) $36
|
||||
Adding number conversion cast (unumber) $42 in (bool~) main::$4 ← *((byte*) RASTER) == (number) $42
|
||||
Adding number conversion cast (unumber) $4f in (byte*~) syscall1::$0 ← (byte*) SCREEN + (number) $4f
|
||||
Adding number conversion cast (unumber) $4e in (byte*~) syscall2::$0 ← (byte*) SCREEN + (number) $4e
|
||||
Adding number conversion cast (unumber) $4c in (byte) JMP ← (number) $4c
|
||||
Adding number conversion cast (unumber) $ea in (byte) NOP ← (number) $ea
|
||||
Adding number conversion cast (unumber) $28 in (byte*) main::sc#0 ← (const byte*) SCREEN+(number) $28
|
||||
Adding number conversion cast (unumber) 0 in (bool~) main::$5 ← (number) 0 != *((byte*) main::msg#2)
|
||||
Adding number conversion cast (unumber) $36 in (bool~) main::$2 ← *((const byte*) RASTER) == (number) $36
|
||||
Adding number conversion cast (unumber) $42 in (bool~) main::$3 ← *((const byte*) RASTER) == (number) $42
|
||||
Adding number conversion cast (unumber) $4f in *((const byte*) SCREEN+(number) $4f) ← (byte) '>'
|
||||
Adding number conversion cast (unumber) $4e in *((const byte*) SCREEN+(number) $4e) ← (byte) '<'
|
||||
Successful SSA optimization PassNAddNumberTypeConversions
|
||||
Inlining cast (byte*~) memset::$2 ← (byte*)(void*) memset::str#3
|
||||
Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#3
|
||||
Inlining cast (byte*) RASTER ← (byte*)(number) $d012
|
||||
Inlining cast (byte*) VIC_MEMORY ← (byte*)(number) $d018
|
||||
Inlining cast (byte*) SCREEN ← (byte*)(number) $400
|
||||
Inlining cast (byte*) BGCOL ← (byte*)(number) $d021
|
||||
Inlining cast (byte*) COLS ← (byte*)(number) $d800
|
||||
Inlining cast (byte) BLACK ← (unumber)(number) 0
|
||||
Inlining cast (byte) WHITE ← (unumber)(number) 1
|
||||
Inlining cast *((byte*) VIC_MEMORY) ← (unumber)(number) $14
|
||||
Inlining cast *((const byte*) VIC_MEMORY) ← (unumber)(number) $14
|
||||
Inlining cast (word) memset::num#0 ← (unumber)(number) $28*(number) $19
|
||||
Inlining cast (word) memset::num#1 ← (unumber)(number) $28*(number) $19
|
||||
Inlining cast (byte) JMP ← (unumber)(number) $4c
|
||||
Inlining cast (byte) NOP ← (unumber)(number) $ea
|
||||
Successful SSA optimization Pass2InlineCast
|
||||
Simplifying constant integer cast 0
|
||||
Simplifying constant pointer cast (byte*) 53266
|
||||
Simplifying constant pointer cast (byte*) 53272
|
||||
Simplifying constant pointer cast (byte*) 1024
|
||||
Simplifying constant pointer cast (byte*) 53281
|
||||
Simplifying constant pointer cast (byte*) 55296
|
||||
Simplifying constant integer cast 0
|
||||
Simplifying constant integer cast 1
|
||||
Simplifying constant integer cast $14
|
||||
Simplifying constant integer cast $28
|
||||
Simplifying constant integer cast 0
|
||||
@ -312,12 +278,8 @@ Simplifying constant integer cast $36
|
||||
Simplifying constant integer cast $42
|
||||
Simplifying constant integer cast $4f
|
||||
Simplifying constant integer cast $4e
|
||||
Simplifying constant integer cast $4c
|
||||
Simplifying constant integer cast $ea
|
||||
Successful SSA optimization PassNCastSimplification
|
||||
Finalized unsigned number type (byte) 0
|
||||
Finalized unsigned number type (byte) 0
|
||||
Finalized unsigned number type (byte) 1
|
||||
Finalized unsigned number type (byte) $14
|
||||
Finalized unsigned number type (byte) $28
|
||||
Finalized unsigned number type (byte) 0
|
||||
@ -325,8 +287,6 @@ Finalized unsigned number type (byte) $36
|
||||
Finalized unsigned number type (byte) $42
|
||||
Finalized unsigned number type (byte) $4f
|
||||
Finalized unsigned number type (byte) $4e
|
||||
Finalized unsigned number type (byte) $4c
|
||||
Finalized unsigned number type (byte) $ea
|
||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Inversing boolean not [2] (bool~) memset::$1 ← (word) memset::num#2 <= (byte) 0 from [1] (bool~) memset::$0 ← (word) memset::num#2 > (byte) 0
|
||||
Successful SSA optimization Pass2UnaryNotSimplification
|
||||
@ -339,7 +299,6 @@ 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*) main::sc#0 = (byte*~) main::$2
|
||||
Alias (byte*) main::msg#2 = (byte*) main::msg#3
|
||||
Alias (byte*) main::sc#2 = (byte*) main::sc#3
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
@ -351,55 +310,38 @@ Identical Phi Values (void*) memset::return#0 (void*) memset::str#3
|
||||
Successful SSA optimization Pass2IdenticalPhiElimination
|
||||
Simple Condition (bool~) memset::$1 [3] if((word) memset::num#2<=(byte) 0) goto memset::@1
|
||||
Simple Condition (bool~) memset::$4 [13] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@5
|
||||
Simple Condition (bool~) main::$6 [44] if((byte) 0!=*((byte*) main::msg#2)) goto main::@2
|
||||
Simple Condition (bool~) main::$5 [35] if((byte) 0!=*((byte*) main::msg#2)) goto main::@2
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Rewriting || if()-condition to two if()s [52] (bool~) main::$5 ← (bool~) main::$3 || (bool~) main::$4
|
||||
Rewriting || if()-condition to two if()s [43] (bool~) main::$4 ← (bool~) main::$2 || (bool~) main::$3
|
||||
Successful SSA optimization Pass2ConditionalAndOrRewriting
|
||||
Constant right-side identified [31] (word) memset::num#0 ← (unumber)(number) $28*(number) $19
|
||||
Constant right-side identified [36] (word) memset::num#1 ← (unumber)(number) $28*(number) $19
|
||||
Constant right-side identified [65] (void()*~) $0 ← & (void()) syscall1()
|
||||
Constant right-side identified [66] (void()*~) $1 ← & (void()) syscall2()
|
||||
Constant right-side identified [68] (void()*~) $2 ← & (void()) main()
|
||||
Constant right-side identified [23] (word) memset::num#0 ← (unumber)(number) $28*(number) $19
|
||||
Constant right-side identified [28] (word) memset::num#1 ← (unumber)(number) $28*(number) $19
|
||||
Constant right-side identified [52] (void()*~) $0 ← & (void()) syscall1()
|
||||
Constant right-side identified [53] (void()*~) $1 ← & (void()) syscall2()
|
||||
Constant right-side identified [55] (void()*~) $2 ← & (void()) main()
|
||||
Successful SSA optimization Pass2ConstantRValueConsolidation
|
||||
Constant (const byte*) RASTER = (byte*) 53266
|
||||
Constant (const byte*) VIC_MEMORY = (byte*) 53272
|
||||
Constant (const byte*) SCREEN = (byte*) 1024
|
||||
Constant (const byte*) BGCOL = (byte*) 53281
|
||||
Constant (const byte*) COLS = (byte*) 55296
|
||||
Constant (const byte) BLACK = 0
|
||||
Constant (const byte) WHITE = 1
|
||||
Constant (const byte[]) MESSAGE = $3
|
||||
Constant (const void*) memset::str#0 = (void*)SCREEN
|
||||
Constant (const byte) memset::c#0 = ' '
|
||||
Constant (const word) memset::num#0 = (unumber)$28*$19
|
||||
Constant (const void*) memset::str#1 = (void*)COLS
|
||||
Constant (const byte) memset::c#1 = WHITE
|
||||
Constant (const word) memset::num#1 = (unumber)$28*$19
|
||||
Constant (const byte) JMP = $4c
|
||||
Constant (const byte) NOP = $ea
|
||||
Constant (const byte*) main::sc#0 = SCREEN+$28
|
||||
Constant (const byte*) main::msg#0 = MESSAGE
|
||||
Constant (const void()*) $0 = &syscall1
|
||||
Constant (const void()*) $1 = &syscall2
|
||||
Constant (const void()*) $2 = &main
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const void*) memset::str#0 = (void*)SCREEN
|
||||
Constant (const void*) memset::str#1 = (void*)COLS
|
||||
Constant (const byte) memset::c#1 = WHITE
|
||||
Constant (const byte*) main::msg#0 = MESSAGE
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
if() condition always true - replacing block destination [49] if(true) goto main::@8
|
||||
if() condition always true - replacing block destination [40] if(true) goto main::@8
|
||||
Successful SSA optimization Pass2ConstantIfs
|
||||
Converting *(pointer+n) to pointer[n] [58] *((byte*~) syscall1::$0) ← (byte) '>' -- *(SCREEN + $4f)
|
||||
Converting *(pointer+n) to pointer[n] [61] *((byte*~) syscall2::$0) ← (byte) '<' -- *(SCREEN + $4e)
|
||||
Successful SSA optimization Pass2InlineDerefIdx
|
||||
Eliminating unused variable (void*) memset::return#2 and assignment [12] (void*) memset::return#2 ← (void*) memset::str#3
|
||||
Eliminating unused variable (void*) memset::return#3 and assignment [14] (void*) memset::return#3 ← (void*) memset::str#3
|
||||
Eliminating unused variable (byte*~) syscall1::$0 and assignment [27] (byte*~) syscall1::$0 ← (const byte*) SCREEN + (byte) $4f
|
||||
Eliminating unused variable (byte*~) syscall2::$0 and assignment [30] (byte*~) syscall2::$0 ← (const byte*) SCREEN + (byte) $4e
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Removing unused block main::@return
|
||||
Successful SSA optimization Pass2EliminateUnusedBlocks
|
||||
Simple Condition (bool~) main::$3 [21] if(*((const byte*) RASTER)==(byte) $36) goto main::@10
|
||||
Simple Condition (bool~) main::$4 [31] if(*((const byte*) RASTER)==(byte) $42) goto main::@10
|
||||
Simple Condition (bool~) main::$2 [20] if(*((const byte*) RASTER)==(byte) $36) goto main::@10
|
||||
Simple Condition (bool~) main::$3 [30] if(*((const byte*) RASTER)==(byte) $42) goto main::@10
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant right-side identified [13] (byte*) main::sc#0 ← (const byte*) SCREEN + (byte) $28
|
||||
Successful SSA optimization Pass2ConstantRValueConsolidation
|
||||
Identified constant from value list (struct SysCall) { xjmp: (const byte) JMP, syscall: (const void()*) $0, xnop: (const byte) NOP }
|
||||
Identified constant from value list (struct SysCall) { xjmp: (const byte) JMP, syscall: (const void()*) $1, xnop: (const byte) NOP }
|
||||
Identified constant from value list (struct SysCall) { xjmp: (const byte) JMP, syscall: (const void()*) $2, xnop: (const byte) NOP }
|
||||
@ -407,21 +349,20 @@ Successful SSA optimization Pass2ConstantInitializerValueLists
|
||||
Identified constant from value list (struct SysCall[]) { { xjmp: (const byte) JMP, syscall: (const void()*) $0, xnop: (const byte) NOP }, { xjmp: (const byte) JMP, syscall: (const void()*) $1, xnop: (const byte) NOP } }
|
||||
Identified constant from value list (struct SysCall[]) { { xjmp: (const byte) JMP, syscall: (const void()*) $2, xnop: (const byte) NOP } }
|
||||
Successful SSA optimization Pass2ConstantInitializerValueLists
|
||||
Constant (const byte*) main::sc#0 = SCREEN+$28
|
||||
Constant (const struct SysCall[]) SYSCALLS = { { xjmp: JMP, syscall: $0, xnop: NOP }, { xjmp: JMP, syscall: $1, xnop: NOP } }
|
||||
Constant (const struct SysCall[]) SYSCALL_RESET = { { xjmp: JMP, syscall: $2, xnop: NOP } }
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Inlining Noop Cast [2] (byte*~) memset::$2 ← (byte*)(void*) memset::str#3 keeping memset::str#3
|
||||
Inlining Noop Cast [4] (byte*) memset::dst#0 ← (byte*)(void*) memset::str#3 keeping memset::str#3
|
||||
Successful SSA optimization Pass2NopCastInlining
|
||||
Inlining constant with var siblings (const void*) memset::str#0
|
||||
Inlining constant with var siblings (const byte) memset::c#0
|
||||
Inlining constant with var siblings (const word) memset::num#0
|
||||
Inlining constant with var siblings (const word) memset::num#1
|
||||
Inlining constant with var siblings (const void*) memset::str#0
|
||||
Inlining constant with var siblings (const void*) memset::str#1
|
||||
Inlining constant with var siblings (const byte) memset::c#1
|
||||
Inlining constant with var siblings (const byte*) main::msg#0
|
||||
Inlining constant with var siblings (const word) memset::num#1
|
||||
Inlining constant with var siblings (const byte*) main::sc#0
|
||||
Inlining constant with var siblings (const byte*) main::msg#0
|
||||
Constant inlined memset::str#1 = (void*)(const byte*) COLS
|
||||
Constant inlined memset::str#0 = (void*)(const byte*) SCREEN
|
||||
Constant inlined main::msg#0 = (const byte[]) MESSAGE
|
||||
@ -433,13 +374,8 @@ Constant inlined memset::c#1 = (const byte) WHITE
|
||||
Constant inlined $0 = &(void()) syscall1()
|
||||
Constant inlined $1 = &(void()) syscall2()
|
||||
Constant inlined $2 = &(void()) main()
|
||||
Constant inlined $3 = (const byte[]) MESSAGE
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Consolidated array index constant in *(SCREEN+$4f)
|
||||
Consolidated array index constant in *(SCREEN+$4e)
|
||||
Successful SSA optimization Pass2ConstantAdditionElimination
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @4
|
||||
Adding NOP phi() at start of @7
|
||||
Adding NOP phi() at start of @8
|
||||
Adding NOP phi() at start of @end
|
||||
@ -448,15 +384,14 @@ Adding NOP phi() at start of main::@18
|
||||
Adding NOP phi() at start of main::@7
|
||||
Adding NOP phi() at start of memset::@1
|
||||
CALL GRAPH
|
||||
Calls in [] to main:3
|
||||
Calls in [main] to memset:7 memset:9
|
||||
Calls in [] to main:2
|
||||
Calls in [main] to memset:6 memset:8
|
||||
|
||||
Created 6 initial phi equivalence classes
|
||||
Coalesced [21] main::msg#4 ← main::msg#1
|
||||
Coalesced [22] main::sc#4 ← main::sc#1
|
||||
Coalesced [33] memset::dst#5 ← memset::dst#1
|
||||
Coalesced [20] main::msg#4 ← main::msg#1
|
||||
Coalesced [21] main::sc#4 ← main::sc#1
|
||||
Coalesced [32] memset::dst#5 ← memset::dst#1
|
||||
Coalesced down to 6 phi equivalence classes
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) @8
|
||||
Culled Empty Block (label) main::@18
|
||||
Culled Empty Block (label) main::@7
|
||||
@ -1219,11 +1154,11 @@ FINAL SYMBOL TABLE
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte*) BGCOL = (byte*) 53281
|
||||
(const byte) BLACK = (byte) 0
|
||||
(const byte) BLACK = (number) 0
|
||||
(const byte*) COLS = (byte*) 55296
|
||||
(const byte) JMP = (byte) $4c
|
||||
(const byte) JMP = (number) $4c
|
||||
(const byte[]) MESSAGE = (string) "hello world!"
|
||||
(const byte) NOP = (byte) $ea
|
||||
(const byte) NOP = (number) $ea
|
||||
(const byte*) RASTER = (byte*) 53266
|
||||
(const byte*) SCREEN = (byte*) 1024
|
||||
(const struct SysCall[]) SYSCALLS = { { xjmp: (const byte) JMP, syscall: &(void()) syscall1(), xnop: (const byte) NOP }, { xjmp: (const byte) JMP, syscall: &(void()) syscall2(), xnop: (const byte) NOP } }
|
||||
@ -1232,7 +1167,7 @@ FINAL SYMBOL TABLE
|
||||
(byte) SysCall::xjmp
|
||||
(byte) SysCall::xnop
|
||||
(const byte*) VIC_MEMORY = (byte*) 53272
|
||||
(const byte) WHITE = (byte) 1
|
||||
(const byte) WHITE = (number) 1
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
|
@ -2,11 +2,11 @@
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte*) BGCOL = (byte*) 53281
|
||||
(const byte) BLACK = (byte) 0
|
||||
(const byte) BLACK = (number) 0
|
||||
(const byte*) COLS = (byte*) 55296
|
||||
(const byte) JMP = (byte) $4c
|
||||
(const byte) JMP = (number) $4c
|
||||
(const byte[]) MESSAGE = (string) "hello world!"
|
||||
(const byte) NOP = (byte) $ea
|
||||
(const byte) NOP = (number) $ea
|
||||
(const byte*) RASTER = (byte*) 53266
|
||||
(const byte*) SCREEN = (byte*) 1024
|
||||
(const struct SysCall[]) SYSCALLS = { { xjmp: (const byte) JMP, syscall: &(void()) syscall1(), xnop: (const byte) NOP }, { xjmp: (const byte) JMP, syscall: &(void()) syscall2(), xnop: (const byte) NOP } }
|
||||
@ -15,7 +15,7 @@
|
||||
(byte) SysCall::xjmp
|
||||
(byte) SysCall::xnop
|
||||
(const byte*) VIC_MEMORY = (byte*) 53272
|
||||
(const byte) WHITE = (byte) 1
|
||||
(const byte) WHITE = (number) 1
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
|
@ -36,7 +36,7 @@ SYMBOL TABLE SSA
|
||||
(bool~) main::$1
|
||||
(label) main::@2
|
||||
(label) main::@return
|
||||
(const byte) main::b = (number) $c
|
||||
(const byte) main::b = (byte) $c
|
||||
(const byte*) main::screen = (byte*)(number) $400
|
||||
|
||||
Adding number conversion cast (unumber) 0 in (bool~) main::$1 ← (number) 0 != (const byte) main::b
|
||||
|
@ -41,7 +41,7 @@ SYMBOL TABLE SSA
|
||||
(bool~) main::$1
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
(const byte) main::BLACK = (number) 0
|
||||
(const byte) main::BLACK = (byte) 0
|
||||
(const byte*) main::cols = (byte*)(number) $d800
|
||||
(const byte*) main::screen = (byte*)(number) $400
|
||||
(byte) main::x
|
||||
@ -324,7 +324,7 @@ FINAL SYMBOL TABLE
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
(const byte) main::BLACK = (number) 0
|
||||
(const byte) main::BLACK = (byte) 0
|
||||
(const byte*) main::cols = (byte*) 55296
|
||||
(const byte*) main::screen = (byte*) 1024
|
||||
(byte) main::x
|
||||
|
@ -4,7 +4,7 @@
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
(const byte) main::BLACK = (number) 0
|
||||
(const byte) main::BLACK = (byte) 0
|
||||
(const byte*) main::cols = (byte*) 55296
|
||||
(const byte*) main::screen = (byte*) 1024
|
||||
(byte) main::x
|
||||
|
@ -3,7 +3,7 @@
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
main: {
|
||||
.const b = 6*$e/3+mod($16,3)
|
||||
.const b = $19
|
||||
.label screen = $400
|
||||
lda #b
|
||||
sta screen
|
||||
|
@ -26,7 +26,7 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
(const byte) main::b = (number) 6*(number) $e/(number) 3+(number) $16%(number) 3
|
||||
(const byte) main::b = (byte) $19
|
||||
(const byte*) main::screen = (byte*)(number) $400
|
||||
|
||||
Adding number conversion cast (unumber) 0 in *((const byte*) main::screen + (number) 0) ← (const byte) main::b
|
||||
@ -103,7 +103,7 @@ __bend_from___b1:
|
||||
__bend:
|
||||
// main
|
||||
main: {
|
||||
.const b = 6*$e/3+mod($16,3)
|
||||
.const b = $19
|
||||
.label screen = $400
|
||||
// [4] *((const byte*) main::screen) ← (const byte) main::b -- _deref_pbuc1=vbuc2
|
||||
lda #b
|
||||
@ -150,7 +150,7 @@ __bend_from___b1:
|
||||
__bend:
|
||||
// main
|
||||
main: {
|
||||
.const b = 6*$e/3+mod($16,3)
|
||||
.const b = $19
|
||||
.label screen = $400
|
||||
// [4] *((const byte*) main::screen) ← (const byte) main::b -- _deref_pbuc1=vbuc2
|
||||
lda #b
|
||||
@ -188,7 +188,7 @@ FINAL SYMBOL TABLE
|
||||
(label) @end
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
(const byte) main::b = (number) 6*(number) $e/(number) 3+(number) $16%(number) 3
|
||||
(const byte) main::b = (byte) $19
|
||||
(const byte*) main::screen = (byte*) 1024
|
||||
|
||||
|
||||
@ -211,7 +211,7 @@ Score: 12
|
||||
// @end
|
||||
// main
|
||||
main: {
|
||||
.const b = 6*$e/3+mod($16,3)
|
||||
.const b = $19
|
||||
.label screen = $400
|
||||
// screen[0] = b
|
||||
// [4] *((const byte*) main::screen) ← (const byte) main::b -- _deref_pbuc1=vbuc2
|
||||
|
@ -3,6 +3,6 @@
|
||||
(label) @end
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
(const byte) main::b = (number) 6*(number) $e/(number) 3+(number) $16%(number) 3
|
||||
(const byte) main::b = (byte) $19
|
||||
(const byte*) main::screen = (byte*) 1024
|
||||
|
||||
|
@ -45,7 +45,7 @@ SYMBOL TABLE SSA
|
||||
(byte*) BGCOL#0
|
||||
(byte*) BGCOL#1
|
||||
(byte*) BGCOL#2
|
||||
(const byte) RED = (number) 2
|
||||
(const byte) RED = (byte) 2
|
||||
(const byte*) SCREEN = (byte*)(number) $400
|
||||
(const byte) STAR = (number) $51
|
||||
(const byte*) VIC = (byte*)(number) $d000
|
||||
@ -332,7 +332,7 @@ FINAL SYMBOL TABLE
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(const byte) RED = (number) 2
|
||||
(const byte) RED = (byte) 2
|
||||
(const byte*) SCREEN = (byte*) 1024
|
||||
(const byte) STAR = (number) $51
|
||||
(const byte*) VIC = (byte*) 53248
|
||||
|
@ -2,7 +2,7 @@
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(const byte) RED = (number) 2
|
||||
(const byte) RED = (byte) 2
|
||||
(const byte*) SCREEN = (byte*) 1024
|
||||
(const byte) STAR = (number) $51
|
||||
(const byte*) VIC = (byte*) 53248
|
||||
|
@ -824,7 +824,7 @@ SYMBOL TABLE SSA
|
||||
(label) test_bytes::@2
|
||||
(label) test_bytes::@3
|
||||
(label) test_bytes::@return
|
||||
(const byte) test_bytes::bb = (number) 0
|
||||
(const byte) test_bytes::bb = (byte) 0
|
||||
(byte) test_bytes::bc
|
||||
(byte) test_bytes::bc#0
|
||||
(byte) test_bytes::bc#1
|
||||
@ -844,7 +844,7 @@ SYMBOL TABLE SSA
|
||||
(label) test_sbytes::@4
|
||||
(label) test_sbytes::@5
|
||||
(label) test_sbytes::@return
|
||||
(const signed byte) test_sbytes::bb = (number) 0
|
||||
(const signed byte) test_sbytes::bb = (signed byte) 0
|
||||
(signed byte) test_sbytes::bc
|
||||
(signed byte) test_sbytes::bc#0
|
||||
(signed byte) test_sbytes::bc#1
|
||||
@ -3066,7 +3066,7 @@ FINAL SYMBOL TABLE
|
||||
(label) test_bytes::@1
|
||||
(label) test_bytes::@2
|
||||
(label) test_bytes::@return
|
||||
(const byte) test_bytes::bb = (number) 0
|
||||
(const byte) test_bytes::bb = (byte) 0
|
||||
(byte) test_bytes::bc
|
||||
(const byte) test_bytes::bc#0 bc = (byte) 2
|
||||
(byte) test_bytes::bd
|
||||
@ -3078,7 +3078,7 @@ FINAL SYMBOL TABLE
|
||||
(label) test_sbytes::@3
|
||||
(label) test_sbytes::@4
|
||||
(label) test_sbytes::@return
|
||||
(const signed byte) test_sbytes::bb = (number) 0
|
||||
(const signed byte) test_sbytes::bb = (signed byte) 0
|
||||
(signed byte) test_sbytes::bc
|
||||
(const signed byte) test_sbytes::bc#0 bc = (signed byte) 2
|
||||
(signed byte) test_sbytes::bd
|
||||
|
@ -92,7 +92,7 @@
|
||||
(label) test_bytes::@1
|
||||
(label) test_bytes::@2
|
||||
(label) test_bytes::@return
|
||||
(const byte) test_bytes::bb = (number) 0
|
||||
(const byte) test_bytes::bb = (byte) 0
|
||||
(byte) test_bytes::bc
|
||||
(const byte) test_bytes::bc#0 bc = (byte) 2
|
||||
(byte) test_bytes::bd
|
||||
@ -104,7 +104,7 @@
|
||||
(label) test_sbytes::@3
|
||||
(label) test_sbytes::@4
|
||||
(label) test_sbytes::@return
|
||||
(const signed byte) test_sbytes::bb = (number) 0
|
||||
(const signed byte) test_sbytes::bb = (signed byte) 0
|
||||
(signed byte) test_sbytes::bc
|
||||
(const signed byte) test_sbytes::bc#0 bc = (signed byte) 2
|
||||
(signed byte) test_sbytes::bd
|
||||
|
@ -6,8 +6,6 @@ Adding struct value list initializer (byte) bar_thing1 ← (byte) 'a'
|
||||
Adding struct value list initializer (byte) bar_thing2 ← (byte) 'b'
|
||||
Rewriting struct pointer member access *((struct foo*) main::barp).thing1
|
||||
Rewriting struct pointer member access *((struct foo*) main::barp).thing2
|
||||
Identified constant variable (byte) foo::thing1
|
||||
Identified constant variable (byte) foo::thing2
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -48,6 +46,8 @@ SYMBOL TABLE SSA
|
||||
(struct foo) bar notregister
|
||||
(byte) bar_thing1 notregister
|
||||
(byte) bar_thing2 notregister
|
||||
(byte) foo::thing1
|
||||
(byte) foo::thing2
|
||||
(void()) main()
|
||||
(struct foo*~) main::$0
|
||||
(byte*) main::$1
|
||||
@ -144,6 +144,8 @@ main::@return: scope:[main] from main
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte) bar_thing1 notregister 20.0
|
||||
(byte) bar_thing2 notregister 20.0
|
||||
(byte) foo::thing1
|
||||
(byte) foo::thing2
|
||||
(void()) main()
|
||||
(struct foo*) main::barp
|
||||
(byte) main::i
|
||||
@ -301,6 +303,8 @@ FINAL SYMBOL TABLE
|
||||
(const byte) OFFSET_STRUCT_FOO_THING2 = (byte) 1
|
||||
(byte) bar_thing1 notregister mem[1] 20.0
|
||||
(byte) bar_thing2 notregister mem[1] 20.0
|
||||
(byte) foo::thing1
|
||||
(byte) foo::thing2
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
(const byte*) main::SCREEN = (byte*) 1024
|
||||
|
@ -4,6 +4,8 @@
|
||||
(const byte) OFFSET_STRUCT_FOO_THING2 = (byte) 1
|
||||
(byte) bar_thing1 notregister mem[1] 20.0
|
||||
(byte) bar_thing2 notregister mem[1] 20.0
|
||||
(byte) foo::thing1
|
||||
(byte) foo::thing2
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
(const byte*) main::SCREEN = (byte*) 1024
|
||||
|
@ -11,8 +11,6 @@ Adding struct value list initializer (byte[$c]) bar_thing3 ← (string) "qwe"
|
||||
Rewriting struct pointer member access *((struct foo*) main::barp).thing1
|
||||
Rewriting struct pointer member access *((struct foo*) main::barp).thing2
|
||||
Rewriting struct pointer member access *((struct foo*) main::barp).thing3
|
||||
Identified constant variable (byte) foo::thing1
|
||||
Identified constant variable (byte) foo::thing2
|
||||
Culled Empty Block (label) main::@2
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@ -70,6 +68,9 @@ SYMBOL TABLE SSA
|
||||
(byte) bar_thing1 notregister
|
||||
(byte) bar_thing2 notregister
|
||||
(byte[$c]) bar_thing3 notregister
|
||||
(byte) foo::thing1
|
||||
(byte) foo::thing2
|
||||
(byte[$c]) foo::thing3
|
||||
(void()) main()
|
||||
(struct foo*~) main::$0
|
||||
(bool~) main::$1
|
||||
@ -217,6 +218,9 @@ VARIABLE REGISTER WEIGHTS
|
||||
(byte) bar_thing1 notregister 20.0
|
||||
(byte) bar_thing2 notregister 20.0
|
||||
(byte[$c]) bar_thing3 notregister 20.0
|
||||
(byte) foo::thing1
|
||||
(byte) foo::thing2
|
||||
(byte[$c]) foo::thing3
|
||||
(void()) main()
|
||||
(struct foo*) main::barp
|
||||
(byte) main::i
|
||||
@ -484,6 +488,9 @@ FINAL SYMBOL TABLE
|
||||
(byte) bar_thing1 notregister mem[1] 20.0
|
||||
(byte) bar_thing2 notregister mem[1] 20.0
|
||||
(byte[$c]) bar_thing3 notregister zp[2]:2 20.0
|
||||
(byte) foo::thing1
|
||||
(byte) foo::thing2
|
||||
(byte[$c]) foo::thing3
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
|
@ -7,6 +7,9 @@
|
||||
(byte) bar_thing1 notregister mem[1] 20.0
|
||||
(byte) bar_thing2 notregister mem[1] 20.0
|
||||
(byte[$c]) bar_thing3 notregister zp[2]:2 20.0
|
||||
(byte) foo::thing1
|
||||
(byte) foo::thing2
|
||||
(byte[$c]) foo::thing3
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
|
@ -5,8 +5,6 @@ Adding struct value list initializer (byte) bar_thing1 ← (byte) 'a'
|
||||
Adding struct value list initializer (byte) bar_thing2 ← (byte) 'b'
|
||||
Replacing struct member reference (struct foo) bar.thing1 with member unwinding reference (byte) bar_thing1
|
||||
Replacing struct member reference (struct foo) bar.thing2 with member unwinding reference (byte) bar_thing2
|
||||
Identified constant variable (byte) foo::thing1
|
||||
Identified constant variable (byte) foo::thing2
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -39,6 +37,8 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(byte) bar_thing1 notregister
|
||||
(byte) bar_thing2 notregister
|
||||
(byte) foo::thing1
|
||||
(byte) foo::thing2
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
(const byte*) main::SCREEN = (byte*)(number) $400
|
||||
@ -112,6 +112,8 @@ main::@return: scope:[main] from main
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte) bar_thing1 notregister 1.3333333333333333
|
||||
(byte) bar_thing2 notregister 1.3333333333333333
|
||||
(byte) foo::thing1
|
||||
(byte) foo::thing2
|
||||
(void()) main()
|
||||
(byte) main::i
|
||||
|
||||
@ -263,6 +265,8 @@ FINAL SYMBOL TABLE
|
||||
(label) @end
|
||||
(byte) bar_thing1 notregister mem[1] 1.3333333333333333
|
||||
(byte) bar_thing2 notregister mem[1] 1.3333333333333333
|
||||
(byte) foo::thing1
|
||||
(byte) foo::thing2
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
(const byte*) main::SCREEN = (byte*) 1024
|
||||
|
@ -3,6 +3,8 @@
|
||||
(label) @end
|
||||
(byte) bar_thing1 notregister mem[1] 1.3333333333333333
|
||||
(byte) bar_thing2 notregister mem[1] 1.3333333333333333
|
||||
(byte) foo::thing1
|
||||
(byte) foo::thing2
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
(const byte*) main::SCREEN = (byte*) 1024
|
||||
|
@ -2,8 +2,8 @@
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
main: {
|
||||
.const a = $ee6b2800
|
||||
.label SCREEN = $400
|
||||
.const a = $ee6b2800
|
||||
.label b = 2
|
||||
ldx #0
|
||||
__b1:
|
||||
|
@ -7,17 +7,15 @@ CONTROL FLOW GRAPH SSA
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @1
|
||||
(dword) main::a ← (number) $ee6b2800
|
||||
(byte) main::i#0 ← (byte) 0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@1
|
||||
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
|
||||
(dword~) main::$0 ← (dword) main::a + (byte) main::i#2
|
||||
(dword~) main::$0 ← (const dword) main::a + (byte) main::i#2
|
||||
(dword) main::b#0 ← (dword~) main::$0
|
||||
(byte~) main::$1 ← ((byte)) (dword) main::b#0
|
||||
(byte) main::c#0 ← (byte~) main::$1
|
||||
(byte*) main::SCREEN ← ((byte*)) (number) $400
|
||||
*((byte*) main::SCREEN + (byte) main::i#2) ← (byte) main::c#0
|
||||
*((const byte*) main::SCREEN + (byte) main::i#2) ← (byte) main::c#0
|
||||
(byte) main::i#1 ← (byte) main::i#2 + rangenext(0,$64)
|
||||
(bool~) main::$2 ← (byte) main::i#1 != rangelast(0,$64)
|
||||
if((bool~) main::$2) goto main::@1
|
||||
@ -43,8 +41,8 @@ SYMBOL TABLE SSA
|
||||
(bool~) main::$2
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
(byte*) main::SCREEN
|
||||
(dword) main::a
|
||||
(const byte*) main::SCREEN = (byte*)(number) $400
|
||||
(const dword) main::a = (dword) $ee6b2800
|
||||
(dword) main::b
|
||||
(dword) main::b#0
|
||||
(byte) main::c
|
||||
@ -54,28 +52,19 @@ SYMBOL TABLE SSA
|
||||
(byte) main::i#1
|
||||
(byte) main::i#2
|
||||
|
||||
Adding number conversion cast (unumber) $ee6b2800 in (dword) main::a ← (number) $ee6b2800
|
||||
Successful SSA optimization PassNAddNumberTypeConversions
|
||||
Inlining cast (dword) main::a ← (unumber)(number) $ee6b2800
|
||||
Inlining cast (byte~) main::$1 ← (byte)(dword) main::b#0
|
||||
Inlining cast (byte*) main::SCREEN ← (byte*)(number) $400
|
||||
Successful SSA optimization Pass2InlineCast
|
||||
Simplifying constant integer cast $ee6b2800
|
||||
Simplifying constant pointer cast (byte*) 1024
|
||||
Successful SSA optimization PassNCastSimplification
|
||||
Finalized unsigned number type (dword) $ee6b2800
|
||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Alias (dword) main::b#0 = (dword~) main::$0
|
||||
Alias (byte) main::c#0 = (byte~) main::$1
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Simple Condition (bool~) main::$2 [11] if((byte) main::i#1!=rangelast(0,$64)) goto main::@1
|
||||
Simple Condition (bool~) main::$2 [9] if((byte) main::i#1!=rangelast(0,$64)) goto main::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const dword) main::a = $ee6b2800
|
||||
Constant (const byte) main::i#0 = 0
|
||||
Constant (const byte*) main::SCREEN = (byte*) 1024
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Resolved ranged next value [9] main::i#1 ← ++ main::i#2 to ++
|
||||
Resolved ranged comparison value [11] if(main::i#1!=rangelast(0,$64)) goto main::@1 to (number) $65
|
||||
Resolved ranged next value [7] main::i#1 ← ++ main::i#2 to ++
|
||||
Resolved ranged comparison value [9] if(main::i#1!=rangelast(0,$64)) goto main::@1 to (number) $65
|
||||
Adding number conversion cast (unumber) $65 in if((byte) main::i#1!=(number) $65) goto main::@1
|
||||
Successful SSA optimization PassNAddNumberTypeConversions
|
||||
Simplifying constant integer cast $65
|
||||
@ -180,8 +169,8 @@ __bend_from___b1:
|
||||
__bend:
|
||||
// main
|
||||
main: {
|
||||
.const a = $ee6b2800
|
||||
.label SCREEN = $400
|
||||
.const a = $ee6b2800
|
||||
.label b = 3
|
||||
.label c = 7
|
||||
.label i = 2
|
||||
@ -275,8 +264,8 @@ __bend_from___b1:
|
||||
__bend:
|
||||
// main
|
||||
main: {
|
||||
.const a = $ee6b2800
|
||||
.label SCREEN = $400
|
||||
.const a = $ee6b2800
|
||||
.label b = 2
|
||||
// [5] phi from main to main::@1 [phi:main->main::@1]
|
||||
__b1_from_main:
|
||||
@ -386,8 +375,8 @@ Score: 471
|
||||
// @end
|
||||
// main
|
||||
main: {
|
||||
.const a = $ee6b2800
|
||||
.label SCREEN = $400
|
||||
.const a = $ee6b2800
|
||||
.label b = 2
|
||||
// [5] phi from main to main::@1 [phi:main->main::@1]
|
||||
// [5] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1
|
||||
|
@ -5,8 +5,6 @@ Adding struct value list initializer (byte) main::button_color ← (const byte)
|
||||
Adding struct value list initializer (byte) main::button_size ← (number) $18
|
||||
Replacing struct member reference (struct Button) main::button.color with member unwinding reference (byte) main::button_color
|
||||
Replacing struct member reference (struct Button) main::button.size with member unwinding reference (byte) main::button_size
|
||||
Identified constant variable (byte) Button::color
|
||||
Identified constant variable (byte) Button::size
|
||||
Identified constant variable (byte) main::button_color
|
||||
Identified constant variable (byte) main::button_size
|
||||
|
||||
@ -34,6 +32,8 @@ SYMBOL TABLE SSA
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte) Button::color
|
||||
(byte) Button::size
|
||||
(const byte) Color::GREEN = (byte) 1
|
||||
(const byte) Color::RED = (byte) 0
|
||||
(const byte) RED = (byte) 0
|
||||
@ -41,7 +41,7 @@ SYMBOL TABLE SSA
|
||||
(label) main::@return
|
||||
(const byte*) main::SCREEN = (byte*)(number) $400
|
||||
(const byte) main::button_color = (const byte) RED
|
||||
(const byte) main::button_size = (number) $18
|
||||
(const byte) main::button_size = (byte) $18
|
||||
|
||||
Adding number conversion cast (unumber) 0 in *((const byte*) main::SCREEN + (number) 0) ← (const byte) main::button_color
|
||||
Adding number conversion cast (unumber) 1 in *((const byte*) main::SCREEN + (number) 1) ← (const byte) main::button_size
|
||||
@ -95,6 +95,8 @@ main::@return: scope:[main] from main
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte) Button::color
|
||||
(byte) Button::size
|
||||
(void()) main()
|
||||
|
||||
Initial phi equivalence classes
|
||||
@ -221,13 +223,15 @@ FINAL SYMBOL TABLE
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte) Button::color
|
||||
(byte) Button::size
|
||||
(const byte) Color::GREEN = (byte) 1
|
||||
(const byte) Color::RED = (byte) 0
|
||||
(const byte) RED = (byte) 0
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
(const byte*) main::SCREEN = (byte*) 1024
|
||||
(const byte) main::button_size = (number) $18
|
||||
(const byte) main::button_size = (byte) $18
|
||||
|
||||
|
||||
|
||||
|
@ -1,11 +1,13 @@
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte) Button::color
|
||||
(byte) Button::size
|
||||
(const byte) Color::GREEN = (byte) 1
|
||||
(const byte) Color::RED = (byte) 0
|
||||
(const byte) RED = (byte) 0
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
(const byte*) main::SCREEN = (byte*) 1024
|
||||
(const byte) main::button_size = (number) $18
|
||||
(const byte) main::button_size = (byte) $18
|
||||
|
||||
|
@ -5,8 +5,6 @@ Adding struct value list initializer (byte) main::button_color ← (const byte)
|
||||
Adding struct value list initializer (byte) main::button_size ← (number) $18
|
||||
Replacing struct member reference (struct Button) main::button.color with member unwinding reference (byte) main::button_color
|
||||
Replacing struct member reference (struct Button) main::button.size with member unwinding reference (byte) main::button_size
|
||||
Identified constant variable (byte) Button::color
|
||||
Identified constant variable (byte) Button::size
|
||||
Identified constant variable (byte) main::button_color
|
||||
Identified constant variable (byte) main::button_size
|
||||
|
||||
@ -36,12 +34,14 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(const byte) Button::$0::GREEN = (number) 5
|
||||
(const byte) Button::$0::RED = (number) 2
|
||||
(byte) Button::color
|
||||
(byte) Button::size
|
||||
(const byte) RED = (number) 2
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
(const byte*) main::SCREEN = (byte*)(number) $400
|
||||
(const byte) main::button_color = (const byte) RED
|
||||
(const byte) main::button_size = (number) $18
|
||||
(const byte) main::button_size = (byte) $18
|
||||
|
||||
Adding number conversion cast (unumber) 0 in *((const byte*) main::SCREEN + (number) 0) ← (const byte) main::button_color
|
||||
Adding number conversion cast (unumber) 1 in *((const byte*) main::SCREEN + (number) 1) ← (const byte) main::button_size
|
||||
@ -97,6 +97,8 @@ main::@return: scope:[main] from main
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte) Button::color
|
||||
(byte) Button::size
|
||||
(void()) main()
|
||||
|
||||
Initial phi equivalence classes
|
||||
@ -223,11 +225,13 @@ FINAL SYMBOL TABLE
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte) Button::color
|
||||
(byte) Button::size
|
||||
(const byte) RED = (number) 2
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
(const byte*) main::SCREEN = (byte*) 1024
|
||||
(const byte) main::button_size = (number) $18
|
||||
(const byte) main::button_size = (byte) $18
|
||||
|
||||
|
||||
|
||||
|
@ -1,9 +1,11 @@
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte) Button::color
|
||||
(byte) Button::size
|
||||
(const byte) RED = (number) 2
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
(const byte*) main::SCREEN = (byte*) 1024
|
||||
(const byte) main::button_size = (number) $18
|
||||
(const byte) main::button_size = (byte) $18
|
||||
|
||||
|
@ -2150,7 +2150,7 @@ SYMBOL TABLE SSA
|
||||
(signed byte) sy#7
|
||||
(signed byte) sy#8
|
||||
(signed byte) sy#9
|
||||
(const signed byte) sz = (number) 0
|
||||
(const signed byte) sz = (signed byte) 0
|
||||
(const signed byte*) xp = (signed byte*)(number) $f4
|
||||
(signed byte[8]) xps
|
||||
(const signed byte*) xr = (signed byte*)(number) $f0
|
||||
@ -9747,7 +9747,7 @@ FINAL SYMBOL TABLE
|
||||
(signed byte) sy
|
||||
(signed byte) sy#10 sy zp[1]:3 0.3846153846153846
|
||||
(signed byte) sy#3 sy zp[1]:3 22.0
|
||||
(const signed byte) sz = (number) 0
|
||||
(const signed byte) sz = (signed byte) 0
|
||||
(const signed byte*) xp = (signed byte*) 244
|
||||
(const signed byte[8]) xps = { fill( 8, 0) }
|
||||
(const signed byte*) xr = (signed byte*) 240
|
||||
|
@ -429,7 +429,7 @@
|
||||
(signed byte) sy
|
||||
(signed byte) sy#10 sy zp[1]:3 0.3846153846153846
|
||||
(signed byte) sy#3 sy zp[1]:3 22.0
|
||||
(const signed byte) sz = (number) 0
|
||||
(const signed byte) sz = (signed byte) 0
|
||||
(const signed byte*) xp = (signed byte*) 244
|
||||
(const signed byte[8]) xps = { fill( 8, 0) }
|
||||
(const signed byte*) xr = (signed byte*) 240
|
||||
|
@ -1228,7 +1228,7 @@ SYMBOL TABLE SSA
|
||||
(byte) lines::l#2
|
||||
(byte) lines::l#3
|
||||
(byte) lines::l#4
|
||||
(const byte) lines_cnt = (number) 8
|
||||
(const byte) lines_cnt = (byte) 8
|
||||
(byte[]) lines_x
|
||||
(byte[]) lines_y
|
||||
(void()) main()
|
||||
@ -5560,7 +5560,7 @@ FINAL SYMBOL TABLE
|
||||
(byte) lines::l
|
||||
(byte) lines::l#1 l zp[1]:6 202.0
|
||||
(byte) lines::l#2 l zp[1]:6 101.0
|
||||
(const byte) lines_cnt = (number) 8
|
||||
(const byte) lines_cnt = (byte) 8
|
||||
(const byte[]) lines_x = { (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28, (byte) $a, (byte) $28, (byte) $3c }
|
||||
(const byte[]) lines_y = { (byte) $a, (byte) $28, (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28, (byte) $a }
|
||||
(void()) main()
|
||||
|
@ -280,7 +280,7 @@
|
||||
(byte) lines::l
|
||||
(byte) lines::l#1 l zp[1]:6 202.0
|
||||
(byte) lines::l#2 l zp[1]:6 101.0
|
||||
(const byte) lines_cnt = (number) 8
|
||||
(const byte) lines_cnt = (byte) 8
|
||||
(const byte[]) lines_x = { (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28, (byte) $a, (byte) $28, (byte) $3c }
|
||||
(const byte[]) lines_y = { (byte) $a, (byte) $28, (byte) $3c, (byte) $50, (byte) $6e, (byte) $50, (byte) $3c, (byte) $28, (byte) $a }
|
||||
(void()) main()
|
||||
|
@ -415,7 +415,7 @@ SYMBOL TABLE SSA
|
||||
(byte*) init_screen::COLS#2
|
||||
(byte*) init_screen::COLS#3
|
||||
(byte*) init_screen::COLS#4
|
||||
(const byte) init_screen::WHITE = (number) 1
|
||||
(const byte) init_screen::WHITE = (byte) 1
|
||||
(byte) init_screen::l
|
||||
(byte) init_screen::l#0
|
||||
(byte) init_screen::l#1
|
||||
@ -2700,7 +2700,7 @@ FINAL SYMBOL TABLE
|
||||
(byte*) init_screen::COLS
|
||||
(byte*) init_screen::COLS#1 COLS zp[2]:10 7.333333333333333
|
||||
(byte*) init_screen::COLS#3 COLS zp[2]:10 13.2
|
||||
(const byte) init_screen::WHITE = (number) 1
|
||||
(const byte) init_screen::WHITE = (byte) 1
|
||||
(byte) init_screen::l
|
||||
(byte) init_screen::l#1 reg byte x 16.5
|
||||
(byte) init_screen::l#2 reg byte x 16.5
|
||||
|
@ -24,7 +24,7 @@
|
||||
(byte*) init_screen::COLS
|
||||
(byte*) init_screen::COLS#1 COLS zp[2]:10 7.333333333333333
|
||||
(byte*) init_screen::COLS#3 COLS zp[2]:10 13.2
|
||||
(const byte) init_screen::WHITE = (number) 1
|
||||
(const byte) init_screen::WHITE = (byte) 1
|
||||
(byte) init_screen::l
|
||||
(byte) init_screen::l#1 reg byte x 16.5
|
||||
(byte) init_screen::l#2 reg byte x 16.5
|
||||
|
@ -26,9 +26,6 @@ Culled Empty Block (label) utoa16n::@5
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) control ← ((byte*)) (number) $d011
|
||||
(byte*) raster ← ((byte*)) (number) $d012
|
||||
(byte*) bordercol ← ((byte*)) (number) $d020
|
||||
to:@2
|
||||
|
||||
(void()) main()
|
||||
@ -42,8 +39,8 @@ main::@1: scope:[main] from main::@15 main::@6
|
||||
if(true) goto main::@4
|
||||
to:main::@return
|
||||
main::@4: scope:[main] from main::@1 main::@4
|
||||
(number~) main::$1 ← *((byte*) control) & (number) $80
|
||||
(byte~) main::$2 ← *((byte*) raster) >> (number) 1
|
||||
(number~) main::$1 ← *((const byte*) control) & (number) $80
|
||||
(byte~) main::$2 ← *((const byte*) raster) >> (number) 1
|
||||
(number~) main::$3 ← (number~) main::$1 | (byte~) main::$2
|
||||
(byte) main::rst#0 ← (number~) main::$3
|
||||
(bool~) main::$4 ← (byte) main::rst#0 != (number) $30
|
||||
@ -51,8 +48,8 @@ main::@4: scope:[main] from main::@1 main::@4
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main::@4
|
||||
(byte*) main::screen#0 ← ((byte*)) (number) $400
|
||||
*((byte*) bordercol) ← (number) 1
|
||||
(byte) main::time_start#0 ← *((byte*) raster)
|
||||
*((const byte*) bordercol) ← (number) 1
|
||||
(byte) main::time_start#0 ← *((const byte*) raster)
|
||||
(word) utoa16w::value#0 ← (number) 0
|
||||
(byte*) utoa16w::dst#0 ← (byte*) main::screen#0
|
||||
call utoa16w
|
||||
@ -60,7 +57,7 @@ main::@5: scope:[main] from main::@4
|
||||
main::@16: scope:[main] from main::@5
|
||||
(byte) main::time_start#5 ← phi( main::@5/(byte) main::time_start#0 )
|
||||
(byte*) main::screen#5 ← phi( main::@5/(byte*) main::screen#0 )
|
||||
*((byte*) bordercol) ← ++ *((byte*) bordercol)
|
||||
*((const byte*) bordercol) ← ++ *((const byte*) bordercol)
|
||||
(byte*) main::screen#1 ← (byte*) main::screen#5 + (number) $28
|
||||
(word) utoa16w::value#1 ← (number) $4d2
|
||||
(byte*) utoa16w::dst#1 ← (byte*) main::screen#1
|
||||
@ -69,7 +66,7 @@ main::@16: scope:[main] from main::@5
|
||||
main::@17: scope:[main] from main::@16
|
||||
(byte) main::time_start#4 ← phi( main::@16/(byte) main::time_start#5 )
|
||||
(byte*) main::screen#6 ← phi( main::@16/(byte*) main::screen#1 )
|
||||
*((byte*) bordercol) ← ++ *((byte*) bordercol)
|
||||
*((const byte*) bordercol) ← ++ *((const byte*) bordercol)
|
||||
(byte*) main::screen#2 ← (byte*) main::screen#6 + (number) $28
|
||||
(word) utoa16w::value#2 ← (number) $162e
|
||||
(byte*) utoa16w::dst#2 ← (byte*) main::screen#2
|
||||
@ -78,7 +75,7 @@ main::@17: scope:[main] from main::@16
|
||||
main::@18: scope:[main] from main::@17
|
||||
(byte) main::time_start#3 ← phi( main::@17/(byte) main::time_start#4 )
|
||||
(byte*) main::screen#7 ← phi( main::@17/(byte*) main::screen#2 )
|
||||
*((byte*) bordercol) ← ++ *((byte*) bordercol)
|
||||
*((const byte*) bordercol) ← ++ *((const byte*) bordercol)
|
||||
(byte*) main::screen#3 ← (byte*) main::screen#7 + (number) $28
|
||||
(word) utoa16w::value#3 ← (number) $270f
|
||||
(byte*) utoa16w::dst#3 ← (byte*) main::screen#3
|
||||
@ -87,7 +84,7 @@ main::@18: scope:[main] from main::@17
|
||||
main::@19: scope:[main] from main::@18
|
||||
(byte) main::time_start#2 ← phi( main::@18/(byte) main::time_start#3 )
|
||||
(byte*) main::screen#8 ← phi( main::@18/(byte*) main::screen#3 )
|
||||
*((byte*) bordercol) ← ++ *((byte*) bordercol)
|
||||
*((const byte*) bordercol) ← ++ *((const byte*) bordercol)
|
||||
(byte*) main::screen#4 ← (byte*) main::screen#8 + (number) $28
|
||||
(word) utoa16w::value#4 ← (number) $e608
|
||||
(byte*) utoa16w::dst#4 ← (byte*) main::screen#4
|
||||
@ -96,8 +93,8 @@ main::@19: scope:[main] from main::@18
|
||||
main::@20: scope:[main] from main::@19
|
||||
(byte*) main::screen#9 ← phi( main::@19/(byte*) main::screen#4 )
|
||||
(byte) main::time_start#1 ← phi( main::@19/(byte) main::time_start#2 )
|
||||
(byte) main::time_end#0 ← *((byte*) raster)
|
||||
*((byte*) bordercol) ← (number) 0
|
||||
(byte) main::time_end#0 ← *((const byte*) raster)
|
||||
*((const byte*) bordercol) ← (number) 0
|
||||
(byte~) main::$14 ← (byte) main::time_end#0 - (byte) main::time_start#1
|
||||
(byte) main::time#0 ← (byte~) main::$14
|
||||
(word~) main::$15 ← ((word)) (byte) main::time#0
|
||||
@ -108,13 +105,12 @@ main::@20: scope:[main] from main::@19
|
||||
to:main::@21
|
||||
main::@21: scope:[main] from main::@20
|
||||
(byte*) main::screen#12 ← phi( main::@20/(byte*) main::screen#9 )
|
||||
(byte[]) main::msg ← (const string) main::$21
|
||||
(byte) main::i#0 ← (number) 0
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@21 main::@7
|
||||
(byte*) main::screen#11 ← phi( main::@21/(byte*) main::screen#12 main::@7/(byte*) main::screen#10 )
|
||||
(byte) main::i#2 ← phi( main::@21/(byte) main::i#0 main::@7/(byte) main::i#1 )
|
||||
(bool~) main::$18 ← *((byte[]) main::msg + (byte) main::i#2) != (number) 0
|
||||
(bool~) main::$18 ← *((const byte[]) main::msg + (byte) main::i#2) != (number) 0
|
||||
if((bool~) main::$18) goto main::@7
|
||||
to:main::@1
|
||||
main::@7: scope:[main] from main::@6
|
||||
@ -122,7 +118,7 @@ main::@7: scope:[main] from main::@6
|
||||
(byte*) main::screen#10 ← phi( main::@6/(byte*) main::screen#11 )
|
||||
(byte*~) main::$19 ← (byte*) main::screen#10 + (number) $50
|
||||
(byte*~) main::$20 ← (byte*~) main::$19 + (number) 3
|
||||
*((byte*~) main::$20 + (byte) main::i#3) ← *((byte[]) main::msg + (byte) main::i#3)
|
||||
*((byte*~) main::$20 + (byte) main::i#3) ← *((const byte[]) main::msg + (byte) main::i#3)
|
||||
(byte) main::i#1 ← ++ (byte) main::i#3
|
||||
to:main::@6
|
||||
main::@return: scope:[main] from main::@1
|
||||
@ -131,9 +127,8 @@ main::@return: scope:[main] from main::@1
|
||||
|
||||
(void()) cls()
|
||||
cls: scope:[cls] from main
|
||||
(byte*) cls::screen ← ((byte*)) (number) $400
|
||||
(byte*~) cls::$0 ← (byte*) cls::screen + (number) $3e7
|
||||
(byte*) cls::sc#0 ← (byte*) cls::screen
|
||||
(byte*~) cls::$0 ← (const byte*) cls::screen + (number) $3e7
|
||||
(byte*) cls::sc#0 ← (const byte*) cls::screen
|
||||
to:cls::@1
|
||||
cls::@1: scope:[cls] from cls cls::@1
|
||||
(byte*) cls::sc#2 ← phi( cls/(byte*) cls::sc#0 cls::@1/(byte*) cls::sc#1 )
|
||||
@ -146,7 +141,6 @@ cls::@return: scope:[cls] from cls::@1
|
||||
return
|
||||
to:@return
|
||||
@2: scope:[] from @begin
|
||||
(byte[]) DIGITS ← (const string) $0
|
||||
(word[]) UTOA10_SUB ← { (number) $7530, (number) $2710, (number) $bb8, (number) $3e8, (number) $12c, (number) $64, (number) $1e, (number) $a }
|
||||
(byte[]) UTOA10_VAL ← { (number) 3, (number) 1, (number) 3, (number) 1, (number) 3, (number) 1, (number) 3, (number) 1 }
|
||||
to:@5
|
||||
@ -223,14 +217,14 @@ utoa10w::@9: scope:[utoa10w] from utoa10w::@8
|
||||
(byte) utoa10w::i#8 ← phi( utoa10w::@8/(byte) utoa10w::i#7 )
|
||||
(byte*) utoa10w::dst#3 ← phi( utoa10w::@8/(byte*) utoa10w::dst#5 )
|
||||
(byte) utoa10w::digit#4 ← phi( utoa10w::@8/(byte) utoa10w::digit#6 )
|
||||
*((byte*) utoa10w::dst#3) ← *((byte[]) DIGITS + (byte) utoa10w::digit#4)
|
||||
*((byte*) utoa10w::dst#3) ← *((const byte[]) DIGITS + (byte) utoa10w::digit#4)
|
||||
(byte*) utoa10w::dst#1 ← ++ (byte*) utoa10w::dst#3
|
||||
to:utoa10w::@11
|
||||
utoa10w::@12: scope:[utoa10w] from utoa10w::@10
|
||||
(byte*) utoa10w::dst#4 ← phi( utoa10w::@10/(byte*) utoa10w::dst#6 )
|
||||
(word) utoa10w::value#4 ← phi( utoa10w::@10/(word) utoa10w::value#6 )
|
||||
(byte~) utoa10w::$0 ← ((byte)) (word) utoa10w::value#4
|
||||
*((byte*) utoa10w::dst#4) ← *((byte[]) DIGITS + (byte~) utoa10w::$0)
|
||||
*((byte*) utoa10w::dst#4) ← *((const byte[]) DIGITS + (byte~) utoa10w::$0)
|
||||
(byte*) utoa10w::dst#2 ← ++ (byte*) utoa10w::dst#4
|
||||
*((byte*) utoa10w::dst#2) ← (number) 0
|
||||
to:utoa10w::@return
|
||||
@ -335,7 +329,7 @@ utoa16n::@4: scope:[utoa16n] from utoa16n::@1
|
||||
(byte) utoa16n::started#8 ← phi( utoa16n::@1/(byte) utoa16n::started#5 )
|
||||
(word**) utoa16n::dst#4 ← phi( utoa16n::@1/(word**) utoa16n::dst#5 )
|
||||
(byte) utoa16n::nybble#5 ← phi( utoa16n::@1/(byte) utoa16n::nybble#6 )
|
||||
*(*((word**) utoa16n::dst#4)) ← *((byte[]) DIGITS + (byte) utoa16n::nybble#5)
|
||||
*(*((word**) utoa16n::dst#4)) ← *((const byte[]) DIGITS + (byte) utoa16n::nybble#5)
|
||||
*((word**) utoa16n::dst#4) ← ++ *((word**) utoa16n::dst#4)
|
||||
to:utoa16n::@2
|
||||
utoa16n::@return: scope:[utoa16n] from utoa16n::@2
|
||||
@ -351,17 +345,16 @@ utoa16n::@return: scope:[utoa16n] from utoa16n::@2
|
||||
@end: scope:[] from @6
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(const string) $0 = (string) "0123456789abcdef"
|
||||
(label) @2
|
||||
(label) @5
|
||||
(label) @6
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte[]) DIGITS
|
||||
(const byte[]) DIGITS = (string) "0123456789abcdef"
|
||||
(const byte) SIZEOF_WORD = (byte) 2
|
||||
(word[]) UTOA10_SUB
|
||||
(byte[]) UTOA10_VAL
|
||||
(byte*) bordercol
|
||||
(const byte*) bordercol = (byte*)(number) $d020
|
||||
(void()) cls()
|
||||
(byte*~) cls::$0
|
||||
(bool~) cls::$1
|
||||
@ -371,8 +364,8 @@ SYMBOL TABLE SSA
|
||||
(byte*) cls::sc#0
|
||||
(byte*) cls::sc#1
|
||||
(byte*) cls::sc#2
|
||||
(byte*) cls::screen
|
||||
(byte*) control
|
||||
(const byte*) cls::screen = (byte*)(number) $400
|
||||
(const byte*) control = (byte*)(number) $d011
|
||||
(void()) main()
|
||||
(number~) main::$1
|
||||
(byte~) main::$14
|
||||
@ -382,7 +375,6 @@ SYMBOL TABLE SSA
|
||||
(byte*~) main::$19
|
||||
(byte~) main::$2
|
||||
(byte*~) main::$20
|
||||
(const string) main::$21 = (string) "raster lines"
|
||||
(number~) main::$3
|
||||
(bool~) main::$4
|
||||
(label) main::@1
|
||||
@ -403,7 +395,7 @@ SYMBOL TABLE SSA
|
||||
(byte) main::i#1
|
||||
(byte) main::i#2
|
||||
(byte) main::i#3
|
||||
(byte[]) main::msg
|
||||
(const byte[]) main::msg = (string) "raster lines"
|
||||
(byte) main::rst
|
||||
(byte) main::rst#0
|
||||
(byte*) main::screen
|
||||
@ -431,7 +423,7 @@ SYMBOL TABLE SSA
|
||||
(byte) main::time_start#3
|
||||
(byte) main::time_start#4
|
||||
(byte) main::time_start#5
|
||||
(byte*) raster
|
||||
(const byte*) raster = (byte*)(number) $d012
|
||||
(void()) utoa10w((word) utoa10w::value , (byte*) utoa10w::dst)
|
||||
(byte~) utoa10w::$0
|
||||
(bool~) utoa10w::$1
|
||||
@ -603,12 +595,12 @@ SYMBOL TABLE SSA
|
||||
(word) utoa16w::value#7
|
||||
(word) utoa16w::value#8
|
||||
|
||||
Adding number conversion cast (unumber) $80 in (number~) main::$1 ← *((byte*) control) & (number) $80
|
||||
Adding number conversion cast (unumber) main::$1 in (number~) main::$1 ← *((byte*) control) & (unumber)(number) $80
|
||||
Adding number conversion cast (unumber) 1 in (byte~) main::$2 ← *((byte*) raster) >> (number) 1
|
||||
Adding number conversion cast (unumber) $80 in (number~) main::$1 ← *((const byte*) control) & (number) $80
|
||||
Adding number conversion cast (unumber) main::$1 in (number~) main::$1 ← *((const byte*) control) & (unumber)(number) $80
|
||||
Adding number conversion cast (unumber) 1 in (byte~) main::$2 ← *((const byte*) raster) >> (number) 1
|
||||
Adding number conversion cast (unumber) main::$3 in (number~) main::$3 ← (unumber~) main::$1 | (byte~) main::$2
|
||||
Adding number conversion cast (unumber) $30 in (bool~) main::$4 ← (byte) main::rst#0 != (number) $30
|
||||
Adding number conversion cast (unumber) 1 in *((byte*) bordercol) ← (number) 1
|
||||
Adding number conversion cast (unumber) 1 in *((const byte*) bordercol) ← (number) 1
|
||||
Adding number conversion cast (unumber) 0 in (word) utoa16w::value#0 ← (number) 0
|
||||
Adding number conversion cast (unumber) $28 in (byte*) main::screen#1 ← (byte*) main::screen#5 + (number) $28
|
||||
Adding number conversion cast (unumber) $4d2 in (word) utoa16w::value#1 ← (number) $4d2
|
||||
@ -618,13 +610,13 @@ Adding number conversion cast (unumber) $28 in (byte*) main::screen#3 ← (byte*
|
||||
Adding number conversion cast (unumber) $270f in (word) utoa16w::value#3 ← (number) $270f
|
||||
Adding number conversion cast (unumber) $28 in (byte*) main::screen#4 ← (byte*) main::screen#8 + (number) $28
|
||||
Adding number conversion cast (unumber) $e608 in (word) utoa16w::value#4 ← (number) $e608
|
||||
Adding number conversion cast (unumber) 0 in *((byte*) bordercol) ← (number) 0
|
||||
Adding number conversion cast (unumber) 0 in *((const byte*) bordercol) ← (number) 0
|
||||
Adding number conversion cast (unumber) $50 in (byte*~) main::$16 ← (byte*) main::screen#9 + (number) $50
|
||||
Adding number conversion cast (unumber) 0 in (byte) main::i#0 ← (number) 0
|
||||
Adding number conversion cast (unumber) 0 in (bool~) main::$18 ← *((byte[]) main::msg + (byte) main::i#2) != (number) 0
|
||||
Adding number conversion cast (unumber) 0 in (bool~) main::$18 ← *((const byte[]) main::msg + (byte) main::i#2) != (number) 0
|
||||
Adding number conversion cast (unumber) $50 in (byte*~) main::$19 ← (byte*) main::screen#10 + (number) $50
|
||||
Adding number conversion cast (unumber) 3 in (byte*~) main::$20 ← (byte*~) main::$19 + (number) 3
|
||||
Adding number conversion cast (unumber) $3e7 in (byte*~) cls::$0 ← (byte*) cls::screen + (number) $3e7
|
||||
Adding number conversion cast (unumber) $3e7 in (byte*~) cls::$0 ← (const byte*) cls::screen + (number) $3e7
|
||||
Adding number conversion cast (unumber) 0 in (byte) utoa10w::bStarted#0 ← (number) 0
|
||||
Adding number conversion cast (unumber) 0 in (byte) utoa10w::digit#0 ← (number) 0
|
||||
Adding number conversion cast (unumber) 1 in (byte) utoa10w::bStarted#1 ← (number) 1
|
||||
@ -650,20 +642,16 @@ Successful SSA optimization PassNAddNumberTypeConversions
|
||||
Added casts to value list in (word[]) UTOA10_SUB ← (word[]){ (word)(number) $7530, (word)(number) $2710, (word)(number) $bb8, (word)(number) $3e8, (word)(number) $12c, (word)(number) $64, (word)(number) $1e, (word)(number) $a }
|
||||
Added casts to value list in (byte[]) UTOA10_VAL ← (byte[]){ (byte)(number) 3, (byte)(number) 1, (byte)(number) 3, (byte)(number) 1, (byte)(number) 3, (byte)(number) 1, (byte)(number) 3, (byte)(number) 1 }
|
||||
Successful SSA optimization PassNAddInitializerValueListTypeCasts
|
||||
Inlining cast (byte*) control ← (byte*)(number) $d011
|
||||
Inlining cast (byte*) raster ← (byte*)(number) $d012
|
||||
Inlining cast (byte*) bordercol ← (byte*)(number) $d020
|
||||
Inlining cast (byte*) main::screen#0 ← (byte*)(number) $400
|
||||
Inlining cast *((byte*) bordercol) ← (unumber)(number) 1
|
||||
Inlining cast *((const byte*) bordercol) ← (unumber)(number) 1
|
||||
Inlining cast (word) utoa16w::value#0 ← (unumber)(number) 0
|
||||
Inlining cast (word) utoa16w::value#1 ← (unumber)(number) $4d2
|
||||
Inlining cast (word) utoa16w::value#2 ← (unumber)(number) $162e
|
||||
Inlining cast (word) utoa16w::value#3 ← (unumber)(number) $270f
|
||||
Inlining cast (word) utoa16w::value#4 ← (unumber)(number) $e608
|
||||
Inlining cast *((byte*) bordercol) ← (unumber)(number) 0
|
||||
Inlining cast *((const byte*) bordercol) ← (unumber)(number) 0
|
||||
Inlining cast (word~) main::$15 ← (word)(byte) main::time#0
|
||||
Inlining cast (byte) main::i#0 ← (unumber)(number) 0
|
||||
Inlining cast (byte*) cls::screen ← (byte*)(number) $400
|
||||
Inlining cast (byte) utoa10w::bStarted#0 ← (unumber)(number) 0
|
||||
Inlining cast (byte) utoa10w::digit#0 ← (unumber)(number) 0
|
||||
Inlining cast (byte) utoa10w::bStarted#1 ← (unumber)(number) 1
|
||||
@ -678,6 +666,7 @@ Successful SSA optimization Pass2InlineCast
|
||||
Simplifying constant pointer cast (byte*) 53265
|
||||
Simplifying constant pointer cast (byte*) 53266
|
||||
Simplifying constant pointer cast (byte*) 53280
|
||||
Simplifying constant pointer cast (byte*) 1024
|
||||
Simplifying constant integer cast $80
|
||||
Simplifying constant integer cast 1
|
||||
Simplifying constant integer cast $30
|
||||
@ -698,7 +687,6 @@ Simplifying constant integer cast 0
|
||||
Simplifying constant integer cast 0
|
||||
Simplifying constant integer cast $50
|
||||
Simplifying constant integer cast 3
|
||||
Simplifying constant pointer cast (byte*) 1024
|
||||
Simplifying constant integer cast $3e7
|
||||
Simplifying constant integer cast $7530
|
||||
Simplifying constant integer cast $2710
|
||||
@ -774,15 +762,15 @@ Finalized unsigned number type (byte) 0
|
||||
Finalized unsigned number type (byte) 0
|
||||
Finalized unsigned number type (byte) 1
|
||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Inferred type updated to byte in (unumber~) main::$1 ← *((byte*) control) & (byte) $80
|
||||
Inferred type updated to byte in (unumber~) main::$1 ← *((const byte*) control) & (byte) $80
|
||||
Inferred type updated to byte in (unumber~) main::$3 ← (byte~) main::$1 | (byte~) main::$2
|
||||
Inferred type updated to byte in (unumber~) utoa10w::$2 ← (byte) utoa10w::i#4 & (byte) 1
|
||||
Inferred type updated to byte in (unumber~) utoa16w::$5 ← (byte~) utoa16w::$4 & (byte) $f
|
||||
Inferred type updated to byte in (unumber~) utoa16w::$13 ← (byte~) utoa16w::$12 & (byte) $f
|
||||
Inversing boolean not [92] (bool~) utoa10w::$4 ← (byte~) utoa10w::$2 == (byte) 0 from [91] (bool~) utoa10w::$3 ← (byte~) utoa10w::$2 != (byte) 0
|
||||
Inversing boolean not [100] (bool~) utoa10w::$6 ← (byte) utoa10w::bStarted#2 == (byte) 0 from [99] (bool~) utoa10w::$5 ← (byte) utoa10w::bStarted#2 != (byte) 0
|
||||
Inversing boolean not [161] (bool~) utoa16n::$1 ← (byte) utoa16n::nybble#4 == (byte) 0 from [160] (bool~) utoa16n::$0 ← (byte) utoa16n::nybble#4 != (byte) 0
|
||||
Inversing boolean not [165] (bool~) utoa16n::$3 ← (byte) utoa16n::started#5 == (byte) 0 from [164] (bool~) utoa16n::$2 ← (byte) utoa16n::started#5 != (byte) 0
|
||||
Inversing boolean not [86] (bool~) utoa10w::$4 ← (byte~) utoa10w::$2 == (byte) 0 from [85] (bool~) utoa10w::$3 ← (byte~) utoa10w::$2 != (byte) 0
|
||||
Inversing boolean not [94] (bool~) utoa10w::$6 ← (byte) utoa10w::bStarted#2 == (byte) 0 from [93] (bool~) utoa10w::$5 ← (byte) utoa10w::bStarted#2 != (byte) 0
|
||||
Inversing boolean not [155] (bool~) utoa16n::$1 ← (byte) utoa16n::nybble#4 == (byte) 0 from [154] (bool~) utoa16n::$0 ← (byte) utoa16n::nybble#4 != (byte) 0
|
||||
Inversing boolean not [159] (bool~) utoa16n::$3 ← (byte) utoa16n::started#5 == (byte) 0 from [158] (bool~) utoa16n::$2 ← (byte) utoa16n::started#5 != (byte) 0
|
||||
Successful SSA optimization Pass2UnaryNotSimplification
|
||||
Alias (byte) main::rst#0 = (byte~) main::$3
|
||||
Alias (byte*) main::screen#0 = (byte*) main::screen#5
|
||||
@ -796,7 +784,6 @@ Alias (word) utoa10w::value#0 = (word~) main::$15
|
||||
Alias (byte*) utoa10w::dst#0 = (byte*~) main::$16
|
||||
Alias (byte*) main::screen#10 = (byte*) main::screen#11
|
||||
Alias (byte) main::i#2 = (byte) main::i#3
|
||||
Alias (byte*) cls::screen = (byte*) cls::sc#0
|
||||
Alias (byte) utoa10w::digit#3 = (byte) utoa10w::digit#5 (byte) utoa10w::digit#8 (byte) utoa10w::digit#6 (byte) utoa10w::digit#4
|
||||
Alias (byte) utoa10w::i#2 = (byte) utoa10w::i#3 (byte) utoa10w::i#4 (byte) utoa10w::i#7 (byte) utoa10w::i#8
|
||||
Alias (word) utoa10w::value#10 = (word) utoa10w::value#3 (word) utoa10w::value#2 (word) utoa10w::value#8 (word) utoa10w::value#9
|
||||
@ -842,37 +829,34 @@ Identical Phi Values (byte*) main::screen#10 (byte*) main::screen#12
|
||||
Identical Phi Values (word) utoa10w::value#5 (word) utoa10w::value#0
|
||||
Identical Phi Values (byte*) utoa10w::dst#10 (byte*) utoa10w::dst#0
|
||||
Successful SSA optimization Pass2IdenticalPhiElimination
|
||||
Simple Condition (bool~) main::$4 [11] if((byte) main::rst#0!=(byte) $30) goto main::@4
|
||||
Simple Condition (bool~) main::$18 [57] if(*((byte[]) main::msg + (byte) main::i#2)!=(byte) 0) goto main::@7
|
||||
Simple Condition (bool~) cls::$1 [71] if((byte*) cls::sc#1!=rangelast(cls::screen,cls::$0)) goto cls::@1
|
||||
Simple Condition (bool~) utoa10w::$1 [83] if((word) utoa10w::value#10>=*((word[]) UTOA10_SUB + (byte~) utoa10w::$8)) goto utoa10w::@3
|
||||
Simple Condition (bool~) utoa10w::$4 [93] if((byte~) utoa10w::$2==(byte) 0) goto utoa10w::@10
|
||||
Simple Condition (bool~) utoa10w::$7 [97] if((byte) utoa10w::i#1!=rangelast(0,7)) goto utoa10w::@2
|
||||
Simple Condition (bool~) utoa10w::$6 [101] if((byte) utoa10w::bStarted#2==(byte) 0) goto utoa10w::@11
|
||||
Simple Condition (bool~) utoa16n::$1 [162] if((byte) utoa16n::nybble#4==(byte) 0) goto utoa16n::@1
|
||||
Simple Condition (bool~) utoa16n::$3 [166] if((byte) utoa16n::return#4==(byte) 0) goto utoa16n::@2
|
||||
Simple Condition (bool~) main::$4 [8] if((byte) main::rst#0!=(byte) $30) goto main::@4
|
||||
Simple Condition (bool~) main::$18 [53] if(*((const byte[]) main::msg + (byte) main::i#2)!=(byte) 0) goto main::@7
|
||||
Simple Condition (bool~) cls::$1 [66] if((byte*) cls::sc#1!=rangelast(cls::screen,cls::$0)) goto cls::@1
|
||||
Simple Condition (bool~) utoa10w::$1 [77] if((word) utoa10w::value#10>=*((word[]) UTOA10_SUB + (byte~) utoa10w::$8)) goto utoa10w::@3
|
||||
Simple Condition (bool~) utoa10w::$4 [87] if((byte~) utoa10w::$2==(byte) 0) goto utoa10w::@10
|
||||
Simple Condition (bool~) utoa10w::$7 [91] if((byte) utoa10w::i#1!=rangelast(0,7)) goto utoa10w::@2
|
||||
Simple Condition (bool~) utoa10w::$6 [95] if((byte) utoa10w::bStarted#2==(byte) 0) goto utoa10w::@11
|
||||
Simple Condition (bool~) utoa16n::$1 [156] if((byte) utoa16n::nybble#4==(byte) 0) goto utoa16n::@1
|
||||
Simple Condition (bool~) utoa16n::$3 [160] if((byte) utoa16n::return#4==(byte) 0) goto utoa16n::@2
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant right-side identified [117] (word**) utoa16n::dst#0 ← & (byte*) utoa16w::dst#5
|
||||
Constant right-side identified [128] (word**) utoa16n::dst#1 ← & (byte*) utoa16w::dst#5
|
||||
Constant right-side identified [139] (word**) utoa16n::dst#2 ← & (byte*) utoa16w::dst#5
|
||||
Constant right-side identified [150] (word**) utoa16n::dst#3 ← & (byte*) utoa16w::dst#5
|
||||
Constant right-side identified [60] (byte*~) cls::$0 ← (const byte*) cls::screen + (word) $3e7
|
||||
Constant right-side identified [111] (word**) utoa16n::dst#0 ← & (byte*) utoa16w::dst#5
|
||||
Constant right-side identified [122] (word**) utoa16n::dst#1 ← & (byte*) utoa16w::dst#5
|
||||
Constant right-side identified [133] (word**) utoa16n::dst#2 ← & (byte*) utoa16w::dst#5
|
||||
Constant right-side identified [144] (word**) utoa16n::dst#3 ← & (byte*) utoa16w::dst#5
|
||||
Successful SSA optimization Pass2ConstantRValueConsolidation
|
||||
Identified constant from value list (word[]) { (word) $7530, (word) $2710, (word) $bb8, (word) $3e8, (word) $12c, (word) $64, (word) $1e, (word) $a }
|
||||
Identified constant from value list (byte[]) { (byte) 3, (byte) 1, (byte) 3, (byte) 1, (byte) 3, (byte) 1, (byte) 3, (byte) 1 }
|
||||
Successful SSA optimization Pass2ConstantInitializerValueLists
|
||||
Constant (const byte*) control = (byte*) 53265
|
||||
Constant (const byte*) raster = (byte*) 53266
|
||||
Constant (const byte*) bordercol = (byte*) 53280
|
||||
Constant (const byte*) main::screen#0 = (byte*) 1024
|
||||
Constant (const word) utoa16w::value#0 = 0
|
||||
Constant (const word) utoa16w::value#1 = $4d2
|
||||
Constant (const word) utoa16w::value#2 = $162e
|
||||
Constant (const word) utoa16w::value#3 = $270f
|
||||
Constant (const word) utoa16w::value#4 = $e608
|
||||
Constant (const byte[]) main::msg = main::$21
|
||||
Constant (const byte) main::i#0 = 0
|
||||
Constant (const byte*) cls::screen = (byte*) 1024
|
||||
Constant (const byte[]) DIGITS = $0
|
||||
Constant (const byte*) cls::$0 = cls::screen+$3e7
|
||||
Constant (const byte*) cls::sc#0 = cls::screen
|
||||
Constant (const word[]) UTOA10_SUB = { $7530, $2710, $bb8, $3e8, $12c, $64, $1e, $a }
|
||||
Constant (const byte[]) UTOA10_VAL = { 3, 1, 3, 1, 3, 1, 3, 1 }
|
||||
Constant (const byte) utoa10w::bStarted#0 = 0
|
||||
@ -890,38 +874,33 @@ Constant (const byte) utoa16n::started#4 = 1
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte) utoa16n::started#0 = utoa16w::started#0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
if() condition always true - replacing block destination [5] if(true) goto main::@4
|
||||
if() condition always true - replacing block destination [2] if(true) goto main::@4
|
||||
Successful SSA optimization Pass2ConstantIfs
|
||||
Resolved ranged next value [95] utoa10w::i#1 ← ++ utoa10w::i#2 to ++
|
||||
Resolved ranged comparison value [97] if(utoa10w::i#1!=rangelast(0,7)) goto utoa10w::@2 to (number) 8
|
||||
Eliminating unused variable (byte) utoa16w::started#3 and assignment [82] (byte) utoa16w::started#3 ← (byte) utoa16n::return#2
|
||||
Eliminating unused variable (byte) utoa16n::return#3 and assignment [86] (byte) utoa16n::return#3 ← (byte) utoa16n::return#4
|
||||
Resolved ranged next value [64] cls::sc#1 ← ++ cls::sc#2 to ++
|
||||
Resolved ranged comparison value [66] if(cls::sc#1!=rangelast(cls::screen,cls::$0)) goto cls::@1 to (byte*)(const byte*) cls::$0+(number) 1
|
||||
Resolved ranged next value [89] utoa10w::i#1 ← ++ utoa10w::i#2 to ++
|
||||
Resolved ranged comparison value [91] if(utoa10w::i#1!=rangelast(0,7)) goto utoa10w::@2 to (number) 8
|
||||
Eliminating unused variable (byte) utoa16w::started#3 and assignment [81] (byte) utoa16w::started#3 ← (byte) utoa16n::return#2
|
||||
Eliminating unused variable (byte) utoa16n::return#3 and assignment [85] (byte) utoa16n::return#3 ← (byte) utoa16n::return#4
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Eliminating unused variable (byte) utoa16n::return#2 and assignment [81] (byte) utoa16n::return#2 ← (byte) utoa16n::return#4
|
||||
Eliminating unused variable (byte) utoa16n::return#2 and assignment [80] (byte) utoa16n::return#2 ← (byte) utoa16n::return#4
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Removing unused block main::@return
|
||||
Successful SSA optimization Pass2EliminateUnusedBlocks
|
||||
Adding number conversion cast (unumber) 8 in if((byte) utoa10w::i#1!=(number) 8) goto utoa10w::@2
|
||||
Successful SSA optimization PassNAddNumberTypeConversions
|
||||
Simplifying constant integer cast 8
|
||||
Successful SSA optimization PassNCastSimplification
|
||||
Finalized unsigned number type (byte) 8
|
||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Constant right-side identified [11] (byte*) main::screen#1 ← (const byte*) main::screen#0 + (byte) $28
|
||||
Constant right-side identified [38] (byte*~) cls::$0 ← (const byte*) cls::screen + (word) $3e7
|
||||
Successful SSA optimization Pass2ConstantRValueConsolidation
|
||||
Constant (const byte*) main::screen#1 = main::screen#0+$28
|
||||
Constant (const byte*) cls::$0 = cls::screen+$3e7
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Resolved ranged next value [41] cls::sc#1 ← ++ cls::sc#2 to ++
|
||||
Resolved ranged comparison value [42] if(cls::sc#1!=rangelast(cls::screen,cls::$0)) goto cls::@1 to (byte*)(const byte*) cls::$0+(number) 1
|
||||
Adding number conversion cast (unumber) 1 in if((byte*) cls::sc#1!=(byte*)(const byte*) cls::$0+(number) 1) goto cls::@1
|
||||
Adding number conversion cast (unumber) 8 in if((byte) utoa10w::i#1!=(number) 8) goto utoa10w::@2
|
||||
Successful SSA optimization PassNAddNumberTypeConversions
|
||||
Simplifying constant integer cast (const byte*) cls::$0+(unumber)(number) 1
|
||||
Simplifying constant integer cast 1
|
||||
Simplifying constant integer cast 8
|
||||
Successful SSA optimization PassNCastSimplification
|
||||
Finalized unsigned number type (byte) 1
|
||||
Finalized unsigned number type (byte) 8
|
||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Constant right-side identified [11] (byte*) main::screen#1 ← (const byte*) main::screen#0 + (byte) $28
|
||||
Successful SSA optimization Pass2ConstantRValueConsolidation
|
||||
Constant (const byte*) main::screen#1 = main::screen#0+$28
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant right-side identified [14] (byte*) main::screen#2 ← (const byte*) main::screen#1 + (byte) $28
|
||||
Successful SSA optimization Pass2ConstantRValueConsolidation
|
||||
Constant (const byte*) main::screen#2 = main::screen#1+$28
|
||||
@ -953,6 +932,7 @@ Inlining constant with different constant siblings (const byte*) main::screen#1
|
||||
Inlining constant with different constant siblings (const byte*) main::screen#2
|
||||
Inlining constant with different constant siblings (const byte*) main::screen#3
|
||||
Inlining constant with different constant siblings (const byte*) main::screen#12
|
||||
Inlining constant with var siblings (const byte*) cls::sc#0
|
||||
Inlining constant with var siblings (const byte) utoa10w::bStarted#0
|
||||
Inlining constant with var siblings (const byte) utoa10w::digit#0
|
||||
Inlining constant with var siblings (const byte) utoa10w::i#0
|
||||
@ -980,7 +960,6 @@ Constant inlined main::screen#2 = (byte*) 1024+(byte) $28+(byte) $28
|
||||
Constant inlined utoa16w::value#0 = (byte) 0
|
||||
Constant inlined main::screen#3 = (byte*) 1024+(byte) $28+(byte) $28+(byte) $28
|
||||
Constant inlined utoa10w::bStarted#1 = (byte) 1
|
||||
Constant inlined $0 = (const byte[]) DIGITS
|
||||
Constant inlined utoa10w::bStarted#0 = (byte) 0
|
||||
Constant inlined main::screen#12 = (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28
|
||||
Constant inlined utoa16n::started#0 = (byte) 0
|
||||
@ -992,8 +971,8 @@ Constant inlined utoa16n::started#3 = (byte) 1
|
||||
Constant inlined utoa16n::dst#3 = &(byte*) utoa16w::dst#5
|
||||
Constant inlined utoa16n::started#4 = (byte) 1
|
||||
Constant inlined utoa16n::dst#2 = &(byte*) utoa16w::dst#5
|
||||
Constant inlined cls::sc#0 = (const byte*) cls::screen
|
||||
Constant inlined main::$20 = (byte*) 1024+(byte) $28+(byte) $28+(byte) $28+(byte) $28+(byte) $50+(byte) 3
|
||||
Constant inlined main::$21 = (const byte[]) main::msg
|
||||
Constant inlined utoa16w::started#0 = (byte) 0
|
||||
Constant inlined cls::$0 = (const byte*) cls::screen+(word) $3e7
|
||||
Constant inlined utoa10w::i#0 = (byte) 0
|
||||
|
@ -11,7 +11,6 @@ CONTROL FLOW GRAPH SSA
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @1
|
||||
(byte*) main::SCREEN ← ((byte*)) (number) $400
|
||||
(byte) main::idx#0 ← (number) 0
|
||||
(byte) main::i#0 ← (byte) 0
|
||||
to:main::@1
|
||||
@ -20,11 +19,11 @@ main::@1: scope:[main] from main main::@1
|
||||
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
|
||||
(byte~) main::$1 ← (byte) main::i#2 * (const byte) SIZEOF_STRUCT_POINT
|
||||
(byte*) main::$3 ← (byte*)(struct Point[]) points + (const byte) OFFSET_STRUCT_POINT_X
|
||||
*((byte*) main::SCREEN + (byte) main::idx#3) ← *((byte*) main::$3 + (byte~) main::$1)
|
||||
*((const byte*) main::SCREEN + (byte) main::idx#3) ← *((byte*) main::$3 + (byte~) main::$1)
|
||||
(byte) main::idx#1 ← ++ (byte) main::idx#3
|
||||
(byte~) main::$2 ← (byte) main::i#2 * (const byte) SIZEOF_STRUCT_POINT
|
||||
(byte*) main::$4 ← (byte*)(struct Point[]) points + (const byte) OFFSET_STRUCT_POINT_Y
|
||||
*((byte*) main::SCREEN + (byte) main::idx#1) ← *((byte*) main::$4 + (byte~) main::$2)
|
||||
*((const byte*) main::SCREEN + (byte) main::idx#1) ← *((byte*) main::$4 + (byte~) main::$2)
|
||||
(byte) main::idx#2 ← ++ (byte) main::idx#1
|
||||
(byte) main::i#1 ← (byte) main::i#2 + rangenext(0,2)
|
||||
(bool~) main::$0 ← (byte) main::i#1 != rangelast(0,2)
|
||||
@ -58,7 +57,7 @@ SYMBOL TABLE SSA
|
||||
(byte*) main::$4
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
(byte*) main::SCREEN
|
||||
(const byte*) main::SCREEN = (byte*)(number) $400
|
||||
(byte) main::i
|
||||
(byte) main::i#0
|
||||
(byte) main::i#1
|
||||
@ -74,23 +73,22 @@ Adding number conversion cast (unumber) 0 in (byte) main::idx#0 ← (number) 0
|
||||
Successful SSA optimization PassNAddNumberTypeConversions
|
||||
Added casts to value list in (struct Point[]) points ← (struct Point[]){ (struct Point){ (byte)(number) 1, (byte)(number) 2 }, (struct Point){ (byte)(number) 3, (byte)(number) 4 }, (struct Point){ (byte)(number) 5, (byte)(number) 6 } }
|
||||
Successful SSA optimization PassNAddInitializerValueListTypeCasts
|
||||
Inlining cast (byte*) main::SCREEN ← (byte*)(number) $400
|
||||
Inlining cast (byte) main::idx#0 ← (unumber)(number) 0
|
||||
Successful SSA optimization Pass2InlineCast
|
||||
Simplifying constant pointer cast (byte*) 1024
|
||||
Simplifying constant integer cast 1
|
||||
Simplifying constant integer cast 2
|
||||
Simplifying constant integer cast 3
|
||||
Simplifying constant integer cast 4
|
||||
Simplifying constant integer cast 5
|
||||
Simplifying constant integer cast 6
|
||||
Simplifying constant pointer cast (byte*) 1024
|
||||
Simplifying constant integer cast 0
|
||||
Successful SSA optimization PassNCastSimplification
|
||||
Finalized unsigned number type (byte) 0
|
||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Identified duplicate assignment right side [9] (byte~) main::$2 ← (byte) main::i#2 * (const byte) SIZEOF_STRUCT_POINT
|
||||
Identified duplicate assignment right side [8] (byte~) main::$2 ← (byte) main::i#2 * (const byte) SIZEOF_STRUCT_POINT
|
||||
Successful SSA optimization Pass2DuplicateRValueIdentification
|
||||
Simple Condition (bool~) main::$0 [15] if((byte) main::i#1!=rangelast(0,2)) goto main::@1
|
||||
Simple Condition (bool~) main::$0 [14] if((byte) main::i#1!=rangelast(0,2)) goto main::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Identified constant from value list (struct Point) { x: (byte) 1, y: (byte) 2 }
|
||||
Identified constant from value list (struct Point) { x: (byte) 3, y: (byte) 4 }
|
||||
@ -99,16 +97,15 @@ Successful SSA optimization Pass2ConstantInitializerValueLists
|
||||
Identified constant from value list (struct Point[]) { { x: (byte) 1, y: (byte) 2 }, { x: (byte) 3, y: (byte) 4 }, { x: (byte) 5, y: (byte) 6 } }
|
||||
Successful SSA optimization Pass2ConstantInitializerValueLists
|
||||
Constant (const struct Point[]) points = { { x: 1, y: 2 }, { x: 3, y: 4 }, { x: 5, y: 6 } }
|
||||
Constant (const byte*) main::SCREEN = (byte*) 1024
|
||||
Constant (const byte) main::idx#0 = 0
|
||||
Constant (const byte) main::i#0 = 0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant value identified (byte*)points in [6] (byte*) main::$3 ← (byte*)(const struct Point[]) points + (const byte) OFFSET_STRUCT_POINT_X
|
||||
Constant value identified (byte*)points in [10] (byte*) main::$4 ← (byte*)(const struct Point[]) points + (const byte) OFFSET_STRUCT_POINT_Y
|
||||
Constant value identified (byte*)points in [5] (byte*) main::$3 ← (byte*)(const struct Point[]) points + (const byte) OFFSET_STRUCT_POINT_X
|
||||
Constant value identified (byte*)points in [9] (byte*) main::$4 ← (byte*)(const struct Point[]) points + (const byte) OFFSET_STRUCT_POINT_Y
|
||||
Successful SSA optimization Pass2ConstantValues
|
||||
Resolved ranged next value [13] main::i#1 ← ++ main::i#2 to ++
|
||||
Resolved ranged comparison value [15] if(main::i#1!=rangelast(0,2)) goto main::@1 to (number) 3
|
||||
Simplifying expression containing zero (byte*)points in [6] (byte*) main::$3 ← (byte*)(const struct Point[]) points + (const byte) OFFSET_STRUCT_POINT_X
|
||||
Resolved ranged next value [12] main::i#1 ← ++ main::i#2 to ++
|
||||
Resolved ranged comparison value [14] if(main::i#1!=rangelast(0,2)) goto main::@1 to (number) 3
|
||||
Simplifying expression containing zero (byte*)points in [5] (byte*) main::$3 ← (byte*)(const struct Point[]) points + (const byte) OFFSET_STRUCT_POINT_X
|
||||
Successful SSA optimization PassNSimplifyExpressionWithZero
|
||||
Eliminating unused constant (const byte) OFFSET_STRUCT_POINT_X
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
|
@ -13,7 +13,6 @@ CONTROL FLOW GRAPH SSA
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @1
|
||||
(byte*) main::SCREEN ← ((byte*)) (number) $400
|
||||
(byte) main::idx#0 ← (number) 0
|
||||
(byte) main::i#0 ← (byte) 0
|
||||
to:main::@1
|
||||
@ -22,17 +21,17 @@ main::@1: scope:[main] from main main::@1
|
||||
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
|
||||
(byte~) main::$3 ← (byte) main::i#2 * (const byte) SIZEOF_STRUCT_POINT
|
||||
(byte*) main::$6 ← (byte*)(struct Point[]) points + (const byte) OFFSET_STRUCT_POINT_X
|
||||
*((byte*) main::SCREEN + (byte) main::idx#4) ← *((byte*) main::$6 + (byte~) main::$3)
|
||||
*((const byte*) main::SCREEN + (byte) main::idx#4) ← *((byte*) main::$6 + (byte~) main::$3)
|
||||
(byte) main::idx#1 ← ++ (byte) main::idx#4
|
||||
(byte~) main::$4 ← (byte) main::i#2 * (const byte) SIZEOF_STRUCT_POINT
|
||||
(signed word*) main::$7 ← (signed word*)(struct Point[]) points + (const byte) OFFSET_STRUCT_POINT_Y
|
||||
(byte~) main::$0 ← < *((signed word*) main::$7 + (byte~) main::$4)
|
||||
*((byte*) main::SCREEN + (byte) main::idx#1) ← (byte~) main::$0
|
||||
*((const byte*) main::SCREEN + (byte) main::idx#1) ← (byte~) main::$0
|
||||
(byte) main::idx#2 ← ++ (byte) main::idx#1
|
||||
(byte~) main::$5 ← (byte) main::i#2 * (const byte) SIZEOF_STRUCT_POINT
|
||||
(signed word*) main::$8 ← (signed word*)(struct Point[]) points + (const byte) OFFSET_STRUCT_POINT_Y
|
||||
(byte~) main::$1 ← > *((signed word*) main::$8 + (byte~) main::$5)
|
||||
*((byte*) main::SCREEN + (byte) main::idx#2) ← (byte~) main::$1
|
||||
*((const byte*) main::SCREEN + (byte) main::idx#2) ← (byte~) main::$1
|
||||
(byte) main::idx#3 ← ++ (byte) main::idx#2
|
||||
(byte) main::i#1 ← (byte) main::i#2 + rangenext(0,2)
|
||||
(bool~) main::$2 ← (byte) main::i#1 != rangelast(0,2)
|
||||
@ -70,7 +69,7 @@ SYMBOL TABLE SSA
|
||||
(signed word*) main::$8
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
(byte*) main::SCREEN
|
||||
(const byte*) main::SCREEN = (byte*)(number) $400
|
||||
(byte) main::i
|
||||
(byte) main::i#0
|
||||
(byte) main::i#1
|
||||
@ -87,24 +86,23 @@ Adding number conversion cast (unumber) 0 in (byte) main::idx#0 ← (number) 0
|
||||
Successful SSA optimization PassNAddNumberTypeConversions
|
||||
Added casts to value list in (struct Point[]) points ← (struct Point[]){ (struct Point){ (byte)(number) 1, (signed word)(number) 2 }, (struct Point){ (byte)(number) 3, (signed word)(number) 4 }, (struct Point){ (byte)(number) 5, (signed word)(number) 6 } }
|
||||
Successful SSA optimization PassNAddInitializerValueListTypeCasts
|
||||
Inlining cast (byte*) main::SCREEN ← (byte*)(number) $400
|
||||
Inlining cast (byte) main::idx#0 ← (unumber)(number) 0
|
||||
Successful SSA optimization Pass2InlineCast
|
||||
Simplifying constant pointer cast (byte*) 1024
|
||||
Simplifying constant integer cast 1
|
||||
Simplifying constant integer cast 2
|
||||
Simplifying constant integer cast 3
|
||||
Simplifying constant integer cast 4
|
||||
Simplifying constant integer cast 5
|
||||
Simplifying constant integer cast 6
|
||||
Simplifying constant pointer cast (byte*) 1024
|
||||
Simplifying constant integer cast 0
|
||||
Successful SSA optimization PassNCastSimplification
|
||||
Finalized unsigned number type (byte) 0
|
||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Identified duplicate assignment right side [9] (byte~) main::$4 ← (byte) main::i#2 * (const byte) SIZEOF_STRUCT_POINT
|
||||
Identified duplicate assignment right side [14] (byte~) main::$5 ← (byte) main::i#2 * (const byte) SIZEOF_STRUCT_POINT
|
||||
Identified duplicate assignment right side [8] (byte~) main::$4 ← (byte) main::i#2 * (const byte) SIZEOF_STRUCT_POINT
|
||||
Identified duplicate assignment right side [13] (byte~) main::$5 ← (byte) main::i#2 * (const byte) SIZEOF_STRUCT_POINT
|
||||
Successful SSA optimization Pass2DuplicateRValueIdentification
|
||||
Simple Condition (bool~) main::$2 [21] if((byte) main::i#1!=rangelast(0,2)) goto main::@1
|
||||
Simple Condition (bool~) main::$2 [20] if((byte) main::i#1!=rangelast(0,2)) goto main::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Identified constant from value list (struct Point) { x: (byte) 1, y: (signed word) 2 }
|
||||
Identified constant from value list (struct Point) { x: (byte) 3, y: (signed word) 4 }
|
||||
@ -113,17 +111,16 @@ Successful SSA optimization Pass2ConstantInitializerValueLists
|
||||
Identified constant from value list (struct Point[]) { { x: (byte) 1, y: (signed word) 2 }, { x: (byte) 3, y: (signed word) 4 }, { x: (byte) 5, y: (signed word) 6 } }
|
||||
Successful SSA optimization Pass2ConstantInitializerValueLists
|
||||
Constant (const struct Point[]) points = { { x: 1, y: 2 }, { x: 3, y: 4 }, { x: 5, y: 6 } }
|
||||
Constant (const byte*) main::SCREEN = (byte*) 1024
|
||||
Constant (const byte) main::idx#0 = 0
|
||||
Constant (const byte) main::i#0 = 0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant value identified (byte*)points in [6] (byte*) main::$6 ← (byte*)(const struct Point[]) points + (const byte) OFFSET_STRUCT_POINT_X
|
||||
Constant value identified (signed word*)points in [10] (signed word*) main::$7 ← (signed word*)(const struct Point[]) points + (const byte) OFFSET_STRUCT_POINT_Y
|
||||
Constant value identified (signed word*)points in [15] (signed word*) main::$8 ← (signed word*)(const struct Point[]) points + (const byte) OFFSET_STRUCT_POINT_Y
|
||||
Constant value identified (byte*)points in [5] (byte*) main::$6 ← (byte*)(const struct Point[]) points + (const byte) OFFSET_STRUCT_POINT_X
|
||||
Constant value identified (signed word*)points in [9] (signed word*) main::$7 ← (signed word*)(const struct Point[]) points + (const byte) OFFSET_STRUCT_POINT_Y
|
||||
Constant value identified (signed word*)points in [14] (signed word*) main::$8 ← (signed word*)(const struct Point[]) points + (const byte) OFFSET_STRUCT_POINT_Y
|
||||
Successful SSA optimization Pass2ConstantValues
|
||||
Resolved ranged next value [19] main::i#1 ← ++ main::i#2 to ++
|
||||
Resolved ranged comparison value [21] if(main::i#1!=rangelast(0,2)) goto main::@1 to (number) 3
|
||||
Simplifying expression containing zero (byte*)points in [6] (byte*) main::$6 ← (byte*)(const struct Point[]) points + (const byte) OFFSET_STRUCT_POINT_X
|
||||
Resolved ranged next value [18] main::i#1 ← ++ main::i#2 to ++
|
||||
Resolved ranged comparison value [20] if(main::i#1!=rangelast(0,2)) goto main::@1 to (number) 3
|
||||
Simplifying expression containing zero (byte*)points in [5] (byte*) main::$6 ← (byte*)(const struct Point[]) points + (const byte) OFFSET_STRUCT_POINT_X
|
||||
Successful SSA optimization PassNSimplifyExpressionWithZero
|
||||
Eliminating unused constant (const byte) OFFSET_STRUCT_POINT_X
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
|
@ -51,9 +51,9 @@ SYMBOL TABLE SSA
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte) GREEN = (number) 5
|
||||
(const byte) RED = (number) 2
|
||||
(const byte) WHITE = (number) 1
|
||||
(const byte) GREEN = (byte) 5
|
||||
(const byte) RED = (byte) 2
|
||||
(const byte) WHITE = (byte) 1
|
||||
(void()) main()
|
||||
(bool~) main::$0
|
||||
(bool~) main::$1
|
||||
@ -443,9 +443,9 @@ FINAL SYMBOL TABLE
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte) GREEN = (number) 5
|
||||
(const byte) RED = (number) 2
|
||||
(const byte) WHITE = (number) 1
|
||||
(const byte) GREEN = (byte) 5
|
||||
(const byte) RED = (byte) 2
|
||||
(const byte) WHITE = (byte) 1
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
|
@ -1,9 +1,9 @@
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte) GREEN = (number) 5
|
||||
(const byte) RED = (number) 2
|
||||
(const byte) WHITE = (number) 1
|
||||
(const byte) GREEN = (byte) 5
|
||||
(const byte) RED = (byte) 2
|
||||
(const byte) WHITE = (byte) 1
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
|
@ -51,7 +51,7 @@ SYMBOL TABLE SSA
|
||||
(byte) main::i#0
|
||||
(byte) main::i#1
|
||||
(byte) main::i#2
|
||||
(const byte) num = (number) 1
|
||||
(const byte) num = (byte) 1
|
||||
(byte[]) nums
|
||||
(const byte[]) str = (string) "bcde"
|
||||
|
||||
@ -356,7 +356,7 @@ FINAL SYMBOL TABLE
|
||||
(byte) main::i
|
||||
(byte) main::i#1 reg byte x 16.5
|
||||
(byte) main::i#2 reg byte x 22.0
|
||||
(const byte) num = (number) 1
|
||||
(const byte) num = (byte) 1
|
||||
(const byte[]) nums = { (byte) 2, (byte) 3, (byte) 4, (byte) 5 }
|
||||
(const byte[]) str = (string) "bcde"
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
||||
(byte) main::i
|
||||
(byte) main::i#1 reg byte x 16.5
|
||||
(byte) main::i#2 reg byte x 22.0
|
||||
(const byte) num = (number) 1
|
||||
(const byte) num = (byte) 1
|
||||
(const byte[]) nums = { (byte) 2, (byte) 3, (byte) 4, (byte) 5 }
|
||||
(const byte[]) str = (string) "bcde"
|
||||
|
||||
|
@ -28,8 +28,8 @@ SYMBOL TABLE SSA
|
||||
(const byte*) BGCOL = (byte*)(number) $d021
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
(const byte) main::i = (number) 0
|
||||
(const byte) main::i1 = (number) 1
|
||||
(const byte) main::i = (byte) 0
|
||||
(const byte) main::i1 = (byte) 1
|
||||
|
||||
Simplifying constant pointer cast (byte*) 53281
|
||||
Successful SSA optimization PassNCastSimplification
|
||||
@ -194,8 +194,8 @@ FINAL SYMBOL TABLE
|
||||
(const byte*) BGCOL = (byte*) 53281
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
(const byte) main::i = (number) 0
|
||||
(const byte) main::i1 = (number) 1
|
||||
(const byte) main::i = (byte) 0
|
||||
(const byte) main::i1 = (byte) 1
|
||||
|
||||
|
||||
|
||||
|
@ -4,6 +4,6 @@
|
||||
(const byte*) BGCOL = (byte*) 53281
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
(const byte) main::i = (number) 0
|
||||
(const byte) main::i1 = (number) 1
|
||||
(const byte) main::i = (byte) 0
|
||||
(const byte) main::i1 = (byte) 1
|
||||
|
||||
|
@ -433,8 +433,8 @@ SYMBOL TABLE SSA
|
||||
(label) main::@4
|
||||
(label) main::@6
|
||||
(label) main::@return
|
||||
(const word) main::a = (number) $4d2
|
||||
(const word) main::b = (number) $929
|
||||
(const word) main::a = (word) $4d2
|
||||
(const word) main::b = (word) $929
|
||||
(dword) main::r
|
||||
(dword) main::r#0
|
||||
(dword()) mulf16u((word) mulf16u::a , (word) mulf16u::b)
|
||||
@ -2779,8 +2779,8 @@ FINAL SYMBOL TABLE
|
||||
(label) main::@4
|
||||
(label) main::@5
|
||||
(label) main::@6
|
||||
(const word) main::a = (number) $4d2
|
||||
(const word) main::b = (number) $929
|
||||
(const word) main::a = (word) $4d2
|
||||
(const word) main::b = (word) $929
|
||||
(dword) main::r
|
||||
(dword) main::r#0 r zp[4]:14 11.0
|
||||
(dword()) mulf16u((word) mulf16u::a , (word) mulf16u::b)
|
||||
|
@ -15,8 +15,8 @@
|
||||
(label) main::@4
|
||||
(label) main::@5
|
||||
(label) main::@6
|
||||
(const word) main::a = (number) $4d2
|
||||
(const word) main::b = (number) $929
|
||||
(const word) main::a = (word) $4d2
|
||||
(const word) main::b = (word) $929
|
||||
(dword) main::r
|
||||
(dword) main::r#0 r zp[4]:14 11.0
|
||||
(dword()) mulf16u((word) mulf16u::a , (word) mulf16u::b)
|
||||
|
@ -46,7 +46,7 @@ SYMBOL TABLE SSA
|
||||
(label) main::@2
|
||||
(label) main::@return
|
||||
(const byte) main::RED = (number) 2
|
||||
(const byte) main::b1 = (number) $fa
|
||||
(const byte) main::b1 = (byte) $fa
|
||||
(byte) main::b2
|
||||
(byte) main::b2#0
|
||||
(const byte*) main::bgcol = (byte*)(number) $d020
|
||||
@ -290,7 +290,7 @@ FINAL SYMBOL TABLE
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
(const byte) main::RED = (number) 2
|
||||
(const byte) main::b1 = (number) $fa
|
||||
(const byte) main::b1 = (byte) $fa
|
||||
(byte) main::b2
|
||||
(const byte) main::b2#0 b2 = (const byte) main::b1+(byte) $fa
|
||||
(const byte*) main::bgcol = (byte*) 53280
|
||||
|
@ -5,7 +5,7 @@
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
(const byte) main::RED = (number) 2
|
||||
(const byte) main::b1 = (number) $fa
|
||||
(const byte) main::b1 = (byte) $fa
|
||||
(byte) main::b2
|
||||
(const byte) main::b2#0 b2 = (const byte) main::b1+(byte) $fa
|
||||
(const byte*) main::bgcol = (byte*) 53280
|
||||
|
@ -11,7 +11,7 @@ main: {
|
||||
.const dw = $2000
|
||||
.const w1 = dw&$ffff
|
||||
.const w2 = dw+1&$ffff
|
||||
lda #<w1
|
||||
lda #0
|
||||
sta SCREEN
|
||||
lda #>w1
|
||||
sta SCREEN+1
|
||||
|
@ -10,7 +10,7 @@
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @1
|
||||
[4] *((const byte*) SCREEN) ← <(const word) main::w1#0
|
||||
[4] *((const byte*) SCREEN) ← (byte) 0
|
||||
[5] *((const byte*) SCREEN+(byte) 1) ← >(const word) main::w1#0
|
||||
[6] *((const byte*) SCREEN+(byte) 3) ← <(const word) main::w2#0
|
||||
[7] *((const byte*) SCREEN+(byte) 4) ← >(const word) main::w2#0
|
||||
|
@ -45,7 +45,7 @@ SYMBOL TABLE SSA
|
||||
(byte~) main::$5
|
||||
(byte~) main::$6
|
||||
(label) main::@return
|
||||
(const dword) main::dw = (number) $2000
|
||||
(const dword) main::dw = (dword) $2000
|
||||
(word) main::w1
|
||||
(word) main::w1#0
|
||||
(word) main::w2
|
||||
@ -93,6 +93,8 @@ Constant (const word) main::w2#0 = <main::$1
|
||||
Constant (const byte) main::$3 = <main::w1#0
|
||||
Constant (const byte) main::$4 = >main::w1#0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Simplifying constant evaluating to zero <(const word) main::w1#0 in
|
||||
Successful SSA optimization PassNSimplifyConstantZero
|
||||
Constant right-side identified [2] (byte~) main::$5 ← < (const word) main::w2#0
|
||||
Constant right-side identified [4] (byte~) main::$6 ← > (const word) main::w2#0
|
||||
Successful SSA optimization Pass2ConstantRValueConsolidation
|
||||
@ -101,7 +103,7 @@ Constant (const byte) main::$6 = >main::w2#0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant inlined main::$5 = <(const word) main::w2#0
|
||||
Constant inlined main::$6 = >(const word) main::w2#0
|
||||
Constant inlined main::$3 = <(const word) main::w1#0
|
||||
Constant inlined main::$3 = (byte) 0
|
||||
Constant inlined main::$4 = >(const word) main::w1#0
|
||||
Constant inlined main::$1 = (const dword) main::dw+(byte) 1
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
@ -136,7 +138,7 @@ FINAL CONTROL FLOW GRAPH
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @1
|
||||
[4] *((const byte*) SCREEN) ← <(const word) main::w1#0
|
||||
[4] *((const byte*) SCREEN) ← (byte) 0
|
||||
[5] *((const byte*) SCREEN+(byte) 1) ← >(const word) main::w1#0
|
||||
[6] *((const byte*) SCREEN+(byte) 3) ← <(const word) main::w2#0
|
||||
[7] *((const byte*) SCREEN+(byte) 4) ← >(const word) main::w2#0
|
||||
@ -187,8 +189,8 @@ main: {
|
||||
.const dw = $2000
|
||||
.const w1 = dw&$ffff
|
||||
.const w2 = dw+1&$ffff
|
||||
// [4] *((const byte*) SCREEN) ← <(const word) main::w1#0 -- _deref_pbuc1=vbuc2
|
||||
lda #<w1
|
||||
// [4] *((const byte*) SCREEN) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
||||
lda #0
|
||||
sta SCREEN
|
||||
// [5] *((const byte*) SCREEN+(byte) 1) ← >(const word) main::w1#0 -- _deref_pbuc1=vbuc2
|
||||
lda #>w1
|
||||
@ -208,7 +210,7 @@ main: {
|
||||
// File Data
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [4] *((const byte*) SCREEN) ← <(const word) main::w1#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [4] *((const byte*) SCREEN) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [5] *((const byte*) SCREEN+(byte) 1) ← >(const word) main::w1#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [6] *((const byte*) SCREEN+(byte) 3) ← <(const word) main::w2#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [7] *((const byte*) SCREEN+(byte) 4) ← >(const word) main::w2#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
@ -252,8 +254,8 @@ main: {
|
||||
.const dw = $2000
|
||||
.const w1 = dw&$ffff
|
||||
.const w2 = dw+1&$ffff
|
||||
// [4] *((const byte*) SCREEN) ← <(const word) main::w1#0 -- _deref_pbuc1=vbuc2
|
||||
lda #<w1
|
||||
// [4] *((const byte*) SCREEN) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
||||
lda #0
|
||||
sta SCREEN
|
||||
// [5] *((const byte*) SCREEN+(byte) 1) ← >(const word) main::w1#0 -- _deref_pbuc1=vbuc2
|
||||
lda #>w1
|
||||
@ -298,7 +300,7 @@ FINAL SYMBOL TABLE
|
||||
(const byte*) SCREEN = (byte*) 1024
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
(const dword) main::dw = (number) $2000
|
||||
(const dword) main::dw = (dword) $2000
|
||||
(word) main::w1
|
||||
(const word) main::w1#0 w1 = <(const dword) main::dw
|
||||
(word) main::w2
|
||||
@ -333,8 +335,8 @@ main: {
|
||||
.const w1 = dw&$ffff
|
||||
.const w2 = dw+1&$ffff
|
||||
// SCREEN[0] = <w1
|
||||
// [4] *((const byte*) SCREEN) ← <(const word) main::w1#0 -- _deref_pbuc1=vbuc2
|
||||
lda #<w1
|
||||
// [4] *((const byte*) SCREEN) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
||||
lda #0
|
||||
sta SCREEN
|
||||
// SCREEN[1] = >w1
|
||||
// [5] *((const byte*) SCREEN+(byte) 1) ← >(const word) main::w1#0 -- _deref_pbuc1=vbuc2
|
||||
|
@ -4,7 +4,7 @@
|
||||
(const byte*) SCREEN = (byte*) 1024
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
(const dword) main::dw = (number) $2000
|
||||
(const dword) main::dw = (dword) $2000
|
||||
(word) main::w1
|
||||
(const word) main::w1#0 w1 = <(const dword) main::dw
|
||||
(word) main::w2
|
||||
|
@ -4,7 +4,6 @@ Converted struct value to member variables (struct A) aa
|
||||
Adding struct value list initializer (byte) aa_b ← (number) 1
|
||||
Rewriting struct pointer member access *((struct A*) main::a).b
|
||||
Warning! Adding boolean cast to non-boolean sub-expression *((byte*) main::$3)
|
||||
Identified constant variable (byte) A::b
|
||||
Adding versioned struct unwinding for (struct A) aa#0
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@ -46,6 +45,7 @@ SYMBOL TABLE SSA
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte) A::b
|
||||
(const byte) OFFSET_STRUCT_A_B = (byte) 0
|
||||
(struct A) aa
|
||||
(struct A) aa#0
|
||||
@ -142,6 +142,7 @@ main::@return: scope:[main] from main::@1
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte) A::b
|
||||
(struct A) aa
|
||||
(byte) aa_b
|
||||
(byte) aa_b#0 20.0
|
||||
@ -309,6 +310,7 @@ FINAL SYMBOL TABLE
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte) A::b
|
||||
(struct A) aa
|
||||
(byte) aa_b
|
||||
(byte) aa_b#0 aa_b zp[1]:2 20.0
|
||||
|
@ -1,6 +1,7 @@
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte) A::b
|
||||
(struct A) aa
|
||||
(byte) aa_b
|
||||
(byte) aa_b#0 aa_b zp[1]:2 20.0
|
||||
|
@ -7,21 +7,19 @@ CONTROL FLOW GRAPH SSA
|
||||
|
||||
(void()) main()
|
||||
main: scope:[main] from @1
|
||||
(byte*) main::ub_screen ← ((byte*)) (number) $400
|
||||
(byte) main::ub#0 ← (number) $ff
|
||||
(byte*~) main::$0 ← & (byte) main::ub#0
|
||||
(signed byte*~) main::$1 ← ((signed byte*)) (byte*~) main::$0
|
||||
(signed byte*) main::sb_ptr#0 ← (signed byte*~) main::$1
|
||||
*((signed byte*) main::sb_ptr#0) ← (number) 1
|
||||
*((byte*) main::ub_screen) ← (byte) main::ub#0
|
||||
(signed byte*) main::sb_screen ← ((signed byte*)) (number) $428
|
||||
*((const byte*) main::ub_screen) ← (byte) main::ub#0
|
||||
(signed byte~) main::$2 ← ((signed byte)) (number) $7f
|
||||
(signed byte) main::sb#0 ← (signed byte~) main::$2
|
||||
(signed byte*~) main::$3 ← & (signed byte) main::sb#0
|
||||
(byte*~) main::$4 ← ((byte*)) (signed byte*~) main::$3
|
||||
(byte*) main::ub_ptr#0 ← (byte*~) main::$4
|
||||
*((byte*) main::ub_ptr#0) ← (number) 1
|
||||
*((signed byte*) main::sb_screen) ← (signed byte) main::sb#0
|
||||
*((const signed byte*) main::sb_screen) ← (signed byte) main::sb#0
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
return
|
||||
@ -49,30 +47,28 @@ SYMBOL TABLE SSA
|
||||
(signed byte) main::sb#0
|
||||
(signed byte*) main::sb_ptr
|
||||
(signed byte*) main::sb_ptr#0
|
||||
(signed byte*) main::sb_screen
|
||||
(const signed byte*) main::sb_screen = (signed byte*)(number) $428
|
||||
(byte) main::ub
|
||||
(byte) main::ub#0
|
||||
(byte*) main::ub_ptr
|
||||
(byte*) main::ub_ptr#0
|
||||
(byte*) main::ub_screen
|
||||
(const byte*) main::ub_screen = (byte*)(number) $400
|
||||
|
||||
Adding number conversion cast (unumber) $ff in (byte) main::ub#0 ← (number) $ff
|
||||
Adding number conversion cast (snumber) 1 in *((signed byte*) main::sb_ptr#0) ← (number) 1
|
||||
Adding number conversion cast (unumber) 1 in *((byte*) main::ub_ptr#0) ← (number) 1
|
||||
Successful SSA optimization PassNAddNumberTypeConversions
|
||||
Inlining cast (byte*) main::ub_screen ← (byte*)(number) $400
|
||||
Inlining cast (byte) main::ub#0 ← (unumber)(number) $ff
|
||||
Inlining cast (signed byte*~) main::$1 ← (signed byte*)(byte*~) main::$0
|
||||
Inlining cast *((signed byte*) main::sb_ptr#0) ← (snumber)(number) 1
|
||||
Inlining cast (signed byte*) main::sb_screen ← (signed byte*)(number) $428
|
||||
Inlining cast (signed byte~) main::$2 ← (signed byte)(number) $7f
|
||||
Inlining cast (byte*~) main::$4 ← (byte*)(signed byte*~) main::$3
|
||||
Inlining cast *((byte*) main::ub_ptr#0) ← (unumber)(number) 1
|
||||
Successful SSA optimization Pass2InlineCast
|
||||
Simplifying constant pointer cast (byte*) 1024
|
||||
Simplifying constant pointer cast (signed byte*) 1064
|
||||
Simplifying constant integer cast $ff
|
||||
Simplifying constant integer cast 1
|
||||
Simplifying constant pointer cast (signed byte*) 1064
|
||||
Simplifying constant integer cast $7f
|
||||
Simplifying constant integer cast 1
|
||||
Successful SSA optimization PassNCastSimplification
|
||||
@ -85,12 +81,10 @@ Alias (signed byte*) main::sb_ptr#0 = (signed byte*~) main::$1
|
||||
Alias (byte*) main::ub_ptr#0 = (byte*~) main::$4
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Alias candidate removed (volatile)(signed byte) main::sb#0 = (signed byte~) main::$2
|
||||
Constant right-side identified [2] (byte*~) main::$0 ← & (byte) main::ub#0
|
||||
Constant right-side identified [10] (signed byte*~) main::$3 ← & (signed byte) main::sb#0
|
||||
Constant right-side identified [1] (byte*~) main::$0 ← & (byte) main::ub#0
|
||||
Constant right-side identified [8] (signed byte*~) main::$3 ← & (signed byte) main::sb#0
|
||||
Successful SSA optimization Pass2ConstantRValueConsolidation
|
||||
Constant (const byte*) main::ub_screen = (byte*) 1024
|
||||
Constant (const byte*) main::$0 = &main::ub#0
|
||||
Constant (const signed byte*) main::sb_screen = (signed byte*) 1064
|
||||
Constant (const signed byte) main::$2 = $7f
|
||||
Constant (const signed byte*) main::$3 = &main::sb#0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
|
@ -129,13 +129,13 @@ SYMBOL TABLE SSA
|
||||
(signed byte*~) main::$8
|
||||
(signed byte*~) main::$9
|
||||
(label) main::@return
|
||||
(const signed byte) sb = (number) -$29
|
||||
(const signed byte) sb = (signed byte) -$29
|
||||
(const signed byte*) sb_screen = (signed byte*)(number) $428
|
||||
(const signed word) sw = (number) -$3000
|
||||
(const signed word) sw = (signed word) -$3000
|
||||
(const signed word*) sw_screen = (signed word*)(number) $478
|
||||
(const byte) ub = (number) $29
|
||||
(const byte) ub = (byte) $29
|
||||
(const byte*) ub_screen = (byte*)(number) $400
|
||||
(const word) uw = (number) $3000
|
||||
(const word) uw = (word) $3000
|
||||
(const word*) uw_screen = (word*)(number) $450
|
||||
|
||||
Adding number conversion cast (unumber) 1 in (signed byte*~) main::$2 ← (signed byte*~) main::$1 + (number) 1
|
||||
@ -648,13 +648,13 @@ FINAL SYMBOL TABLE
|
||||
(const byte) SIZEOF_WORD = (byte) 2
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
(const signed byte) sb = (number) -$29
|
||||
(const signed byte) sb = (signed byte) -$29
|
||||
(const signed byte*) sb_screen = (signed byte*) 1064
|
||||
(const signed word) sw = (number) -$3000
|
||||
(const signed word) sw = (signed word) -$3000
|
||||
(const signed word*) sw_screen = (signed word*) 1144
|
||||
(const byte) ub = (number) $29
|
||||
(const byte) ub = (byte) $29
|
||||
(const byte*) ub_screen = (byte*) 1024
|
||||
(const word) uw = (number) $3000
|
||||
(const word) uw = (word) $3000
|
||||
(const word*) uw_screen = (word*) 1104
|
||||
|
||||
|
||||
|
@ -5,12 +5,12 @@
|
||||
(const byte) SIZEOF_WORD = (byte) 2
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
(const signed byte) sb = (number) -$29
|
||||
(const signed byte) sb = (signed byte) -$29
|
||||
(const signed byte*) sb_screen = (signed byte*) 1064
|
||||
(const signed word) sw = (number) -$3000
|
||||
(const signed word) sw = (signed word) -$3000
|
||||
(const signed word*) sw_screen = (signed word*) 1144
|
||||
(const byte) ub = (number) $29
|
||||
(const byte) ub = (byte) $29
|
||||
(const byte*) ub_screen = (byte*) 1024
|
||||
(const word) uw = (number) $3000
|
||||
(const word) uw = (word) $3000
|
||||
(const word*) uw_screen = (word*) 1104
|
||||
|
||||
|
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