1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-09-08 17:54:40 +00:00

Implemented type promotion & type checking of all assignments.

This commit is contained in:
jespergravgaard 2017-11-27 00:34:59 +01:00
parent 0d622f978c
commit cd06dd2016
103 changed files with 3670 additions and 3133 deletions

View File

@ -81,6 +81,8 @@ public class Compiler {
program.setGraph(controlFlowGraph); program.setGraph(controlFlowGraph);
new Pass1AddTypePromotions(program).addPromotions();
log.append("INITIAL CONTROL FLOW GRAPH"); log.append("INITIAL CONTROL FLOW GRAPH");
log.append(program.getGraph().toString(program)); log.append(program.getGraph().toString(program));
@ -122,6 +124,7 @@ public class Compiler {
public void pass2AssertSSA(Program program) { public void pass2AssertSSA(Program program) {
List<Pass2SsaAssertion> assertions = new ArrayList<>(); List<Pass2SsaAssertion> assertions = new ArrayList<>();
assertions.add(new Pass2AssertTypeMatch(program));
assertions.add(new Pass2AssertSymbols(program)); assertions.add(new Pass2AssertSymbols(program));
assertions.add(new Pass2AssertBlocks(program)); assertions.add(new Pass2AssertBlocks(program));
assertions.add(new Pass2AssertNoCallParameters(program)); assertions.add(new Pass2AssertNoCallParameters(program));

View File

@ -151,7 +151,7 @@ public class AsmFragment {
} else { } else {
return "$ff & " + getAsmConstant(program, operand, Operator.BOOL_AND.getPrecedence(), codeScope); return "$ff & " + getAsmConstant(program, operand, Operator.BOOL_AND.getPrecedence(), codeScope);
} }
} else if (Operator.CAST_WORD.equals(operator) || Operator.CAST_SWORD.equals(operator)) { } else if (Operator.CAST_WORD.equals(operator) || Operator.CAST_SWORD.equals(operator) || Operator.CAST_PTRBY.equals(operator)) {
SymbolType operandType = SymbolTypeInference.inferType(program.getScope(), operand); SymbolType operandType = SymbolTypeInference.inferType(program.getScope(), operand);
if(SymbolType.isWord(operandType) || SymbolType.isSWord(operandType)) { if(SymbolType.isWord(operandType) || SymbolType.isSWord(operandType)) {
// No cast needed // No cast needed

View File

@ -0,0 +1,4 @@
lda #<{cowo1}
sta {zpwo1}
lda #>{cowo1}
sta {zpwo1}+1

View File

@ -101,6 +101,8 @@ public class Operator {
return CAST_WORD; return CAST_WORD;
} else if (SymbolType.SWORD.equals(castType)) { } else if (SymbolType.SWORD.equals(castType)) {
return CAST_SWORD; return CAST_SWORD;
} else if (castType instanceof SymbolTypePointer && SymbolType.BYTE.equals(((SymbolTypePointer) castType).getElementType())) {
return CAST_PTRBY;
} else { } else {
throw new RuntimeException("Unknown cast type " + castType); throw new RuntimeException("Unknown cast type " + castType);
@ -123,10 +125,11 @@ public class Operator {
public static final Operator DEREF_IDX = new Operator("*idx", "_derefidx_", Type.BINARY, 2); public static final Operator DEREF_IDX = new Operator("*idx", "_derefidx_", Type.BINARY, 2);
public static final Operator SET_LOWBYTE = new Operator("lo=", "_setlo_", Type.BINARY, 2); public static final Operator SET_LOWBYTE = new Operator("lo=", "_setlo_", Type.BINARY, 2);
public static final Operator SET_HIBYTE = new Operator("hi=", "_sethi_", Type.BINARY, 2); public static final Operator SET_HIBYTE = new Operator("hi=", "_sethi_", Type.BINARY, 2);
public static final Operator CAST_BYTE = new Operator("_byte_", "_byte_", Type.UNARY, 2); public static final Operator CAST_BYTE = new Operator("((byte))", "_byte_", Type.UNARY, 2);
public static final Operator CAST_SBYTE = new Operator("_sbyte_", "_sbyte_", Type.UNARY, 2); public static final Operator CAST_SBYTE = new Operator("((signed byte))", "_sbyte_", Type.UNARY, 2);
public static final Operator CAST_WORD = new Operator("_word_", "_word_", Type.UNARY, 2); public static final Operator CAST_WORD = new Operator("((word))", "_word_", Type.UNARY, 2);
public static final Operator CAST_SWORD = new Operator("_sword_", "_sword_", Type.UNARY, 2); public static final Operator CAST_SWORD = new Operator("((signed word))", "_sword_", Type.UNARY, 2);
public static final Operator CAST_PTRBY = new Operator("((byte*))", "_ptrby_", Type.UNARY, 2);
public static final Operator MULTIPLY = new Operator("*", "_mul_", Type.BINARY, 3); public static final Operator MULTIPLY = new Operator("*", "_mul_", Type.BINARY, 3);
public static final Operator DIVIDE = new Operator("/", "_div_", Type.BINARY, 3); public static final Operator DIVIDE = new Operator("/", "_div_", Type.BINARY, 3);
public static final Operator PLUS = new Operator("+", "_plus_", Type.BINARY, 4); public static final Operator PLUS = new Operator("+", "_plus_", Type.BINARY, 4);

View File

@ -3,6 +3,6 @@ package dk.camelot64.kickc.model;
/** A dereferenced pointer */ /** A dereferenced pointer */
public interface PointerDereference extends LValue { public interface PointerDereference extends LValue {
Value getPointer(); RValue getPointer();
} }

View File

@ -15,6 +15,17 @@ public class SymbolTypeInference {
* @return The type of the resulting value * @return The type of the resulting value
*/ */
public static SymbolType inferType(ProgramScope programScope, Operator operator, RValue rValue) { public static SymbolType inferType(ProgramScope programScope, Operator operator, RValue rValue) {
if (operator.equals(Operator.CAST_BYTE)) {
return SymbolType.BYTE;
} else if (operator.equals(Operator.CAST_SBYTE)) {
return SymbolType.SBYTE;
} else if (operator.equals(Operator.CAST_WORD)) {
return SymbolType.WORD;
} else if (operator.equals(Operator.CAST_SWORD)) {
return SymbolType.SWORD;
} else if (operator.equals(Operator.CAST_PTRBY)) {
return new SymbolTypePointer(SymbolType.BYTE);
}
if (rValue instanceof ConstantValue) { if (rValue instanceof ConstantValue) {
ConstantValue value = ConstantValueCalculator.calcValue(programScope, operator, (ConstantValue) rValue); ConstantValue value = ConstantValueCalculator.calcValue(programScope, operator, (ConstantValue) rValue);
if (value != null) { if (value != null) {
@ -72,13 +83,16 @@ public class SymbolTypeInference {
public static SymbolType inferType(SymbolType type1, Operator operator, SymbolType type2) { public static SymbolType inferType(SymbolType type1, Operator operator, SymbolType type2) {
if (operator.equals(Operator.PLUS)) { if (Operator.PLUS.equals(operator)) {
return inferPlus(type1, type2); return inferPlus(type1, type2);
} else if (operator.equals(Operator.MINUS)) { } else if (Operator.MINUS.equals(operator)) {
return inferMinus(type1, type2); return inferMinus(type1, type2);
} else if(Operator.SET_HIBYTE.equals(operator)) {
return type1;
} else if(Operator.SET_LOWBYTE.equals(operator)) {
return type1;
} }
String op = operator.getOperator(); String op = operator.getOperator();
switch (op) { switch (op) {
case "==": case "==":
@ -243,20 +257,20 @@ public class SymbolTypeInference {
} }
public static SymbolType inferType(ProgramScope programScope, RValue rValue) { public static SymbolType inferType(ProgramScope symbols, RValue rValue) {
SymbolType type = null; SymbolType type = null;
if (rValue instanceof VariableRef) { if (rValue instanceof VariableRef) {
Variable variable = programScope.getVariable((VariableRef) rValue); Variable variable = symbols.getVariable((VariableRef) rValue);
type = variable.getType(); type = variable.getType();
} else if (rValue instanceof ConstantRef) { } else if (rValue instanceof ConstantRef) {
ConstantVar constVar = programScope.getConstant((ConstantRef) rValue); ConstantVar constVar = symbols.getConstant((ConstantRef) rValue);
type = constVar.getType(); type = constVar.getType();
} else if (rValue instanceof Symbol) { } else if (rValue instanceof Symbol) {
Symbol rSymbol = (Symbol) rValue; Symbol rSymbol = (Symbol) rValue;
type = rSymbol.getType(); type = rSymbol.getType();
} else if (rValue instanceof ConstantInteger) { } else if (rValue instanceof ConstantInteger) {
ConstantInteger rInt = (ConstantInteger) rValue; ConstantInteger rInt = (ConstantInteger) rValue;
return rInt.getType(programScope); return rInt.getType(symbols);
} else if (rValue instanceof ConstantString) { } else if (rValue instanceof ConstantString) {
type = SymbolType.STRING; type = SymbolType.STRING;
} else if (rValue instanceof ConstantChar) { } else if (rValue instanceof ConstantChar) {
@ -265,12 +279,14 @@ public class SymbolTypeInference {
type = SymbolType.BOOLEAN; type = SymbolType.BOOLEAN;
} else if (rValue instanceof ConstantUnary) { } else if (rValue instanceof ConstantUnary) {
ConstantUnary constUnary = (ConstantUnary) rValue; ConstantUnary constUnary = (ConstantUnary) rValue;
return inferType(programScope, constUnary.getOperator(), constUnary.getOperand()); return inferType(symbols, constUnary.getOperator(), constUnary.getOperand());
} else if (rValue instanceof ConstantBinary) { } else if (rValue instanceof ConstantBinary) {
ConstantBinary constBin = (ConstantBinary) rValue; ConstantBinary constBin = (ConstantBinary) rValue;
return inferType(programScope, constBin.getLeft(), constBin.getOperator(), constBin.getRight()); return inferType(symbols, constBin.getLeft(), constBin.getOperator(), constBin.getRight());
} else if (rValue instanceof PointerDereferenceSimple) { } else if (rValue instanceof ValueArray) {
SymbolType pointerType = inferType(programScope, ((PointerDereferenceSimple) rValue).getPointer()); type = inferTypeArray(symbols, (ValueArray)rValue);
} else if (rValue instanceof PointerDereference) {
SymbolType pointerType = inferType(symbols, ((PointerDereference) rValue).getPointer());
if (pointerType instanceof SymbolTypePointer) { if (pointerType instanceof SymbolTypePointer) {
return ((SymbolTypePointer) pointerType).getElementType(); return ((SymbolTypePointer) pointerType).getElementType();
} else { } else {
@ -283,4 +299,61 @@ public class SymbolTypeInference {
return type; return type;
} }
private static SymbolType inferTypeArray(ProgramScope symbols, ValueArray array) {
SymbolType elmType = null;
for (RValue elm : array.getList()) {
SymbolType type = inferType(symbols, elm);
if(elmType==null) {
elmType = type;
} else {
// element type already defined - check for a match
if(!typeMatch(elmType, type)) {
throw new RuntimeException("Array element has type mismatch "+elm.toString()+" not matching type "+elmType.getTypeName());
}
}
}
if(elmType!=null) {
return new SymbolTypeArray(elmType);
} else {
throw new RuntimeException("Cannot infer array element type "+array.toString());
}
}
public static SymbolType inferTypeRValue(ProgramScope symbols, StatementAssignment assignment) {
SymbolType rValueType;
RValue rValue1 = assignment.getrValue1();
RValue rValue2 = assignment.getrValue2();
if (assignment.getrValue1() == null && assignment.getOperator() == null) {
rValueType = inferType(symbols, rValue2);
} else if (assignment.getrValue1() == null) {
rValueType = inferType(symbols, assignment.getOperator(), rValue2);
} else {
rValueType = inferType(symbols, rValue1, assignment.getOperator(), rValue2);
}
return rValueType;
}
/**
* Determine if lValue and rValue types match (the same types, not needing a cast).
*
* @param lValueType The lValue type
* @param rValueType The rvalue type
* @return true if the types match
*/
public static boolean typeMatch(SymbolType lValueType, SymbolType rValueType) {
if (lValueType.equals(rValueType)) {
// Types match directly
return true;
} else if (rValueType instanceof SymbolTypeInline && ((SymbolTypeInline) rValueType).getTypes().contains(lValueType)) {
// Types match because the right side is a constant that matches the left side
return true;
} else if (lValueType instanceof SymbolTypePointer && rValueType instanceof SymbolTypePointer) {
return typeMatch(((SymbolTypePointer) lValueType).getElementType(), ((SymbolTypePointer) rValueType).getElementType());
} else if (SymbolType.STRING.equals(rValueType)) {
if(lValueType instanceof SymbolTypePointer && SymbolType.isByte(((SymbolTypePointer) lValueType).getElementType())) {
return true;
}
}
return false;
}
} }

View File

@ -0,0 +1,93 @@
package dk.camelot64.kickc.passes;
import dk.camelot64.kickc.model.*;
import java.util.List;
import java.util.ListIterator;
/**
* Add casts in all assignments where types are not equal, but the rValue type can be promoted to the lValue type.
*/
public class Pass1AddTypePromotions {
private Program program;
public Pass1AddTypePromotions(Program program) {
this.program = program;
}
public Program getProgram() {
return program;
}
public ProgramScope getSymbols() {
return program.getScope();
}
public void addPromotions() {
for (ControlFlowBlock block : getProgram().getGraph().getAllBlocks()) {
List<Statement> statements = block.getStatements();
ListIterator<Statement> stmtIt = statements.listIterator();
while (stmtIt.hasNext()) {
Statement statement = stmtIt.next();
if (statement instanceof StatementAssignment) {
getPromotionAssignment((StatementAssignment) statement, stmtIt);
}
// TODO: Implement promotion for calls
}
}
}
/**
* Examines an assignment to determine if a cast of the rValue is needed (the lvalue type and the rvalue type is not equal)
* and possible (the types are promotion compatible).
*
* If a promotion is needed it is added by adding a new tmp-var with a cast and modifying the statement.
*
* @param assignment The assignment to examine
* @param stmtIt Iterator allowing the method to add a tmp-var-assignment.
*/
private void getPromotionAssignment(StatementAssignment assignment, ListIterator<Statement> stmtIt) {
LValue lValue = assignment.getlValue();
SymbolType lValueType = SymbolTypeInference.inferType(getSymbols(), lValue);
SymbolType rValueType = SymbolTypeInference.inferTypeRValue(getSymbols(), assignment);
if (SymbolTypeInference.typeMatch(lValueType, rValueType)) {
return;
}
// No direct type match - attempt promotion
if(canPromote(lValueType, rValueType)) {
// Promotion possible - add tmp-var and a cast
if(assignment.getOperator()==null) {
// No operator - add cast directly!
assignment.setOperator(Operator.getCastUnary(lValueType));
} else {
throw new RuntimeException("Tmp-var promotions not implemented yet "+assignment);
}
} else {
String msg = "ERROR! Type mismatch (" + lValueType.getTypeName() + ") cannot be assigned from (" + rValueType.getTypeName() + "). " +
"In " + assignment.toString(getProgram(), false);
getProgram().getLog().append(msg);
throw new CompileError(msg);
}
}
/**
* Determines if it is possible to promote (cast without loss) one type to another
* @param lValueType The type of the lValue
* @param rValueType The type of the rValue (that will be cast)
* @return True if a cast is possible without any loss
*/
private boolean canPromote(SymbolType lValueType, SymbolType rValueType) {
if(lValueType instanceof SymbolTypePointer && SymbolType.isWord(rValueType)) {
return true;
}
if(lValueType.equals(SymbolType.WORD) && SymbolType.isByte(rValueType)) {
return true;
}
// No type promotion found
return false;
}
}

View File

@ -0,0 +1,39 @@
package dk.camelot64.kickc.passes;
import dk.camelot64.kickc.model.*;
/**
* Asserts that types match in all assignments and calculations
*/
public class Pass2AssertTypeMatch extends Pass2SsaAssertion {
public Pass2AssertTypeMatch(Program program) {
super(program);
}
@Override
public void check() throws AssertionFailed {
for (ControlFlowBlock block : getGraph().getAllBlocks()) {
for (Statement statement : block.getStatements()) {
if (statement instanceof StatementAssignment) {
checkAssignment((StatementAssignment) statement);
}
// TODO: Implement checking for calls / conditional jumps / ...
}
}
}
private void checkAssignment(StatementAssignment statement) {
LValue lValue = statement.getlValue();
SymbolType lValueType = SymbolTypeInference.inferType(getSymbols(), lValue);
SymbolType rValueType = SymbolTypeInference.inferTypeRValue(getSymbols(), statement);
if(SymbolTypeInference.typeMatch(lValueType, rValueType)) {
return;
}
// Types do not match
getLog().append("ERROR! Type mismatch (" + lValueType.getTypeName() + ") cannot be assigned from (" + rValueType.getTypeName() + "). In " + statement.toString(getProgram(), false));
throw new CompileError("ERROR! Type mismatch (" + lValueType.getTypeName() + ") cannot be assigned from (" + rValueType.getTypeName() + "). In " + statement.toString(getProgram(), false));
}
}

View File

@ -179,10 +179,11 @@ public class Pass2ConstantIdentification extends Pass2SsaOptimization {
case "--": case "--":
case "<": case "<":
case ">": case ">":
case "_byte_": case "((byte))":
case "_sbyte_": case "((sbyte))":
case "_word_": case "((word))":
case "_sword_": case "((signed word))":
case "((byte*))":
return new ConstantUnary(operator, c); return new ConstantUnary(operator, c);
case "*": { // pointer dereference - not constant case "*": { // pointer dereference - not constant
return null; return null;

View File

@ -1,5 +1,6 @@
package dk.camelot64.kickc.passes; package dk.camelot64.kickc.passes;
import dk.camelot64.kickc.CompileLog;
import dk.camelot64.kickc.model.ControlFlowGraph; import dk.camelot64.kickc.model.ControlFlowGraph;
import dk.camelot64.kickc.model.Program; import dk.camelot64.kickc.model.Program;
import dk.camelot64.kickc.model.ProgramScope; import dk.camelot64.kickc.model.ProgramScope;
@ -7,20 +8,26 @@ import dk.camelot64.kickc.model.ProgramScope;
/** Assertion checking that a pass 2 representation of the program is consistent */ /** Assertion checking that a pass 2 representation of the program is consistent */
public abstract class Pass2SsaAssertion { public abstract class Pass2SsaAssertion {
private ControlFlowGraph graph; private Program program;
private ProgramScope programScope;
public Pass2SsaAssertion(Program program) { public Pass2SsaAssertion(Program program) {
this.graph = program.getGraph(); this.program = program;
this.programScope = program.getScope();
} }
public ControlFlowGraph getGraph() { public ControlFlowGraph getGraph() {
return graph; return program.getGraph();
} }
public ProgramScope getSymbols() { public ProgramScope getSymbols() {
return programScope; return program.getScope();
}
public CompileLog getLog() {
return program.getLog();
}
public Program getProgram() {
return program;
} }
public abstract void check() throws AssertionFailed; public abstract void check() throws AssertionFailed;

View File

@ -210,6 +210,16 @@ public class TestPrograms extends TestCase {
fail("Expected compile error."); fail("Expected compile error.");
} }
public void testTypeMismatch() throws IOException, URISyntaxException {
try {
compileAndCompare("typemismatch");
} catch (CompileError e) {
// expecting error!
return;
}
fail("Expected compile error.");
}
private void compileAndCompare(String filename) throws IOException, URISyntaxException { private void compileAndCompare(String filename) throws IOException, URISyntaxException {
TestPrograms tester = new TestPrograms(); TestPrograms tester = new TestPrograms();

View File

@ -1,7 +1,7 @@
// Minimal classic for() loop // Minimal classic for() loop
byte* SCREEN = $0400; byte* SCREEN = (byte*)$0400;
void main() { void main() {
for(byte i=0; i!=100; i++) { for(byte i=0; i!=100; i++) {

View File

@ -24,8 +24,8 @@ void main() {
} }
// Incrementing directly on a word // Incrementing directly on a word
++*$d020; ++*(byte*)$d020;
--*($d000+$21); --*(byte*)($d000+$21);
// Increment on a const named pointer // Increment on a const named pointer
byte* BGCOL = $d020; byte* BGCOL = $d020;

View File

@ -70,7 +70,7 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 0 (byte) main::i ← (byte/signed byte/word/signed word) 0
@ -120,7 +120,7 @@ main::@return: scope:[main] from main::@8
Removing empty block main::@8 Removing empty block main::@8
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 0 (byte) main::i ← (byte/signed byte/word/signed word) 0
@ -169,7 +169,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::i ← (byte/signed byte/word/signed word) 0 (byte) main::i ← (byte/signed byte/word/signed word) 0
@ -222,7 +222,7 @@ Completing Phi functions...
Completing Phi functions... Completing Phi functions...
CONTROL FLOW GRAPH SSA CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) SCREEN#5 ← phi( @1/(byte*) SCREEN#9 ) (byte*) SCREEN#5 ← phi( @1/(byte*) SCREEN#9 )
@ -288,7 +288,7 @@ main::@return: scope:[main] from main::@7
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) SCREEN#5 ← phi( @1/(byte*) SCREEN#9 ) (byte*) SCREEN#5 ← phi( @1/(byte*) SCREEN#9 )
@ -406,7 +406,7 @@ Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) SCREEN#5 ← phi( @1/(byte*) SCREEN#9 ) (byte*) SCREEN#5 ← phi( @1/(byte*) SCREEN#9 )
@ -476,7 +476,7 @@ Alias (byte*) SCREEN#2 = (byte*) SCREEN#8
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -538,7 +538,7 @@ Self Phi Eliminated (byte) main::k#2
Succesful SSA optimization Pass2SelfPhiElimination Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -600,7 +600,7 @@ Redundant Phi (byte) main::k#2 (byte) main::k#4
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -658,7 +658,7 @@ Simple Condition (boolean~) main::$3 if((byte) main::k#1!=(byte/signed byte/word
Succesful SSA optimization Pass2ConditionalJumpSimplification Succesful SSA optimization Pass2ConditionalJumpSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -705,7 +705,7 @@ main::@return: scope:[main] from main::@7
to:@end to:@end
@end: scope:[] from @1 @end: scope:[] from @1
Constant (const byte*) SCREEN#0 = 1024 Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte) main::i#0 = 0 Constant (const byte) main::i#0 = 0
Constant (const byte) main::j#0 = 0 Constant (const byte) main::j#0 = 0
Constant (const byte) main::k#0 = 0 Constant (const byte) main::k#0 = 0
@ -945,7 +945,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024 (const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@2 (label) main::@2
@ -1801,7 +1801,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@2 (label) main::@2

View File

@ -2,7 +2,7 @@
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@2 (label) main::@2

View File

@ -392,10 +392,11 @@ init_plot_tables: {
inx inx
cpx #0 cpx #0
bne b1 bne b1
lda #0 lda #<0
sta yoffs sta yoffs
lda #>0
sta yoffs+1 sta yoffs+1
tax ldx #0
b3: b3:
txa txa
and #7 and #7

View File

@ -177,7 +177,7 @@ plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1
[101] (byte) plot::y#4 ← phi( line_xdyd::@1/(byte) plot::y#1 line_xdyi::@1/(byte) plot::y#0 line_ydxd::@1/(byte) plot::y#3 line_ydxi::@1/(byte) plot::y#2 ) [ plot::x#4 plot::y#4 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 ] ) [101] (byte) plot::y#4 ← phi( line_xdyd::@1/(byte) plot::y#1 line_xdyi::@1/(byte) plot::y#0 line_ydxd::@1/(byte) plot::y#3 line_ydxi::@1/(byte) plot::y#2 ) [ plot::x#4 plot::y#4 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 ] )
[101] (byte) plot::x#4 ← phi( line_xdyd::@1/(byte) plot::x#1 line_xdyi::@1/(byte) plot::x#0 line_ydxd::@1/(byte) plot::x#3 line_ydxi::@1/(byte) plot::x#2 ) [ plot::x#4 plot::y#4 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 ] ) [101] (byte) plot::x#4 ← phi( line_xdyd::@1/(byte) plot::x#1 line_xdyi::@1/(byte) plot::x#0 line_ydxd::@1/(byte) plot::x#3 line_ydxi::@1/(byte) plot::x#2 ) [ plot::x#4 plot::y#4 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 ] )
[102] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::$0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::$0 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::$0 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::$0 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::$0 ] ) [102] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::$0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::$0 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::$0 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::$0 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::$0 ] )
[103] (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] ) [103] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] )
[104] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] ) [104] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] )
[105] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#4 plot::y#4 plot::plotter_x#2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 ] ) [105] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#4 plot::y#4 plot::plotter_x#2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 ] )
[106] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] ) [106] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] )
@ -313,7 +313,7 @@ init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_p
[170] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) [170] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] )
to:init_plot_tables::@3 to:init_plot_tables::@3
init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@4 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@4
[171] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) [171] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
[171] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) [171] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
[172] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) [172] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] )
[173] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ) [173] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] )

View File

@ -2,27 +2,27 @@
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) BGCOL (byte*) BGCOL
(const byte*) BGCOL#0 BGCOL = (word) 53280 (const byte*) BGCOL#0 BGCOL = ((byte*))(word) 53280
(byte*) BITMAP (byte*) BITMAP
(const byte*) BITMAP#0 BITMAP = (word/signed word) 8192 (const byte*) BITMAP#0 BITMAP = ((byte*))(word/signed word) 8192
(byte) BMM (byte) BMM
(const byte) BMM#0 BMM = (byte/signed byte/word/signed word) 32 (const byte) BMM#0 BMM = (byte/signed byte/word/signed word) 32
(byte*) COLS (byte*) COLS
(const byte*) COLS#0 COLS = (word) 55296 (const byte*) COLS#0 COLS = ((byte*))(word) 55296
(byte) CSEL (byte) CSEL
(const byte) CSEL#0 CSEL = (byte/signed byte/word/signed word) 8 (const byte) CSEL#0 CSEL = (byte/signed byte/word/signed word) 8
(byte*) D011 (byte*) D011
(const byte*) D011#0 D011 = (word) 53265 (const byte*) D011#0 D011 = ((byte*))(word) 53265
(byte*) D016 (byte*) D016
(const byte*) D016#0 D016 = (word) 53270 (const byte*) D016#0 D016 = ((byte*))(word) 53270
(byte*) D018 (byte*) D018
(const byte*) D018#0 D018 = (word) 53272 (const byte*) D018#0 D018 = ((byte*))(word) 53272
(byte) DEN (byte) DEN
(const byte) DEN#0 DEN = (byte/signed byte/word/signed word) 16 (const byte) DEN#0 DEN = (byte/signed byte/word/signed word) 16
(byte) ECM (byte) ECM
(const byte) ECM#0 ECM = (byte/signed byte/word/signed word) 64 (const byte) ECM#0 ECM = (byte/signed byte/word/signed word) 64
(byte*) FGCOL (byte*) FGCOL
(const byte*) FGCOL#0 FGCOL = (word) 53281 (const byte*) FGCOL#0 FGCOL = ((byte*))(word) 53281
(byte) MCM (byte) MCM
(const byte) MCM#0 MCM = (byte/signed byte/word/signed word) 16 (const byte) MCM#0 MCM = (byte/signed byte/word/signed word) 16
(byte) RSEL (byte) RSEL
@ -30,9 +30,9 @@
(byte) RST8 (byte) RST8
(const byte) RST8#0 RST8 = (byte/word/signed word) 128 (const byte) RST8#0 RST8 = (byte/word/signed word) 128
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte*) SCROLL (byte*) SCROLL
(const byte*) SCROLL#0 SCROLL = (word) 53270 (const byte*) SCROLL#0 SCROLL = ((byte*))(word) 53270
(void()) init_plot_tables() (void()) init_plot_tables()
(byte~) init_plot_tables::$0 reg byte a 22.0 (byte~) init_plot_tables::$0 reg byte a 22.0
(byte~) init_plot_tables::$10 reg byte a 22.0 (byte~) init_plot_tables::$10 reg byte a 22.0
@ -306,15 +306,15 @@
(byte) plot::y#3 reg byte y 22.0 (byte) plot::y#3 reg byte y 22.0
(byte) plot::y#4 reg byte y 6.857142857142857 (byte) plot::y#4 reg byte y 6.857142857142857
(byte[]) plot_bit (byte[]) plot_bit
(const byte[]) plot_bit#0 plot_bit = (word/signed word) 5120 (const byte[]) plot_bit#0 plot_bit = ((byte*))(word/signed word) 5120
(byte[]) plot_xhi (byte[]) plot_xhi
(const byte[]) plot_xhi#0 plot_xhi = (word/signed word) 4352 (const byte[]) plot_xhi#0 plot_xhi = ((byte*))(word/signed word) 4352
(byte[]) plot_xlo (byte[]) plot_xlo
(const byte[]) plot_xlo#0 plot_xlo = (word/signed word) 4096 (const byte[]) plot_xlo#0 plot_xlo = ((byte*))(word/signed word) 4096
(byte[]) plot_yhi (byte[]) plot_yhi
(const byte[]) plot_yhi#0 plot_yhi = (word/signed word) 4864 (const byte[]) plot_yhi#0 plot_yhi = ((byte*))(word/signed word) 4864
(byte[]) plot_ylo (byte[]) plot_ylo
(const byte[]) plot_ylo#0 plot_ylo = (word/signed word) 4608 (const byte[]) plot_ylo#0 plot_ylo = ((byte*))(word/signed word) 4608
zp ZP_BYTE:2 [ lines::l#2 lines::l#1 init_plot_tables::$6 ] zp ZP_BYTE:2 [ lines::l#2 lines::l#1 init_plot_tables::$6 ]
zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 lines::$2 line::x1#0 ] zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 lines::$2 line::x1#0 ]

View File

@ -116,10 +116,11 @@ init_plot_tables: {
inx inx
cpx #0 cpx #0
bne b1 bne b1
lda #0 lda #<0
sta yoffs sta yoffs
lda #>0
sta yoffs+1 sta yoffs+1
tax ldx #0
b3: b3:
txa txa
and #7 and #7

View File

@ -48,7 +48,7 @@ plots::@return: scope:[plots] from plots::@3
to:@return to:@return
plot: scope:[plot] from plots::@1 plot: scope:[plot] from plots::@1
[23] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::$0 ] ) [23] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::$0 ] )
[24] (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) [24] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] )
[25] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] ) [25] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] )
[26] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] ) [26] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] )
[27] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] ) [27] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] )
@ -82,7 +82,7 @@ init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_p
[46] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) [46] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] )
to:init_plot_tables::@3 to:init_plot_tables::@3
init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@4 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@4
[47] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) [47] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
[47] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) [47] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
[48] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) [48] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] )
[49] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ) [49] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] )

File diff suppressed because it is too large Load Diff

View File

@ -2,37 +2,37 @@
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) BGCOL (byte*) BGCOL
(const byte*) BGCOL#0 BGCOL = (word) 53280 (const byte*) BGCOL#0 BGCOL = ((byte*))(word) 53280
(byte*) BITMAP (byte*) BITMAP
(const byte*) BITMAP#0 BITMAP = (word/signed word) 8192 (const byte*) BITMAP#0 BITMAP = ((byte*))(word/signed word) 8192
(byte) BMM (byte) BMM
(const byte) BMM#0 BMM = (byte/signed byte/word/signed word) 32 (const byte) BMM#0 BMM = (byte/signed byte/word/signed word) 32
(byte*) COLS (byte*) COLS
(const byte*) COLS#0 COLS = (word) 55296 (const byte*) COLS#0 COLS = ((byte*))(word) 55296
(byte) CSEL (byte) CSEL
(const byte) CSEL#0 CSEL = (byte/signed byte/word/signed word) 8 (const byte) CSEL#0 CSEL = (byte/signed byte/word/signed word) 8
(byte*) D011 (byte*) D011
(const byte*) D011#0 D011 = (word) 53265 (const byte*) D011#0 D011 = ((byte*))(word) 53265
(byte*) D016 (byte*) D016
(const byte*) D016#0 D016 = (word) 53270 (const byte*) D016#0 D016 = ((byte*))(word) 53270
(byte*) D018 (byte*) D018
(const byte*) D018#0 D018 = (word) 53272 (const byte*) D018#0 D018 = ((byte*))(word) 53272
(byte) DEN (byte) DEN
(const byte) DEN#0 DEN = (byte/signed byte/word/signed word) 16 (const byte) DEN#0 DEN = (byte/signed byte/word/signed word) 16
(byte) ECM (byte) ECM
(const byte) ECM#0 ECM = (byte/signed byte/word/signed word) 64 (const byte) ECM#0 ECM = (byte/signed byte/word/signed word) 64
(byte*) FGCOL (byte*) FGCOL
(const byte*) FGCOL#0 FGCOL = (word) 53281 (const byte*) FGCOL#0 FGCOL = ((byte*))(word) 53281
(byte) MCM (byte) MCM
(const byte) MCM#0 MCM = (byte/signed byte/word/signed word) 16 (const byte) MCM#0 MCM = (byte/signed byte/word/signed word) 16
(byte*) RASTER (byte*) RASTER
(const byte*) RASTER#0 RASTER = (word) 53266 (const byte*) RASTER#0 RASTER = ((byte*))(word) 53266
(byte) RSEL (byte) RSEL
(const byte) RSEL#0 RSEL = (byte/signed byte/word/signed word) 8 (const byte) RSEL#0 RSEL = (byte/signed byte/word/signed word) 8
(byte) RST8 (byte) RST8
(const byte) RST8#0 RST8 = (byte/word/signed word) 128 (const byte) RST8#0 RST8 = (byte/word/signed word) 128
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) init_plot_tables() (void()) init_plot_tables()
(byte~) init_plot_tables::$0 reg byte a 22.0 (byte~) init_plot_tables::$0 reg byte a 22.0
(byte~) init_plot_tables::$10 reg byte a 22.0 (byte~) init_plot_tables::$10 reg byte a 22.0
@ -98,15 +98,15 @@
(byte) plot::y (byte) plot::y
(byte) plot::y#0 reg byte x 15.000000000000002 (byte) plot::y#0 reg byte x 15.000000000000002
(byte[]) plot_bit (byte[]) plot_bit
(const byte[]) plot_bit#0 plot_bit = (word/signed word) 5120 (const byte[]) plot_bit#0 plot_bit = ((byte*))(word/signed word) 5120
(byte[]) plot_xhi (byte[]) plot_xhi
(const byte[]) plot_xhi#0 plot_xhi = (word/signed word) 4352 (const byte[]) plot_xhi#0 plot_xhi = ((byte*))(word/signed word) 4352
(byte[]) plot_xlo (byte[]) plot_xlo
(const byte[]) plot_xlo#0 plot_xlo = (word/signed word) 4096 (const byte[]) plot_xlo#0 plot_xlo = ((byte*))(word/signed word) 4096
(byte[]) plot_yhi (byte[]) plot_yhi
(const byte[]) plot_yhi#0 plot_yhi = (word/signed word) 4864 (const byte[]) plot_yhi#0 plot_yhi = ((byte*))(word/signed word) 4864
(byte[]) plot_ylo (byte[]) plot_ylo
(const byte[]) plot_ylo#0 plot_ylo = (word/signed word) 4608 (const byte[]) plot_ylo#0 plot_ylo = ((byte*))(word/signed word) 4608
(void()) plots() (void()) plots()
(byte~) plots::$0 reg byte y 101.0 (byte~) plots::$0 reg byte y 101.0
(byte~) plots::$1 reg byte a 101.0 (byte~) plots::$1 reg byte a 101.0

View File

@ -107,7 +107,7 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte) STAR ← (byte/signed byte/word/signed word) 81 (byte) STAR ← (byte/signed byte/word/signed word) 81
(byte[1000]) SCREEN ← (word/signed word) 1024 (byte[1000]) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(byte) main::x0 ← (byte/signed byte/word/signed word) 4 (byte) main::x0 ← (byte/signed byte/word/signed word) 4
@ -166,7 +166,7 @@ Removing empty block main::@4
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte) STAR ← (byte/signed byte/word/signed word) 81 (byte) STAR ← (byte/signed byte/word/signed word) 81
(byte[1000]) SCREEN ← (word/signed word) 1024 (byte[1000]) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(byte) main::x0 ← (byte/signed byte/word/signed word) 4 (byte) main::x0 ← (byte/signed byte/word/signed word) 4
@ -224,7 +224,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
(byte) STAR ← (byte/signed byte/word/signed word) 81 (byte) STAR ← (byte/signed byte/word/signed word) 81
(byte[1000]) SCREEN ← (word/signed word) 1024 (byte[1000]) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::x0 ← (byte/signed byte/word/signed word) 4 (byte) main::x0 ← (byte/signed byte/word/signed word) 4
@ -285,7 +285,7 @@ Completing Phi functions...
CONTROL FLOW GRAPH SSA CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
(byte) STAR#0 ← (byte/signed byte/word/signed word) 81 (byte) STAR#0 ← (byte/signed byte/word/signed word) 81
(byte[1000]) SCREEN#0 ← (word/signed word) 1024 (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) STAR#2 ← phi( @1/(byte) STAR#4 ) (byte) STAR#2 ← phi( @1/(byte) STAR#4 )
@ -371,7 +371,7 @@ main::@return: scope:[main] from main::@2
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
(byte) STAR#0 ← (byte/signed byte/word/signed word) 81 (byte) STAR#0 ← (byte/signed byte/word/signed word) 81
(byte[1000]) SCREEN#0 ← (word/signed word) 1024 (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) STAR#2 ← phi( @1/(byte) STAR#4 ) (byte) STAR#2 ← phi( @1/(byte) STAR#4 )
@ -544,7 +544,7 @@ Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte) STAR#0 ← (byte/signed byte/word/signed word) 81 (byte) STAR#0 ← (byte/signed byte/word/signed word) 81
(byte[1000]) SCREEN#0 ← (word/signed word) 1024 (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) STAR#2 ← phi( @1/(byte) STAR#4 ) (byte) STAR#2 ← phi( @1/(byte) STAR#4 )
@ -630,7 +630,7 @@ Succesful SSA optimization Pass2UnaryNotSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte) STAR#0 ← (byte/signed byte/word/signed word) 81 (byte) STAR#0 ← (byte/signed byte/word/signed word) 81
(byte[1000]) SCREEN#0 ← (word/signed word) 1024 (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) STAR#2 ← phi( @1/(byte) STAR#4 ) (byte) STAR#2 ← phi( @1/(byte) STAR#4 )
@ -733,7 +733,7 @@ Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte) STAR#0 ← (byte/signed byte/word/signed word) 81 (byte) STAR#0 ← (byte/signed byte/word/signed word) 81
(byte[1000]) SCREEN#0 ← (word/signed word) 1024 (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::x#0 ← (byte/signed byte/word/signed word) 4 (byte) main::x#0 ← (byte/signed byte/word/signed word) 4
@ -798,7 +798,7 @@ Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte) STAR#0 ← (byte/signed byte/word/signed word) 81 (byte) STAR#0 ← (byte/signed byte/word/signed word) 81
(byte[1000]) SCREEN#0 ← (word/signed word) 1024 (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::x#0 ← (byte/signed byte/word/signed word) 4 (byte) main::x#0 ← (byte/signed byte/word/signed word) 4
@ -857,7 +857,7 @@ Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte) STAR#0 ← (byte/signed byte/word/signed word) 81 (byte) STAR#0 ← (byte/signed byte/word/signed word) 81
(byte[1000]) SCREEN#0 ← (word/signed word) 1024 (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::x#0 ← (byte/signed byte/word/signed word) 4 (byte) main::x#0 ← (byte/signed byte/word/signed word) 4
@ -916,7 +916,7 @@ Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte) STAR#0 ← (byte/signed byte/word/signed word) 81 (byte) STAR#0 ← (byte/signed byte/word/signed word) 81
(byte[1000]) SCREEN#0 ← (word/signed word) 1024 (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::x#0 ← (byte/signed byte/word/signed word) 4 (byte) main::x#0 ← (byte/signed byte/word/signed word) 4
@ -969,7 +969,7 @@ Succesful SSA optimization Pass2ConditionalJumpSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte) STAR#0 ← (byte/signed byte/word/signed word) 81 (byte) STAR#0 ← (byte/signed byte/word/signed word) 81
(byte[1000]) SCREEN#0 ← (word/signed word) 1024 (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::x#0 ← (byte/signed byte/word/signed word) 4 (byte) main::x#0 ← (byte/signed byte/word/signed word) 4
@ -1015,7 +1015,7 @@ main::@return: scope:[main] from main::@2
@end: scope:[] from @1 @end: scope:[] from @1
Constant (const byte) STAR#0 = 81 Constant (const byte) STAR#0 = 81
Constant (const byte[1000]) SCREEN#0 = 1024 Constant (const byte[1000]) SCREEN#0 = ((byte*))1024
Constant (const byte) main::x#0 = 4 Constant (const byte) main::x#0 = 4
Constant (const byte) main::y#0 = 4 Constant (const byte) main::y#0 = 4
Constant (const byte) main::x1#0 = 39 Constant (const byte) main::x1#0 = 39
@ -1247,7 +1247,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte[1000]) SCREEN (byte[1000]) SCREEN
(const byte[1000]) SCREEN#0 = (word/signed word) 1024 (const byte[1000]) SCREEN#0 = ((byte*))(word/signed word) 1024
(byte) STAR (byte) STAR
(const byte) STAR#0 = (byte/signed byte/word/signed word) 81 (const byte) STAR#0 = (byte/signed byte/word/signed word) 81
(void()) main() (void()) main()
@ -2227,7 +2227,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte[1000]) SCREEN (byte[1000]) SCREEN
(const byte[1000]) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte[1000]) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte) STAR (byte) STAR
(const byte) STAR#0 STAR = (byte/signed byte/word/signed word) 81 (const byte) STAR#0 STAR = (byte/signed byte/word/signed word) 81
(void()) main() (void()) main()

View File

@ -2,7 +2,7 @@
(label) @begin (label) @begin
(label) @end (label) @end
(byte[1000]) SCREEN (byte[1000]) SCREEN
(const byte[1000]) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte[1000]) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte) STAR (byte) STAR
(const byte) STAR#0 STAR = (byte/signed byte/word/signed word) 81 (const byte) STAR#0 STAR = (byte/signed byte/word/signed word) 81
(void()) main() (void()) main()

View File

@ -15,9 +15,9 @@ main: {
sta y sta y
ldy #yd/2 ldy #yd/2
tax tax
lda #0+0*$28 lda #<0+0*$28
sta idx sta idx
txa lda #>0+0*$28
sta idx+1 sta idx+1
b1: b1:
lda #<screen lda #<screen

View File

@ -11,7 +11,7 @@ main::@1: scope:[main] from main main::@2
[2] (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::y#4 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) [2] (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::y#4 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] )
[2] (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte/signed byte/word/signed word) 2 main::@2/(byte) main::e#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) [2] (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte/signed byte/word/signed word) 2 main::@2/(byte) main::e#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] )
[2] (byte) main::x#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::x#1 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) [2] (byte) main::x#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::x#1 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] )
[2] (word) main::idx#3 ← phi( main/(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 main::@2/(word) main::idx#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) [2] (word) main::idx#3 ← phi( main/((word))(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 main::@2/(word) main::idx#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] )
[3] *((const byte[1000]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) [3] *((const byte[1000]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] )
[4] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ) [4] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] )
[5] (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ) [5] (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] )

View File

@ -107,7 +107,7 @@ INITIAL CONTROL FLOW GRAPH
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(byte) main::STAR ← (byte/signed byte/word/signed word) 81 (byte) main::STAR ← (byte/signed byte/word/signed word) 81
(byte[1000]) main::screen ← (word/signed word) 1024 (byte[1000]) main::screen ← ((byte*)) (word/signed word) 1024
(byte) main::x0 ← (byte/signed byte/word/signed word) 0 (byte) main::x0 ← (byte/signed byte/word/signed word) 0
(byte) main::y0 ← (byte/signed byte/word/signed word) 0 (byte) main::y0 ← (byte/signed byte/word/signed word) 0
(byte) main::x1 ← (byte/signed byte/word/signed word) 39 (byte) main::x1 ← (byte/signed byte/word/signed word) 39
@ -122,7 +122,7 @@ main: scope:[main] from
(byte) main::e ← (byte~) main::$2 (byte) main::e ← (byte~) main::$2
(byte~) main::$3 ← (byte) main::y * (byte/signed byte/word/signed word) 40 (byte~) main::$3 ← (byte) main::y * (byte/signed byte/word/signed word) 40
(byte~) main::$4 ← (byte) main::x + (byte~) main::$3 (byte~) main::$4 ← (byte) main::x + (byte~) main::$3
(word) main::idx ← (byte~) main::$4 (word) main::idx ← ((word)) (byte~) main::$4
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@2 main::@1: scope:[main] from main main::@2
*((byte[1000]) main::screen + (word) main::idx) ← (byte) main::STAR *((byte[1000]) main::screen + (word) main::idx) ← (byte) main::STAR
@ -165,7 +165,7 @@ CONTROL FLOW GRAPH
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(byte) main::STAR ← (byte/signed byte/word/signed word) 81 (byte) main::STAR ← (byte/signed byte/word/signed word) 81
(byte[1000]) main::screen ← (word/signed word) 1024 (byte[1000]) main::screen ← ((byte*)) (word/signed word) 1024
(byte) main::x0 ← (byte/signed byte/word/signed word) 0 (byte) main::x0 ← (byte/signed byte/word/signed word) 0
(byte) main::y0 ← (byte/signed byte/word/signed word) 0 (byte) main::y0 ← (byte/signed byte/word/signed word) 0
(byte) main::x1 ← (byte/signed byte/word/signed word) 39 (byte) main::x1 ← (byte/signed byte/word/signed word) 39
@ -180,7 +180,7 @@ main: scope:[main] from
(byte) main::e ← (byte~) main::$2 (byte) main::e ← (byte~) main::$2
(byte~) main::$3 ← (byte) main::y * (byte/signed byte/word/signed word) 40 (byte~) main::$3 ← (byte) main::y * (byte/signed byte/word/signed word) 40
(byte~) main::$4 ← (byte) main::x + (byte~) main::$3 (byte~) main::$4 ← (byte) main::x + (byte~) main::$3
(word) main::idx ← (byte~) main::$4 (word) main::idx ← ((word)) (byte~) main::$4
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@2 main::@1: scope:[main] from main main::@2
*((byte[1000]) main::screen + (word) main::idx) ← (byte) main::STAR *((byte[1000]) main::screen + (word) main::idx) ← (byte) main::STAR
@ -222,7 +222,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::STAR ← (byte/signed byte/word/signed word) 81 (byte) main::STAR ← (byte/signed byte/word/signed word) 81
(byte[1000]) main::screen ← (word/signed word) 1024 (byte[1000]) main::screen ← ((byte*)) (word/signed word) 1024
(byte) main::x0 ← (byte/signed byte/word/signed word) 0 (byte) main::x0 ← (byte/signed byte/word/signed word) 0
(byte) main::y0 ← (byte/signed byte/word/signed word) 0 (byte) main::y0 ← (byte/signed byte/word/signed word) 0
(byte) main::x1 ← (byte/signed byte/word/signed word) 39 (byte) main::x1 ← (byte/signed byte/word/signed word) 39
@ -237,7 +237,7 @@ main: scope:[main] from @1
(byte) main::e ← (byte~) main::$2 (byte) main::e ← (byte~) main::$2
(byte~) main::$3 ← (byte) main::y * (byte/signed byte/word/signed word) 40 (byte~) main::$3 ← (byte) main::y * (byte/signed byte/word/signed word) 40
(byte~) main::$4 ← (byte) main::x + (byte~) main::$3 (byte~) main::$4 ← (byte) main::x + (byte~) main::$3
(word) main::idx ← (byte~) main::$4 (word) main::idx ← ((word)) (byte~) main::$4
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@2 main::@1: scope:[main] from main main::@2
*((byte[1000]) main::screen + (word) main::idx) ← (byte) main::STAR *((byte[1000]) main::screen + (word) main::idx) ← (byte) main::STAR
@ -282,7 +282,7 @@ CONTROL FLOW GRAPH SSA
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::STAR#0 ← (byte/signed byte/word/signed word) 81 (byte) main::STAR#0 ← (byte/signed byte/word/signed word) 81
(byte[1000]) main::screen#0 ← (word/signed word) 1024 (byte[1000]) main::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) main::x0#0 ← (byte/signed byte/word/signed word) 0 (byte) main::x0#0 ← (byte/signed byte/word/signed word) 0
(byte) main::y0#0 ← (byte/signed byte/word/signed word) 0 (byte) main::y0#0 ← (byte/signed byte/word/signed word) 0
(byte) main::x1#0 ← (byte/signed byte/word/signed word) 39 (byte) main::x1#0 ← (byte/signed byte/word/signed word) 39
@ -297,7 +297,7 @@ main: scope:[main] from @1
(byte) main::e#0 ← (byte~) main::$2 (byte) main::e#0 ← (byte~) main::$2
(byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40 (byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40
(byte~) main::$4 ← (byte) main::x#0 + (byte~) main::$3 (byte~) main::$4 ← (byte) main::x#0 + (byte~) main::$3
(word) main::idx#0 ← (byte~) main::$4 (word) main::idx#0 ← ((word)) (byte~) main::$4
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@2 main::@1: scope:[main] from main main::@2
(byte) main::y#3 ← phi( main/(byte) main::y#0 main::@2/(byte) main::y#4 ) (byte) main::y#3 ← phi( main/(byte) main::y#0 main::@2/(byte) main::y#4 )
@ -366,7 +366,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::STAR#0 ← (byte/signed byte/word/signed word) 81 (byte) main::STAR#0 ← (byte/signed byte/word/signed word) 81
(byte[1000]) main::screen#0 ← (word/signed word) 1024 (byte[1000]) main::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) main::x0#0 ← (byte/signed byte/word/signed word) 0 (byte) main::x0#0 ← (byte/signed byte/word/signed word) 0
(byte) main::y0#0 ← (byte/signed byte/word/signed word) 0 (byte) main::y0#0 ← (byte/signed byte/word/signed word) 0
(byte) main::x1#0 ← (byte/signed byte/word/signed word) 39 (byte) main::x1#0 ← (byte/signed byte/word/signed word) 39
@ -381,7 +381,7 @@ main: scope:[main] from @1
(byte) main::e#0 ← (byte~) main::$2 (byte) main::e#0 ← (byte~) main::$2
(byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40 (byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40
(byte~) main::$4 ← (byte) main::x#0 + (byte~) main::$3 (byte~) main::$4 ← (byte) main::x#0 + (byte~) main::$3
(word) main::idx#0 ← (byte~) main::$4 (word) main::idx#0 ← ((word)) (byte~) main::$4
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@2 main::@1: scope:[main] from main main::@2
(byte) main::y#3 ← phi( main/(byte) main::y#0 main::@2/(byte) main::y#4 ) (byte) main::y#3 ← phi( main/(byte) main::y#0 main::@2/(byte) main::y#4 )
@ -535,7 +535,7 @@ CONTROL FLOW GRAPH
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::STAR#0 ← (byte/signed byte/word/signed word) 81 (byte) main::STAR#0 ← (byte/signed byte/word/signed word) 81
(byte[1000]) main::screen#0 ← (word/signed word) 1024 (byte[1000]) main::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) main::x0#0 ← (byte/signed byte/word/signed word) 0 (byte) main::x0#0 ← (byte/signed byte/word/signed word) 0
(byte) main::y0#0 ← (byte/signed byte/word/signed word) 0 (byte) main::y0#0 ← (byte/signed byte/word/signed word) 0
(byte) main::x1#0 ← (byte/signed byte/word/signed word) 39 (byte) main::x1#0 ← (byte/signed byte/word/signed word) 39
@ -550,7 +550,7 @@ main: scope:[main] from @1
(byte) main::e#0 ← (byte~) main::$2 (byte) main::e#0 ← (byte~) main::$2
(byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40 (byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40
(byte~) main::$4 ← (byte) main::x#0 + (byte~) main::$3 (byte~) main::$4 ← (byte) main::x#0 + (byte~) main::$3
(word) main::idx#0 ← (byte~) main::$4 (word) main::idx#0 ← ((word)) (byte~) main::$4
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@2 main::@1: scope:[main] from main main::@2
(byte) main::y#3 ← phi( main/(byte) main::y#0 main::@2/(byte) main::y#4 ) (byte) main::y#3 ← phi( main/(byte) main::y#0 main::@2/(byte) main::y#4 )
@ -619,7 +619,7 @@ CONTROL FLOW GRAPH
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::STAR#0 ← (byte/signed byte/word/signed word) 81 (byte) main::STAR#0 ← (byte/signed byte/word/signed word) 81
(byte[1000]) main::screen#0 ← (word/signed word) 1024 (byte[1000]) main::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) main::x0#0 ← (byte/signed byte/word/signed word) 0 (byte) main::x0#0 ← (byte/signed byte/word/signed word) 0
(byte) main::y0#0 ← (byte/signed byte/word/signed word) 0 (byte) main::y0#0 ← (byte/signed byte/word/signed word) 0
(byte) main::x1#0 ← (byte/signed byte/word/signed word) 39 (byte) main::x1#0 ← (byte/signed byte/word/signed word) 39
@ -634,7 +634,7 @@ main: scope:[main] from @1
(byte) main::e#0 ← (byte~) main::$2 (byte) main::e#0 ← (byte~) main::$2
(byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40 (byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40
(byte~) main::$4 ← (byte) main::x#0 + (byte~) main::$3 (byte~) main::$4 ← (byte) main::x#0 + (byte~) main::$3
(word) main::idx#0 ← (byte~) main::$4 (word) main::idx#0 ← ((word)) (byte~) main::$4
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@2 main::@1: scope:[main] from main main::@2
(byte) main::y#3 ← phi( main/(byte) main::y#0 main::@2/(byte) main::y#4 ) (byte) main::y#3 ← phi( main/(byte) main::y#0 main::@2/(byte) main::y#4 )
@ -700,7 +700,6 @@ Alias (byte) main::yd#0 = (byte~) main::$1
Alias (byte) main::x#0 = (byte) main::x0#0 Alias (byte) main::x#0 = (byte) main::x0#0
Alias (byte) main::y#0 = (byte) main::y0#0 Alias (byte) main::y#0 = (byte) main::y0#0
Alias (byte) main::e#0 = (byte~) main::$2 Alias (byte) main::e#0 = (byte~) main::$2
Alias (word) main::idx#0 = (byte~) main::$4
Alias (byte) main::x#1 = (byte~) main::$5 (byte) main::x#4 Alias (byte) main::x#1 = (byte~) main::$5 (byte) main::x#4
Alias (word) main::idx#1 = (word~) main::$6 (word) main::idx#4 Alias (word) main::idx#1 = (word~) main::$6 (word) main::idx#4
Alias (byte) main::e#1 = (byte~) main::$7 (byte) main::e#4 Alias (byte) main::e#1 = (byte~) main::$7 (byte) main::e#4
@ -719,7 +718,7 @@ CONTROL FLOW GRAPH
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::STAR#0 ← (byte/signed byte/word/signed word) 81 (byte) main::STAR#0 ← (byte/signed byte/word/signed word) 81
(byte[1000]) main::screen#0 ← (word/signed word) 1024 (byte[1000]) main::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) main::x#0 ← (byte/signed byte/word/signed word) 0 (byte) main::x#0 ← (byte/signed byte/word/signed word) 0
(byte) main::y#0 ← (byte/signed byte/word/signed word) 0 (byte) main::y#0 ← (byte/signed byte/word/signed word) 0
(byte) main::x1#0 ← (byte/signed byte/word/signed word) 39 (byte) main::x1#0 ← (byte/signed byte/word/signed word) 39
@ -728,7 +727,8 @@ main: scope:[main] from @1
(byte) main::yd#0 ← (byte) main::y1#0 - (byte) main::y#0 (byte) main::yd#0 ← (byte) main::y1#0 - (byte) main::y#0
(byte) main::e#0 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2 (byte) main::e#0 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2
(byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40 (byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40
(word) main::idx#0 ← (byte) main::x#0 + (byte~) main::$3 (byte~) main::$4 ← (byte) main::x#0 + (byte~) main::$3
(word) main::idx#0 ← ((word)) (byte~) main::$4
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@2 main::@1: scope:[main] from main main::@2
(byte) main::y#2 ← phi( main/(byte) main::y#0 main::@2/(byte) main::y#4 ) (byte) main::y#2 ← phi( main/(byte) main::y#0 main::@2/(byte) main::y#4 )
@ -786,7 +786,7 @@ CONTROL FLOW GRAPH
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::STAR#0 ← (byte/signed byte/word/signed word) 81 (byte) main::STAR#0 ← (byte/signed byte/word/signed word) 81
(byte[1000]) main::screen#0 ← (word/signed word) 1024 (byte[1000]) main::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) main::x#0 ← (byte/signed byte/word/signed word) 0 (byte) main::x#0 ← (byte/signed byte/word/signed word) 0
(byte) main::y#0 ← (byte/signed byte/word/signed word) 0 (byte) main::y#0 ← (byte/signed byte/word/signed word) 0
(byte) main::x1#0 ← (byte/signed byte/word/signed word) 39 (byte) main::x1#0 ← (byte/signed byte/word/signed word) 39
@ -795,7 +795,8 @@ main: scope:[main] from @1
(byte) main::yd#0 ← (byte) main::y1#0 - (byte) main::y#0 (byte) main::yd#0 ← (byte) main::y1#0 - (byte) main::y#0
(byte) main::e#0 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2 (byte) main::e#0 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2
(byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40 (byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40
(word) main::idx#0 ← (byte) main::x#0 + (byte~) main::$3 (byte~) main::$4 ← (byte) main::x#0 + (byte~) main::$3
(word) main::idx#0 ← ((word)) (byte~) main::$4
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@2 main::@1: scope:[main] from main main::@2
(byte) main::y#2 ← phi( main/(byte) main::y#0 main::@2/(byte) main::y#4 ) (byte) main::y#2 ← phi( main/(byte) main::y#0 main::@2/(byte) main::y#4 )
@ -846,7 +847,7 @@ CONTROL FLOW GRAPH
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::STAR#0 ← (byte/signed byte/word/signed word) 81 (byte) main::STAR#0 ← (byte/signed byte/word/signed word) 81
(byte[1000]) main::screen#0 ← (word/signed word) 1024 (byte[1000]) main::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) main::x#0 ← (byte/signed byte/word/signed word) 0 (byte) main::x#0 ← (byte/signed byte/word/signed word) 0
(byte) main::y#0 ← (byte/signed byte/word/signed word) 0 (byte) main::y#0 ← (byte/signed byte/word/signed word) 0
(byte) main::x1#0 ← (byte/signed byte/word/signed word) 39 (byte) main::x1#0 ← (byte/signed byte/word/signed word) 39
@ -855,7 +856,8 @@ main: scope:[main] from @1
(byte) main::yd#0 ← (byte) main::y1#0 - (byte) main::y#0 (byte) main::yd#0 ← (byte) main::y1#0 - (byte) main::y#0
(byte) main::e#0 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2 (byte) main::e#0 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2
(byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40 (byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40
(word) main::idx#0 ← (byte) main::x#0 + (byte~) main::$3 (byte~) main::$4 ← (byte) main::x#0 + (byte~) main::$3
(word) main::idx#0 ← ((word)) (byte~) main::$4
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@2 main::@1: scope:[main] from main main::@2
(byte) main::y#2 ← phi( main/(byte) main::y#0 main::@2/(byte) main::y#4 ) (byte) main::y#2 ← phi( main/(byte) main::y#0 main::@2/(byte) main::y#4 )
@ -906,7 +908,7 @@ CONTROL FLOW GRAPH
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::STAR#0 ← (byte/signed byte/word/signed word) 81 (byte) main::STAR#0 ← (byte/signed byte/word/signed word) 81
(byte[1000]) main::screen#0 ← (word/signed word) 1024 (byte[1000]) main::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) main::x#0 ← (byte/signed byte/word/signed word) 0 (byte) main::x#0 ← (byte/signed byte/word/signed word) 0
(byte) main::y#0 ← (byte/signed byte/word/signed word) 0 (byte) main::y#0 ← (byte/signed byte/word/signed word) 0
(byte) main::x1#0 ← (byte/signed byte/word/signed word) 39 (byte) main::x1#0 ← (byte/signed byte/word/signed word) 39
@ -915,7 +917,8 @@ main: scope:[main] from @1
(byte) main::yd#0 ← (byte) main::y1#0 - (byte) main::y#0 (byte) main::yd#0 ← (byte) main::y1#0 - (byte) main::y#0
(byte) main::e#0 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2 (byte) main::e#0 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2
(byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40 (byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40
(word) main::idx#0 ← (byte) main::x#0 + (byte~) main::$3 (byte~) main::$4 ← (byte) main::x#0 + (byte~) main::$3
(word) main::idx#0 ← ((word)) (byte~) main::$4
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@2 main::@1: scope:[main] from main main::@2
(byte) main::y#2 ← phi( main/(byte) main::y#0 main::@2/(byte) main::y#4 ) (byte) main::y#2 ← phi( main/(byte) main::y#0 main::@2/(byte) main::y#4 )
@ -958,7 +961,7 @@ CONTROL FLOW GRAPH
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::STAR#0 ← (byte/signed byte/word/signed word) 81 (byte) main::STAR#0 ← (byte/signed byte/word/signed word) 81
(byte[1000]) main::screen#0 ← (word/signed word) 1024 (byte[1000]) main::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) main::x#0 ← (byte/signed byte/word/signed word) 0 (byte) main::x#0 ← (byte/signed byte/word/signed word) 0
(byte) main::y#0 ← (byte/signed byte/word/signed word) 0 (byte) main::y#0 ← (byte/signed byte/word/signed word) 0
(byte) main::x1#0 ← (byte/signed byte/word/signed word) 39 (byte) main::x1#0 ← (byte/signed byte/word/signed word) 39
@ -967,7 +970,8 @@ main: scope:[main] from @1
(byte) main::yd#0 ← (byte) main::y1#0 - (byte) main::y#0 (byte) main::yd#0 ← (byte) main::y1#0 - (byte) main::y#0
(byte) main::e#0 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2 (byte) main::e#0 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2
(byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40 (byte~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40
(word) main::idx#0 ← (byte) main::x#0 + (byte~) main::$3 (byte~) main::$4 ← (byte) main::x#0 + (byte~) main::$3
(word) main::idx#0 ← ((word)) (byte~) main::$4
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@2 main::@1: scope:[main] from main main::@2
(byte) main::y#2 ← phi( main/(byte) main::y#0 main::@2/(byte) main::y#4 ) (byte) main::y#2 ← phi( main/(byte) main::y#0 main::@2/(byte) main::y#4 )
@ -1001,7 +1005,7 @@ main::@return: scope:[main] from main::@2
@end: scope:[] from @1 @end: scope:[] from @1
Constant (const byte) main::STAR#0 = 81 Constant (const byte) main::STAR#0 = 81
Constant (const byte[1000]) main::screen#0 = 1024 Constant (const byte[1000]) main::screen#0 = ((byte*))1024
Constant (const byte) main::x#0 = 0 Constant (const byte) main::x#0 = 0
Constant (const byte) main::y#0 = 0 Constant (const byte) main::y#0 = 0
Constant (const byte) main::x1#0 = 39 Constant (const byte) main::x1#0 = 39
@ -1015,7 +1019,8 @@ main: scope:[main] from @1
(byte) main::yd#0 ← (const byte) main::y1#0 - (const byte) main::y#0 (byte) main::yd#0 ← (const byte) main::y1#0 - (const byte) main::y#0
(byte) main::e#0 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2 (byte) main::e#0 ← (byte) main::yd#0 / (byte/signed byte/word/signed word) 2
(byte~) main::$3 ← (const byte) main::y#0 * (byte/signed byte/word/signed word) 40 (byte~) main::$3 ← (const byte) main::y#0 * (byte/signed byte/word/signed word) 40
(word) main::idx#0 ← (const byte) main::x#0 + (byte~) main::$3 (byte~) main::$4 ← (const byte) main::x#0 + (byte~) main::$3
(word) main::idx#0 ← ((word)) (byte~) main::$4
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@2 main::@1: scope:[main] from main main::@2
(byte) main::y#2 ← phi( main/(const byte) main::y#0 main::@2/(byte) main::y#4 ) (byte) main::y#2 ← phi( main/(const byte) main::y#0 main::@2/(byte) main::y#4 )
@ -1058,7 +1063,8 @@ CONTROL FLOW GRAPH
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::e#0 ← (const byte) main::yd#0 / (byte/signed byte/word/signed word) 2 (byte) main::e#0 ← (const byte) main::yd#0 / (byte/signed byte/word/signed word) 2
(word) main::idx#0 ← (const byte) main::x#0 + (const byte) main::$3 (byte~) main::$4 ← (const byte) main::x#0 + (const byte) main::$3
(word) main::idx#0 ← ((word)) (byte~) main::$4
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@2 main::@1: scope:[main] from main main::@2
(byte) main::y#2 ← phi( main/(const byte) main::y#0 main::@2/(byte) main::y#4 ) (byte) main::y#2 ← phi( main/(const byte) main::y#0 main::@2/(byte) main::y#4 )
@ -1091,7 +1097,45 @@ main::@return: scope:[main] from main::@2
@end: scope:[] from @1 @end: scope:[] from @1
Constant (const byte) main::e#0 = main::yd#0/2 Constant (const byte) main::e#0 = main::yd#0/2
Constant (const word) main::idx#0 = main::x#0+main::$3 Constant (const byte) main::$4 = main::x#0+main::$3
Succesful SSA optimization Pass2ConstantIdentification
CONTROL FLOW GRAPH
@begin: scope:[] from
to:@1
main: scope:[main] from @1
(word) main::idx#0 ← ((word)) (const byte) main::$4
to:main::@1
main::@1: scope:[main] from main main::@2
(byte) main::y#2 ← phi( main/(const byte) main::y#0 main::@2/(byte) main::y#4 )
(byte) main::e#3 ← phi( main/(const byte) main::e#0 main::@2/(byte) main::e#5 )
(byte) main::x#2 ← phi( main/(const byte) main::x#0 main::@2/(byte) main::x#1 )
(word) main::idx#3 ← phi( main/(word) main::idx#0 main::@2/(word) main::idx#5 )
*((const byte[1000]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0
(byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1
(word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1
(byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0
if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2
to:main::@3
main::@2: scope:[main] from main::@1 main::@3
(byte) main::y#4 ← phi( main::@1/(byte) main::y#2 main::@3/(byte) main::y#1 )
(byte) main::e#5 ← phi( main::@1/(byte) main::e#1 main::@3/(byte) main::e#2 )
(word) main::idx#5 ← phi( main::@1/(word) main::idx#1 main::@3/(word) main::idx#2 )
if((byte) main::x#1<(const byte) main::$13) goto main::@1
to:main::@return
main::@3: scope:[main] from main::@1
(byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word) 1
(word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word) 40
(byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0
to:main::@2
main::@return: scope:[main] from main::@2
return
to:@return
@1: scope:[] from @begin
call main param-assignment
to:@end
@end: scope:[] from @1
Constant (const word) main::idx#0 = ((word))main::$4
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
@ -1145,10 +1189,11 @@ Inlining constant with var siblings (const word) main::idx#0
Inlining constant with var siblings (const word) main::idx#0 Inlining constant with var siblings (const word) main::idx#0
Inlining constant with var siblings (const word) main::idx#0 Inlining constant with var siblings (const word) main::idx#0
Inlining constant with var siblings (const word) main::idx#0 Inlining constant with var siblings (const word) main::idx#0
Constant inlined main::idx#0 = ((word))(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40
Constant inlined main::$13 = (const byte) main::x1#0+(byte/signed byte/word/signed word) 1 Constant inlined main::$13 = (const byte) main::x1#0+(byte/signed byte/word/signed word) 1
Constant inlined main::idx#0 = (byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40
Constant inlined main::$3 = (byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 Constant inlined main::$3 = (byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40
Constant inlined main::x#0 = (byte/signed byte/word/signed word) 0 Constant inlined main::x#0 = (byte/signed byte/word/signed word) 0
Constant inlined main::$4 = (byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40
Constant inlined main::y#0 = (byte/signed byte/word/signed word) 0 Constant inlined main::y#0 = (byte/signed byte/word/signed word) 0
Constant inlined main::e#0 = (const byte) main::yd#0/(byte/signed byte/word/signed word) 2 Constant inlined main::e#0 = (const byte) main::yd#0/(byte/signed byte/word/signed word) 2
Succesful SSA optimization Pass2ConstantInlining Succesful SSA optimization Pass2ConstantInlining
@ -1161,7 +1206,7 @@ main::@1: scope:[main] from main main::@2
(byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::y#4 ) (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::y#4 )
(byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte/signed byte/word/signed word) 2 main::@2/(byte) main::e#5 ) (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte/signed byte/word/signed word) 2 main::@2/(byte) main::e#5 )
(byte) main::x#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::x#1 ) (byte) main::x#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::x#1 )
(word) main::idx#3 ← phi( main/(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 main::@2/(word) main::idx#5 ) (word) main::idx#3 ← phi( main/((word))(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 main::@2/(word) main::idx#5 )
*((const byte[1000]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0 *((const byte[1000]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0
(byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1
(word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1
@ -1209,7 +1254,7 @@ FINAL SYMBOL TABLE
(word) main::idx#3 (word) main::idx#3
(word) main::idx#5 (word) main::idx#5
(byte[1000]) main::screen (byte[1000]) main::screen
(const byte[1000]) main::screen#0 = (word/signed word) 1024 (const byte[1000]) main::screen#0 = ((byte*))(word/signed word) 1024
(byte) main::x (byte) main::x
(byte) main::x#1 (byte) main::x#1
(byte) main::x#2 (byte) main::x#2
@ -1245,7 +1290,7 @@ main::@1: scope:[main] from main main::@5
(byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::y#5 ) (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::y#5 )
(byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte/signed byte/word/signed word) 2 main::@5/(byte~) main::e#6 ) (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte/signed byte/word/signed word) 2 main::@5/(byte~) main::e#6 )
(byte) main::x#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::x#5 ) (byte) main::x#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::x#5 )
(word) main::idx#3 ← phi( main/(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 main::@5/(word~) main::idx#6 ) (word) main::idx#3 ← phi( main/((word))(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 main::@5/(word~) main::idx#6 )
*((const byte[1000]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0 *((const byte[1000]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0
(byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1
(word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1
@ -1307,7 +1352,7 @@ main::@1: scope:[main] from main main::@5
[2] (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::y#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] [2] (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::y#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ]
[2] (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte/signed byte/word/signed word) 2 main::@5/(byte~) main::e#6 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] [2] (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte/signed byte/word/signed word) 2 main::@5/(byte~) main::e#6 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ]
[2] (byte) main::x#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::x#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] [2] (byte) main::x#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::x#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ]
[2] (word) main::idx#3 ← phi( main/(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 main::@5/(word~) main::idx#6 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] [2] (word) main::idx#3 ← phi( main/((word))(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 main::@5/(word~) main::idx#6 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ]
[3] *((const byte[1000]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] [3] *((const byte[1000]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ]
[4] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] [4] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::idx#3 main::e#3 main::y#2 main::x#1 ]
[5] (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] [5] (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 [ main::e#3 main::y#2 main::x#1 main::idx#1 ]
@ -1380,7 +1425,7 @@ main::@1: scope:[main] from main main::@2
[2] (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::y#4 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] [2] (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::y#4 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ]
[2] (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte/signed byte/word/signed word) 2 main::@2/(byte) main::e#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] [2] (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte/signed byte/word/signed word) 2 main::@2/(byte) main::e#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ]
[2] (byte) main::x#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::x#1 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] [2] (byte) main::x#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::x#1 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ]
[2] (word) main::idx#3 ← phi( main/(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 main::@2/(word) main::idx#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] [2] (word) main::idx#3 ← phi( main/((word))(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 main::@2/(word) main::idx#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ]
[3] *((const byte[1000]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] [3] *((const byte[1000]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ]
[4] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] [4] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::idx#3 main::e#3 main::y#2 main::x#1 ]
[5] (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] [5] (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 [ main::e#3 main::y#2 main::x#1 main::idx#1 ]
@ -1416,7 +1461,7 @@ main::@1: scope:[main] from main main::@2
[2] (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::y#4 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) [2] (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::y#4 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] )
[2] (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte/signed byte/word/signed word) 2 main::@2/(byte) main::e#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) [2] (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte/signed byte/word/signed word) 2 main::@2/(byte) main::e#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] )
[2] (byte) main::x#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::x#1 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) [2] (byte) main::x#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::x#1 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] )
[2] (word) main::idx#3 ← phi( main/(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 main::@2/(word) main::idx#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) [2] (word) main::idx#3 ← phi( main/((word))(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 main::@2/(word) main::idx#5 ) [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] )
[3] *((const byte[1000]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ) [3] *((const byte[1000]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( main:0 [ main::idx#3 main::x#2 main::e#3 main::y#2 ] )
[4] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ) [4] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word) 1 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] ( main:0 [ main::idx#3 main::e#3 main::y#2 main::x#1 ] )
[5] (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ) [5] (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word) 1 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] ( main:0 [ main::e#3 main::y#2 main::x#1 main::idx#1 ] )
@ -1543,10 +1588,10 @@ main: {
//SEG11 [2] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#2] -- zpby1=coby1 //SEG11 [2] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#2] -- zpby1=coby1
lda #0 lda #0
sta x sta x
//SEG12 [2] phi (word) main::idx#3 = (byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 [phi:main->main::@1#3] -- zpwo1=coby1 //SEG12 [2] phi (word) main::idx#3 = ((word))(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 [phi:main->main::@1#3] -- zpwo1=cowo1
lda #0+0*$28 lda #<0+0*$28
sta idx sta idx
lda #0 lda #>0+0*$28
sta idx+1 sta idx+1
jmp b1 jmp b1
//SEG13 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] //SEG13 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
@ -1691,10 +1736,10 @@ main: {
ldy #yd/2 ldy #yd/2
//SEG11 [2] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#2] -- xby=coby1 //SEG11 [2] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#2] -- xby=coby1
ldx #0 ldx #0
//SEG12 [2] phi (word) main::idx#3 = (byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 [phi:main->main::@1#3] -- zpwo1=coby1 //SEG12 [2] phi (word) main::idx#3 = ((word))(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 [phi:main->main::@1#3] -- zpwo1=cowo1
lda #0+0*$28 lda #<0+0*$28
sta idx sta idx
lda #0 lda #>0+0*$28
sta idx+1 sta idx+1
jmp b1 jmp b1
//SEG13 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] //SEG13 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
@ -1766,7 +1811,6 @@ main: {
} }
Replacing instruction ldx #0 with TAX Replacing instruction ldx #0 with TAX
Replacing instruction lda #0 with TXA
Replacing label b2_from_b1 with b2 Replacing label b2_from_b1 with b2
Replacing label b1_from_b2 with b1 Replacing label b1_from_b2 with b1
Removing instruction bbegin: Removing instruction bbegin:
@ -1808,10 +1852,10 @@ main: {
ldy #yd/2 ldy #yd/2
//SEG11 [2] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#2] -- xby=coby1 //SEG11 [2] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#2] -- xby=coby1
tax tax
//SEG12 [2] phi (word) main::idx#3 = (byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 [phi:main->main::@1#3] -- zpwo1=coby1 //SEG12 [2] phi (word) main::idx#3 = ((word))(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 [phi:main->main::@1#3] -- zpwo1=cowo1
lda #0+0*$28 lda #<0+0*$28
sta idx sta idx
txa lda #>0+0*$28
sta idx+1 sta idx+1
jmp b1 jmp b1
//SEG13 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] //SEG13 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
@ -1915,10 +1959,10 @@ main: {
ldy #yd/2 ldy #yd/2
//SEG11 [2] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#2] -- xby=coby1 //SEG11 [2] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#2] -- xby=coby1
tax tax
//SEG12 [2] phi (word) main::idx#3 = (byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 [phi:main->main::@1#3] -- zpwo1=coby1 //SEG12 [2] phi (word) main::idx#3 = ((word))(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 [phi:main->main::@1#3] -- zpwo1=cowo1
lda #0+0*$28 lda #<0+0*$28
sta idx sta idx
txa lda #>0+0*$28
sta idx+1 sta idx+1
jmp b1 jmp b1
//SEG13 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] //SEG13 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
@ -2016,10 +2060,10 @@ main: {
ldy #yd/2 ldy #yd/2
//SEG11 [2] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#2] -- xby=coby1 //SEG11 [2] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#2] -- xby=coby1
tax tax
//SEG12 [2] phi (word) main::idx#3 = (byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 [phi:main->main::@1#3] -- zpwo1=coby1 //SEG12 [2] phi (word) main::idx#3 = ((word))(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 [phi:main->main::@1#3] -- zpwo1=cowo1
lda #0+0*$28 lda #<0+0*$28
sta idx sta idx
txa lda #>0+0*$28
sta idx+1 sta idx+1
//SEG13 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] //SEG13 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
//SEG14 [2] phi (byte) main::y#2 = (byte) main::y#4 [phi:main::@2->main::@1#0] -- register_copy //SEG14 [2] phi (byte) main::y#2 = (byte) main::y#4 [phi:main::@2->main::@1#0] -- register_copy
@ -2106,7 +2150,7 @@ FINAL SYMBOL TABLE
(word) main::idx#3 idx zp ZP_WORD:2 11.0 (word) main::idx#3 idx zp ZP_WORD:2 11.0
(word) main::idx#5 idx zp ZP_WORD:2 16.5 (word) main::idx#5 idx zp ZP_WORD:2 16.5
(byte[1000]) main::screen (byte[1000]) main::screen
(const byte[1000]) main::screen#0 screen = (word/signed word) 1024 (const byte[1000]) main::screen#0 screen = ((byte*))(word/signed word) 1024
(byte) main::x (byte) main::x
(byte) main::x#1 reg byte x 3.666666666666667 (byte) main::x#1 reg byte x 3.666666666666667
(byte) main::x#2 reg byte x 11.0 (byte) main::x#2 reg byte x 11.0
@ -2160,10 +2204,10 @@ main: {
ldy #yd/2 ldy #yd/2
//SEG11 [2] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#2] -- xby=coby1 //SEG11 [2] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#2] -- xby=coby1
tax tax
//SEG12 [2] phi (word) main::idx#3 = (byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 [phi:main->main::@1#3] -- zpwo1=coby1 //SEG12 [2] phi (word) main::idx#3 = ((word))(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 0*(byte/signed byte/word/signed word) 40 [phi:main->main::@1#3] -- zpwo1=cowo1
lda #0+0*$28 lda #<0+0*$28
sta idx sta idx
txa lda #>0+0*$28
sta idx+1 sta idx+1
//SEG13 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] //SEG13 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
//SEG14 [2] phi (byte) main::y#2 = (byte) main::y#4 [phi:main::@2->main::@1#0] -- register_copy //SEG14 [2] phi (byte) main::y#2 = (byte) main::y#4 [phi:main::@2->main::@1#0] -- register_copy

View File

@ -19,7 +19,7 @@
(word) main::idx#3 idx zp ZP_WORD:2 11.0 (word) main::idx#3 idx zp ZP_WORD:2 11.0
(word) main::idx#5 idx zp ZP_WORD:2 16.5 (word) main::idx#5 idx zp ZP_WORD:2 16.5
(byte[1000]) main::screen (byte[1000]) main::screen
(const byte[1000]) main::screen#0 screen = (word/signed word) 1024 (const byte[1000]) main::screen#0 screen = ((byte*))(word/signed word) 1024
(byte) main::x (byte) main::x
(byte) main::x#1 reg byte x 3.666666666666667 (byte) main::x#1 reg byte x 3.666666666666667
(byte) main::x#2 reg byte x 11.0 (byte) main::x#2 reg byte x 11.0

View File

@ -16,7 +16,7 @@ main::@return: scope:[main] from main::@1
to:@return to:@return
line: scope:[line] from main main::@1 line: scope:[line] from main main::@1
[5] (byte) line::x1#3 ← phi( main/(byte/signed byte/word/signed word) 2 main::@1/(byte/signed byte/word/signed word) 5 ) [ line::x#0 screen#14 line::x1#3 ] ( main:0::line:2 [ line::x#0 screen#14 line::x1#3 ] main:0::line:3 [ line::x#0 screen#14 line::x1#3 ] ) [5] (byte) line::x1#3 ← phi( main/(byte/signed byte/word/signed word) 2 main::@1/(byte/signed byte/word/signed word) 5 ) [ line::x#0 screen#14 line::x1#3 ] ( main:0::line:2 [ line::x#0 screen#14 line::x1#3 ] main:0::line:3 [ line::x#0 screen#14 line::x1#3 ] )
[5] (byte*) screen#14 ← phi( main/(word/signed word) 1024 main::@1/(byte*) screen#1 ) [ line::x#0 screen#14 line::x1#3 ] ( main:0::line:2 [ line::x#0 screen#14 line::x1#3 ] main:0::line:3 [ line::x#0 screen#14 line::x1#3 ] ) [5] (byte*) screen#14 ← phi( main/((byte*))(word/signed word) 1024 main::@1/(byte*) screen#1 ) [ line::x#0 screen#14 line::x1#3 ] ( main:0::line:2 [ line::x#0 screen#14 line::x1#3 ] main:0::line:3 [ line::x#0 screen#14 line::x1#3 ] )
[5] (byte) line::x#0 ← phi( main/(byte/signed byte/word/signed word) 1 main::@1/(byte/signed byte/word/signed word) 3 ) [ line::x#0 screen#14 line::x1#3 ] ( main:0::line:2 [ line::x#0 screen#14 line::x1#3 ] main:0::line:3 [ line::x#0 screen#14 line::x1#3 ] ) [5] (byte) line::x#0 ← phi( main/(byte/signed byte/word/signed word) 1 main::@1/(byte/signed byte/word/signed word) 3 ) [ line::x#0 screen#14 line::x1#3 ] ( main:0::line:2 [ line::x#0 screen#14 line::x1#3 ] main:0::line:3 [ line::x#0 screen#14 line::x1#3 ] )
to:line::@1 to:line::@1
line::@1: scope:[line] from line line::@1 line::@1: scope:[line] from line line::@1

View File

@ -55,7 +55,7 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) screen ← (word/signed word) 1024 (byte*) screen ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(void~) main::$0 ← call line (byte/signed byte/word/signed word) 1 (byte/signed byte/word/signed word) 2 (void~) main::$0 ← call line (byte/signed byte/word/signed word) 1 (byte/signed byte/word/signed word) 2
@ -90,7 +90,7 @@ Removing empty block @1
Removing empty block line::@2 Removing empty block line::@2
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) screen ← (word/signed word) 1024 (byte*) screen ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from main: scope:[main] from
(void~) main::$0 ← call line (byte/signed byte/word/signed word) 1 (byte/signed byte/word/signed word) 2 (void~) main::$0 ← call line (byte/signed byte/word/signed word) 1 (byte/signed byte/word/signed word) 2
@ -123,7 +123,7 @@ line modifies screen
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
(byte*) screen ← (word/signed word) 1024 (byte*) screen ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
(byte) line::x0 ← (byte/signed byte/word/signed word) 1 (byte) line::x0 ← (byte/signed byte/word/signed word) 1
@ -169,7 +169,7 @@ Completing Phi functions...
Completing Phi functions... Completing Phi functions...
CONTROL FLOW GRAPH SSA CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
(byte*) screen#0 ← (word/signed word) 1024 (byte*) screen#0 ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
(byte*) screen#13 ← phi( @2/(byte*) screen#15 ) (byte*) screen#13 ← phi( @2/(byte*) screen#15 )
@ -226,7 +226,7 @@ line::@return: scope:[line] from line::@1
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
(byte*) screen#0 ← (word/signed word) 1024 (byte*) screen#0 ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
(byte*) screen#13 ← phi( @2/(byte*) screen#15 ) (byte*) screen#13 ← phi( @2/(byte*) screen#15 )
@ -331,7 +331,7 @@ Alias (byte) line::x#0 = (byte) line::x0#2
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) screen#0 ← (word/signed word) 1024 (byte*) screen#0 ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
(byte) line::x0#0 ← (byte/signed byte/word/signed word) 1 (byte) line::x0#0 ← (byte/signed byte/word/signed word) 1
@ -377,7 +377,7 @@ Self Phi Eliminated (byte) line::x1#2
Succesful SSA optimization Pass2SelfPhiElimination Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) screen#0 ← (word/signed word) 1024 (byte*) screen#0 ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
(byte) line::x0#0 ← (byte/signed byte/word/signed word) 1 (byte) line::x0#0 ← (byte/signed byte/word/signed word) 1
@ -423,7 +423,7 @@ Redundant Phi (byte) line::x1#2 (byte) line::x1#3
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) screen#0 ← (word/signed word) 1024 (byte*) screen#0 ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
(byte) line::x0#0 ← (byte/signed byte/word/signed word) 1 (byte) line::x0#0 ← (byte/signed byte/word/signed word) 1
@ -468,7 +468,7 @@ Simple Condition (boolean~) line::$0 if((byte) line::x#1<(byte) line::x1#3) goto
Succesful SSA optimization Pass2ConditionalJumpSimplification Succesful SSA optimization Pass2ConditionalJumpSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) screen#0 ← (word/signed word) 1024 (byte*) screen#0 ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
(byte) line::x0#0 ← (byte/signed byte/word/signed word) 1 (byte) line::x0#0 ← (byte/signed byte/word/signed word) 1
@ -508,7 +508,7 @@ line::@return: scope:[line] from line::@1
to:@end to:@end
@end: scope:[] from @3 @end: scope:[] from @3
Constant (const byte*) screen#0 = 1024 Constant (const byte*) screen#0 = ((byte*))1024
Constant (const byte) line::x0#0 = 1 Constant (const byte) line::x0#0 = 1
Constant (const byte) line::x1#0 = 2 Constant (const byte) line::x1#0 = 2
Constant (const byte) line::x0#1 = 3 Constant (const byte) line::x0#1 = 3
@ -598,7 +598,7 @@ Inlining constant with var siblings (const byte*) screen#0
Inlining constant with var siblings (const byte*) screen#0 Inlining constant with var siblings (const byte*) screen#0
Constant inlined line::x0#0 = (byte/signed byte/word/signed word) 1 Constant inlined line::x0#0 = (byte/signed byte/word/signed word) 1
Constant inlined line::x1#1 = (byte/signed byte/word/signed word) 5 Constant inlined line::x1#1 = (byte/signed byte/word/signed word) 5
Constant inlined screen#0 = (word/signed word) 1024 Constant inlined screen#0 = ((byte*))(word/signed word) 1024
Constant inlined line::x1#0 = (byte/signed byte/word/signed word) 2 Constant inlined line::x1#0 = (byte/signed byte/word/signed word) 2
Constant inlined line::x0#1 = (byte/signed byte/word/signed word) 3 Constant inlined line::x0#1 = (byte/signed byte/word/signed word) 3
Succesful SSA optimization Pass2ConstantInlining Succesful SSA optimization Pass2ConstantInlining
@ -616,7 +616,7 @@ main::@return: scope:[main] from main::@1
to:@return to:@return
line: scope:[line] from main main::@1 line: scope:[line] from main main::@1
(byte) line::x1#3 ← phi( main/(byte/signed byte/word/signed word) 2 main::@1/(byte/signed byte/word/signed word) 5 ) (byte) line::x1#3 ← phi( main/(byte/signed byte/word/signed word) 2 main::@1/(byte/signed byte/word/signed word) 5 )
(byte*) screen#14 ← phi( main/(word/signed word) 1024 main::@1/(byte*) screen#1 ) (byte*) screen#14 ← phi( main/((byte*))(word/signed word) 1024 main::@1/(byte*) screen#1 )
(byte) line::x#0 ← phi( main/(byte/signed byte/word/signed word) 1 main::@1/(byte/signed byte/word/signed word) 3 ) (byte) line::x#0 ← phi( main/(byte/signed byte/word/signed word) 1 main::@1/(byte/signed byte/word/signed word) 3 )
to:line::@1 to:line::@1
line::@1: scope:[line] from line line::@1 line::@1: scope:[line] from line line::@1
@ -679,7 +679,7 @@ main::@return: scope:[main] from main::@1
to:@return to:@return
line: scope:[line] from main main::@1 line: scope:[line] from main main::@1
(byte) line::x1#3 ← phi( main/(byte/signed byte/word/signed word) 2 main::@1/(byte/signed byte/word/signed word) 5 ) (byte) line::x1#3 ← phi( main/(byte/signed byte/word/signed word) 2 main::@1/(byte/signed byte/word/signed word) 5 )
(byte*) screen#14 ← phi( main/(word/signed word) 1024 main::@1/(byte*~) screen#16 ) (byte*) screen#14 ← phi( main/((byte*))(word/signed word) 1024 main::@1/(byte*~) screen#16 )
(byte) line::x#0 ← phi( main/(byte/signed byte/word/signed word) 1 main::@1/(byte/signed byte/word/signed word) 3 ) (byte) line::x#0 ← phi( main/(byte/signed byte/word/signed word) 1 main::@1/(byte/signed byte/word/signed word) 3 )
(byte~) line::x#3 ← (byte) line::x#0 (byte~) line::x#3 ← (byte) line::x#0
(byte*~) screen#17 ← (byte*) screen#14 (byte*~) screen#17 ← (byte*) screen#14
@ -733,7 +733,7 @@ main::@return: scope:[main] from main::@1
to:@return to:@return
line: scope:[line] from main main::@1 line: scope:[line] from main main::@1
[6] (byte) line::x1#3 ← phi( main/(byte/signed byte/word/signed word) 2 main::@1/(byte/signed byte/word/signed word) 5 ) [ line::x#0 screen#14 line::x1#3 ] [6] (byte) line::x1#3 ← phi( main/(byte/signed byte/word/signed word) 2 main::@1/(byte/signed byte/word/signed word) 5 ) [ line::x#0 screen#14 line::x1#3 ]
[6] (byte*) screen#14 ← phi( main/(word/signed word) 1024 main::@1/(byte*~) screen#16 ) [ line::x#0 screen#14 line::x1#3 ] [6] (byte*) screen#14 ← phi( main/((byte*))(word/signed word) 1024 main::@1/(byte*~) screen#16 ) [ line::x#0 screen#14 line::x1#3 ]
[6] (byte) line::x#0 ← phi( main/(byte/signed byte/word/signed word) 1 main::@1/(byte/signed byte/word/signed word) 3 ) [ line::x#0 screen#14 line::x1#3 ] [6] (byte) line::x#0 ← phi( main/(byte/signed byte/word/signed word) 1 main::@1/(byte/signed byte/word/signed word) 3 ) [ line::x#0 screen#14 line::x1#3 ]
[7] (byte~) line::x#3 ← (byte) line::x#0 [ screen#14 line::x1#3 line::x#3 ] [7] (byte~) line::x#3 ← (byte) line::x#0 [ screen#14 line::x1#3 line::x#3 ]
[8] (byte*~) screen#17 ← (byte*) screen#14 [ line::x1#3 line::x#3 screen#17 ] [8] (byte*~) screen#17 ← (byte*) screen#14 [ line::x1#3 line::x#3 screen#17 ]
@ -789,7 +789,7 @@ main::@return: scope:[main] from main::@1
to:@return to:@return
line: scope:[line] from main main::@1 line: scope:[line] from main main::@1
[5] (byte) line::x1#3 ← phi( main/(byte/signed byte/word/signed word) 2 main::@1/(byte/signed byte/word/signed word) 5 ) [ line::x#0 screen#14 line::x1#3 ] [5] (byte) line::x1#3 ← phi( main/(byte/signed byte/word/signed word) 2 main::@1/(byte/signed byte/word/signed word) 5 ) [ line::x#0 screen#14 line::x1#3 ]
[5] (byte*) screen#14 ← phi( main/(word/signed word) 1024 main::@1/(byte*) screen#1 ) [ line::x#0 screen#14 line::x1#3 ] [5] (byte*) screen#14 ← phi( main/((byte*))(word/signed word) 1024 main::@1/(byte*) screen#1 ) [ line::x#0 screen#14 line::x1#3 ]
[5] (byte) line::x#0 ← phi( main/(byte/signed byte/word/signed word) 1 main::@1/(byte/signed byte/word/signed word) 3 ) [ line::x#0 screen#14 line::x1#3 ] [5] (byte) line::x#0 ← phi( main/(byte/signed byte/word/signed word) 1 main::@1/(byte/signed byte/word/signed word) 3 ) [ line::x#0 screen#14 line::x1#3 ]
to:line::@1 to:line::@1
line::@1: scope:[line] from line line::@1 line::@1: scope:[line] from line line::@1
@ -823,7 +823,7 @@ main::@return: scope:[main] from main::@1
to:@return to:@return
line: scope:[line] from main main::@1 line: scope:[line] from main main::@1
[5] (byte) line::x1#3 ← phi( main/(byte/signed byte/word/signed word) 2 main::@1/(byte/signed byte/word/signed word) 5 ) [ line::x#0 screen#14 line::x1#3 ] ( main:0::line:2 [ line::x#0 screen#14 line::x1#3 ] main:0::line:3 [ line::x#0 screen#14 line::x1#3 ] ) [5] (byte) line::x1#3 ← phi( main/(byte/signed byte/word/signed word) 2 main::@1/(byte/signed byte/word/signed word) 5 ) [ line::x#0 screen#14 line::x1#3 ] ( main:0::line:2 [ line::x#0 screen#14 line::x1#3 ] main:0::line:3 [ line::x#0 screen#14 line::x1#3 ] )
[5] (byte*) screen#14 ← phi( main/(word/signed word) 1024 main::@1/(byte*) screen#1 ) [ line::x#0 screen#14 line::x1#3 ] ( main:0::line:2 [ line::x#0 screen#14 line::x1#3 ] main:0::line:3 [ line::x#0 screen#14 line::x1#3 ] ) [5] (byte*) screen#14 ← phi( main/((byte*))(word/signed word) 1024 main::@1/(byte*) screen#1 ) [ line::x#0 screen#14 line::x1#3 ] ( main:0::line:2 [ line::x#0 screen#14 line::x1#3 ] main:0::line:3 [ line::x#0 screen#14 line::x1#3 ] )
[5] (byte) line::x#0 ← phi( main/(byte/signed byte/word/signed word) 1 main::@1/(byte/signed byte/word/signed word) 3 ) [ line::x#0 screen#14 line::x1#3 ] ( main:0::line:2 [ line::x#0 screen#14 line::x1#3 ] main:0::line:3 [ line::x#0 screen#14 line::x1#3 ] ) [5] (byte) line::x#0 ← phi( main/(byte/signed byte/word/signed word) 1 main::@1/(byte/signed byte/word/signed word) 3 ) [ line::x#0 screen#14 line::x1#3 ] ( main:0::line:2 [ line::x#0 screen#14 line::x1#3 ] main:0::line:3 [ line::x#0 screen#14 line::x1#3 ] )
to:line::@1 to:line::@1
line::@1: scope:[line] from line line::@1 line::@1: scope:[line] from line line::@1
@ -915,7 +915,7 @@ main: {
//SEG10 [5] phi (byte) line::x1#3 = (byte/signed byte/word/signed word) 2 [phi:main->line#0] -- zpby1=coby1 //SEG10 [5] phi (byte) line::x1#3 = (byte/signed byte/word/signed word) 2 [phi:main->line#0] -- zpby1=coby1
lda #2 lda #2
sta line.x1 sta line.x1
//SEG11 [5] phi (byte*) screen#14 = (word/signed word) 1024 [phi:main->line#1] -- zpptrby1=cowo1 //SEG11 [5] phi (byte*) screen#14 = ((byte*))(word/signed word) 1024 [phi:main->line#1] -- zpptrby1=cowo1
lda #<$400 lda #<$400
sta screen sta screen
lda #>$400 lda #>$400
@ -1030,7 +1030,7 @@ main: {
//SEG10 [5] phi (byte) line::x1#3 = (byte/signed byte/word/signed word) 2 [phi:main->line#0] -- zpby1=coby1 //SEG10 [5] phi (byte) line::x1#3 = (byte/signed byte/word/signed word) 2 [phi:main->line#0] -- zpby1=coby1
lda #2 lda #2
sta line.x1 sta line.x1
//SEG11 [5] phi (byte*) screen#14 = (word/signed word) 1024 [phi:main->line#1] -- zpptrby1=cowo1 //SEG11 [5] phi (byte*) screen#14 = ((byte*))(word/signed word) 1024 [phi:main->line#1] -- zpptrby1=cowo1
lda #<$400 lda #<$400
sta screen sta screen
lda #>$400 lda #>$400
@ -1115,7 +1115,7 @@ main: {
//SEG10 [5] phi (byte) line::x1#3 = (byte/signed byte/word/signed word) 2 [phi:main->line#0] -- zpby1=coby1 //SEG10 [5] phi (byte) line::x1#3 = (byte/signed byte/word/signed word) 2 [phi:main->line#0] -- zpby1=coby1
lda #2 lda #2
sta line.x1 sta line.x1
//SEG11 [5] phi (byte*) screen#14 = (word/signed word) 1024 [phi:main->line#1] -- zpptrby1=cowo1 //SEG11 [5] phi (byte*) screen#14 = ((byte*))(word/signed word) 1024 [phi:main->line#1] -- zpptrby1=cowo1
lda #<$400 lda #<$400
sta screen sta screen
lda #>$400 lda #>$400
@ -1194,7 +1194,7 @@ main: {
//SEG10 [5] phi (byte) line::x1#3 = (byte/signed byte/word/signed word) 2 [phi:main->line#0] -- zpby1=coby1 //SEG10 [5] phi (byte) line::x1#3 = (byte/signed byte/word/signed word) 2 [phi:main->line#0] -- zpby1=coby1
lda #2 lda #2
sta line.x1 sta line.x1
//SEG11 [5] phi (byte*) screen#14 = (word/signed word) 1024 [phi:main->line#1] -- zpptrby1=cowo1 //SEG11 [5] phi (byte*) screen#14 = ((byte*))(word/signed word) 1024 [phi:main->line#1] -- zpptrby1=cowo1
lda #<$400 lda #<$400
sta screen sta screen
lda #>$400 lda #>$400
@ -1289,7 +1289,7 @@ main: {
//SEG10 [5] phi (byte) line::x1#3 = (byte/signed byte/word/signed word) 2 [phi:main->line#0] -- zpby1=coby1 //SEG10 [5] phi (byte) line::x1#3 = (byte/signed byte/word/signed word) 2 [phi:main->line#0] -- zpby1=coby1
lda #2 lda #2
sta line.x1 sta line.x1
//SEG11 [5] phi (byte*) screen#14 = (word/signed word) 1024 [phi:main->line#1] -- zpptrby1=cowo1 //SEG11 [5] phi (byte*) screen#14 = ((byte*))(word/signed word) 1024 [phi:main->line#1] -- zpptrby1=cowo1
lda #<$400 lda #<$400
sta screen sta screen
lda #>$400 lda #>$400

View File

@ -11,9 +11,9 @@ main::@1: scope:[main] from main main::@1
[2] (byte) main::b#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::b#1 ) [ main::b#2 ] ( main:0 [ main::b#2 ] ) [2] (byte) main::b#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::b#1 ) [ main::b#2 ] ( main:0 [ main::b#2 ] )
[3] (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 [ main::b#2 main::b2#0 ] ( main:0 [ main::b#2 main::b2#0 ] ) [3] (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 [ main::b#2 main::b2#0 ] ( main:0 [ main::b#2 main::b2#0 ] )
[4] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 [ main::b#2 ] ( main:0 [ main::b#2 ] ) [4] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 [ main::b#2 ] ( main:0 [ main::b#2 ] )
[5] (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] ) [5] (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] )
[6] (signed byte) main::sb#0 ← - (signed byte~) main::$1 [ main::b#2 main::sb#0 ] ( main:0 [ main::b#2 main::sb#0 ] ) [6] (signed byte) main::sb#0 ← - (signed byte~) main::$1 [ main::b#2 main::sb#0 ] ( main:0 [ main::b#2 main::sb#0 ] )
[7] (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] ) [7] (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] )
[8] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 [ main::b#2 ] ( main:0 [ main::b#2 ] ) [8] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 [ main::b#2 ] ( main:0 [ main::b#2 ] )
[9] (byte) main::b#1 ← ++ (byte) main::b#2 [ main::b#1 ] ( main:0 [ main::b#1 ] ) [9] (byte) main::b#1 ← ++ (byte) main::b#2 [ main::b#1 ] ( main:0 [ main::b#1 ] )
[10] if((byte) main::b#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::b#1 ] ( main:0 [ main::b#1 ] ) [10] if((byte) main::b#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::b#1 ] ( main:0 [ main::b#1 ] )

View File

@ -44,10 +44,10 @@ main::@1:
(byte~) main::$0 ← (byte/word/signed word) 200 - (byte) main::b (byte~) main::$0 ← (byte/word/signed word) 200 - (byte) main::b
(byte) main::b2 ← (byte~) main::$0 (byte) main::b2 ← (byte~) main::$0
*((byte*) SCREEN + (byte) main::b) ← (byte) main::b2 *((byte*) SCREEN + (byte) main::b) ← (byte) main::b2
(signed byte~) main::$1 ← _sbyte_ (byte) main::b (signed byte~) main::$1 ← ((signed byte)) (byte) main::b
(signed byte~) main::$2 ← - (signed byte~) main::$1 (signed byte~) main::$2 ← - (signed byte~) main::$1
(signed byte) main::sb ← (signed byte~) main::$2 (signed byte) main::sb ← (signed byte~) main::$2
(byte~) main::$3 ← _byte_ (signed byte) main::sb (byte~) main::$3 ← ((byte)) (signed byte) main::sb
*((byte*) SCREEN2 + (byte) main::b) ← (byte~) main::$3 *((byte*) SCREEN2 + (byte) main::b) ← (byte~) main::$3
(byte) main::b ← ++ (byte) main::b (byte) main::b ← ++ (byte) main::b
(boolean~) main::$4 ← (byte) main::b != (byte/signed byte/word/signed word) 101 (boolean~) main::$4 ← (byte) main::b != (byte/signed byte/word/signed word) 101
@ -62,7 +62,7 @@ w::@1:
(word) w::w1 ← (word/signed word) 1300 (word) w::w1 ← (word/signed word) 1300
(word) w::w2 ← (word/signed word) 1250 (word) w::w2 ← (word/signed word) 1250
(word~) w::$0 ← (word) w::w1 - (word) w::w2 (word~) w::$0 ← (word) w::w1 - (word) w::w2
(byte~) w::$1 ← _byte_ (word~) w::$0 (byte~) w::$1 ← ((byte)) (word~) w::$0
(byte) w::b ← (byte~) w::$1 (byte) w::b ← (byte~) w::$1
(byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350 (byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350
(byte~) w::$3 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i (byte~) w::$3 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i
@ -116,7 +116,7 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3
(byte*~) $1 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) $0 (byte*~) $1 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) $0
(byte*) SCREEN2 ← (byte*~) $1 (byte*) SCREEN2 ← (byte*~) $1
@ -134,10 +134,10 @@ main::@1: scope:[main] from main main::@1
(byte~) main::$0 ← (byte/word/signed word) 200 - (byte) main::b (byte~) main::$0 ← (byte/word/signed word) 200 - (byte) main::b
(byte) main::b2 ← (byte~) main::$0 (byte) main::b2 ← (byte~) main::$0
*((byte*) SCREEN + (byte) main::b) ← (byte) main::b2 *((byte*) SCREEN + (byte) main::b) ← (byte) main::b2
(signed byte~) main::$1 ← _sbyte_ (byte) main::b (signed byte~) main::$1 ← ((signed byte)) (byte) main::b
(signed byte~) main::$2 ← - (signed byte~) main::$1 (signed byte~) main::$2 ← - (signed byte~) main::$1
(signed byte) main::sb ← (signed byte~) main::$2 (signed byte) main::sb ← (signed byte~) main::$2
(byte~) main::$3 ← _byte_ (signed byte) main::sb (byte~) main::$3 ← ((byte)) (signed byte) main::sb
*((byte*) SCREEN2 + (byte) main::b) ← (byte~) main::$3 *((byte*) SCREEN2 + (byte) main::b) ← (byte~) main::$3
(byte) main::b ← ++ (byte) main::b (byte) main::b ← ++ (byte) main::b
(boolean~) main::$4 ← (byte) main::b != (byte/signed byte/word/signed word) 101 (boolean~) main::$4 ← (byte) main::b != (byte/signed byte/word/signed word) 101
@ -158,7 +158,7 @@ w::@1: scope:[w] from w w::@1
(word) w::w1 ← (word/signed word) 1300 (word) w::w1 ← (word/signed word) 1300
(word) w::w2 ← (word/signed word) 1250 (word) w::w2 ← (word/signed word) 1250
(word~) w::$0 ← (word) w::w1 - (word) w::w2 (word~) w::$0 ← (word) w::w1 - (word) w::w2
(byte~) w::$1 ← _byte_ (word~) w::$0 (byte~) w::$1 ← ((byte)) (word~) w::$0
(byte) w::b ← (byte~) w::$1 (byte) w::b ← (byte~) w::$1
(byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350 (byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350
(byte~) w::$3 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i (byte~) w::$3 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i
@ -183,7 +183,7 @@ Removing empty block @1
Removing empty block w::@2 Removing empty block w::@2
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3
(byte*~) $1 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) $0 (byte*~) $1 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) $0
(byte*) SCREEN2 ← (byte*~) $1 (byte*) SCREEN2 ← (byte*~) $1
@ -201,10 +201,10 @@ main::@1: scope:[main] from main main::@1
(byte~) main::$0 ← (byte/word/signed word) 200 - (byte) main::b (byte~) main::$0 ← (byte/word/signed word) 200 - (byte) main::b
(byte) main::b2 ← (byte~) main::$0 (byte) main::b2 ← (byte~) main::$0
*((byte*) SCREEN + (byte) main::b) ← (byte) main::b2 *((byte*) SCREEN + (byte) main::b) ← (byte) main::b2
(signed byte~) main::$1 ← _sbyte_ (byte) main::b (signed byte~) main::$1 ← ((signed byte)) (byte) main::b
(signed byte~) main::$2 ← - (signed byte~) main::$1 (signed byte~) main::$2 ← - (signed byte~) main::$1
(signed byte) main::sb ← (signed byte~) main::$2 (signed byte) main::sb ← (signed byte~) main::$2
(byte~) main::$3 ← _byte_ (signed byte) main::sb (byte~) main::$3 ← ((byte)) (signed byte) main::sb
*((byte*) SCREEN2 + (byte) main::b) ← (byte~) main::$3 *((byte*) SCREEN2 + (byte) main::b) ← (byte~) main::$3
(byte) main::b ← ++ (byte) main::b (byte) main::b ← ++ (byte) main::b
(boolean~) main::$4 ← (byte) main::b != (byte/signed byte/word/signed word) 101 (boolean~) main::$4 ← (byte) main::b != (byte/signed byte/word/signed word) 101
@ -223,7 +223,7 @@ w::@1: scope:[w] from w w::@1
(word) w::w1 ← (word/signed word) 1300 (word) w::w1 ← (word/signed word) 1300
(word) w::w2 ← (word/signed word) 1250 (word) w::w2 ← (word/signed word) 1250
(word~) w::$0 ← (word) w::w1 - (word) w::w2 (word~) w::$0 ← (word) w::w1 - (word) w::w2
(byte~) w::$1 ← _byte_ (word~) w::$0 (byte~) w::$1 ← ((byte)) (word~) w::$0
(byte) w::b ← (byte~) w::$1 (byte) w::b ← (byte~) w::$1
(byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350 (byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350
(byte~) w::$3 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i (byte~) w::$3 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i
@ -246,7 +246,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3
(byte*~) $1 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) $0 (byte*~) $1 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) $0
(byte*) SCREEN2 ← (byte*~) $1 (byte*) SCREEN2 ← (byte*~) $1
@ -264,10 +264,10 @@ main::@1: scope:[main] from main main::@1
(byte~) main::$0 ← (byte/word/signed word) 200 - (byte) main::b (byte~) main::$0 ← (byte/word/signed word) 200 - (byte) main::b
(byte) main::b2 ← (byte~) main::$0 (byte) main::b2 ← (byte~) main::$0
*((byte*) SCREEN + (byte) main::b) ← (byte) main::b2 *((byte*) SCREEN + (byte) main::b) ← (byte) main::b2
(signed byte~) main::$1 ← _sbyte_ (byte) main::b (signed byte~) main::$1 ← ((signed byte)) (byte) main::b
(signed byte~) main::$2 ← - (signed byte~) main::$1 (signed byte~) main::$2 ← - (signed byte~) main::$1
(signed byte) main::sb ← (signed byte~) main::$2 (signed byte) main::sb ← (signed byte~) main::$2
(byte~) main::$3 ← _byte_ (signed byte) main::sb (byte~) main::$3 ← ((byte)) (signed byte) main::sb
*((byte*) SCREEN2 + (byte) main::b) ← (byte~) main::$3 *((byte*) SCREEN2 + (byte) main::b) ← (byte~) main::$3
(byte) main::b ← ++ (byte) main::b (byte) main::b ← ++ (byte) main::b
(boolean~) main::$4 ← (byte) main::b != (byte/signed byte/word/signed word) 101 (boolean~) main::$4 ← (byte) main::b != (byte/signed byte/word/signed word) 101
@ -288,7 +288,7 @@ w::@1: scope:[w] from w w::@1
(word) w::w1 ← (word/signed word) 1300 (word) w::w1 ← (word/signed word) 1300
(word) w::w2 ← (word/signed word) 1250 (word) w::w2 ← (word/signed word) 1250
(word~) w::$0 ← (word) w::w1 - (word) w::w2 (word~) w::$0 ← (word) w::w1 - (word) w::w2
(byte~) w::$1 ← _byte_ (word~) w::$0 (byte~) w::$1 ← ((byte)) (word~) w::$0
(byte) w::b ← (byte~) w::$1 (byte) w::b ← (byte~) w::$1
(byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350 (byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350
(byte~) w::$3 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i (byte~) w::$3 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i
@ -317,7 +317,7 @@ Completing Phi functions...
Completing Phi functions... Completing Phi functions...
CONTROL FLOW GRAPH SSA CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3
(byte*~) $1 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word~) $0 (byte*~) $1 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word~) $0
(byte*) SCREEN2#0 ← (byte*~) $1 (byte*) SCREEN2#0 ← (byte*~) $1
@ -344,10 +344,10 @@ main::@1: scope:[main] from main main::@1
(byte~) main::$0 ← (byte/word/signed word) 200 - (byte) main::b#2 (byte~) main::$0 ← (byte/word/signed word) 200 - (byte) main::b#2
(byte) main::b2#0 ← (byte~) main::$0 (byte) main::b2#0 ← (byte~) main::$0
*((byte*) SCREEN#1 + (byte) main::b#2) ← (byte) main::b2#0 *((byte*) SCREEN#1 + (byte) main::b#2) ← (byte) main::b2#0
(signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2
(signed byte~) main::$2 ← - (signed byte~) main::$1 (signed byte~) main::$2 ← - (signed byte~) main::$1
(signed byte) main::sb#0 ← (signed byte~) main::$2 (signed byte) main::sb#0 ← (signed byte~) main::$2
(byte~) main::$3 ← _byte_ (signed byte) main::sb#0 (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0
*((byte*) SCREEN2#1 + (byte) main::b#2) ← (byte~) main::$3 *((byte*) SCREEN2#1 + (byte) main::b#2) ← (byte~) main::$3
(byte) main::b#1 ← ++ (byte) main::b#2 (byte) main::b#1 ← ++ (byte) main::b#2
(boolean~) main::$4 ← (byte) main::b#1 != (byte/signed byte/word/signed word) 101 (boolean~) main::$4 ← (byte) main::b#1 != (byte/signed byte/word/signed word) 101
@ -375,7 +375,7 @@ w::@1: scope:[w] from w w::@1
(word) w::w1#0 ← (word/signed word) 1300 (word) w::w1#0 ← (word/signed word) 1300
(word) w::w2#0 ← (word/signed word) 1250 (word) w::w2#0 ← (word/signed word) 1250
(word~) w::$0 ← (word) w::w1#0 - (word) w::w2#0 (word~) w::$0 ← (word) w::w1#0 - (word) w::w2#0
(byte~) w::$1 ← _byte_ (word~) w::$0 (byte~) w::$1 ← ((byte)) (word~) w::$0
(byte) w::b#0 ← (byte~) w::$1 (byte) w::b#0 ← (byte~) w::$1
(byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350 (byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350
(byte~) w::$3 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i#2 (byte~) w::$3 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i#2
@ -402,7 +402,7 @@ w::@return: scope:[w] from w::@1
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3
(byte*~) $1 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word~) $0 (byte*~) $1 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word~) $0
(byte*) SCREEN2#0 ← (byte*~) $1 (byte*) SCREEN2#0 ← (byte*~) $1
@ -429,10 +429,10 @@ main::@1: scope:[main] from main main::@1
(byte~) main::$0 ← (byte/word/signed word) 200 - (byte) main::b#2 (byte~) main::$0 ← (byte/word/signed word) 200 - (byte) main::b#2
(byte) main::b2#0 ← (byte~) main::$0 (byte) main::b2#0 ← (byte~) main::$0
*((byte*) SCREEN#1 + (byte) main::b#2) ← (byte) main::b2#0 *((byte*) SCREEN#1 + (byte) main::b#2) ← (byte) main::b2#0
(signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2
(signed byte~) main::$2 ← - (signed byte~) main::$1 (signed byte~) main::$2 ← - (signed byte~) main::$1
(signed byte) main::sb#0 ← (signed byte~) main::$2 (signed byte) main::sb#0 ← (signed byte~) main::$2
(byte~) main::$3 ← _byte_ (signed byte) main::sb#0 (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0
*((byte*) SCREEN2#1 + (byte) main::b#2) ← (byte~) main::$3 *((byte*) SCREEN2#1 + (byte) main::b#2) ← (byte~) main::$3
(byte) main::b#1 ← ++ (byte) main::b#2 (byte) main::b#1 ← ++ (byte) main::b#2
(boolean~) main::$4 ← (byte) main::b#1 != (byte/signed byte/word/signed word) 101 (boolean~) main::$4 ← (byte) main::b#1 != (byte/signed byte/word/signed word) 101
@ -460,7 +460,7 @@ w::@1: scope:[w] from w w::@1
(word) w::w1#0 ← (word/signed word) 1300 (word) w::w1#0 ← (word/signed word) 1300
(word) w::w2#0 ← (word/signed word) 1250 (word) w::w2#0 ← (word/signed word) 1250
(word~) w::$0 ← (word) w::w1#0 - (word) w::w2#0 (word~) w::$0 ← (word) w::w1#0 - (word) w::w2#0
(byte~) w::$1 ← _byte_ (word~) w::$0 (byte~) w::$1 ← ((byte)) (word~) w::$0
(byte) w::b#0 ← (byte~) w::$1 (byte) w::b#0 ← (byte~) w::$1
(byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350 (byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350
(byte~) w::$3 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i#2 (byte~) w::$3 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i#2
@ -566,7 +566,7 @@ Culled Empty Block (label) @3
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3
(byte*~) $1 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word~) $0 (byte*~) $1 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word~) $0
(byte*) SCREEN2#0 ← (byte*~) $1 (byte*) SCREEN2#0 ← (byte*~) $1
@ -593,10 +593,10 @@ main::@1: scope:[main] from main main::@1
(byte~) main::$0 ← (byte/word/signed word) 200 - (byte) main::b#2 (byte~) main::$0 ← (byte/word/signed word) 200 - (byte) main::b#2
(byte) main::b2#0 ← (byte~) main::$0 (byte) main::b2#0 ← (byte~) main::$0
*((byte*) SCREEN#1 + (byte) main::b#2) ← (byte) main::b2#0 *((byte*) SCREEN#1 + (byte) main::b#2) ← (byte) main::b2#0
(signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2
(signed byte~) main::$2 ← - (signed byte~) main::$1 (signed byte~) main::$2 ← - (signed byte~) main::$1
(signed byte) main::sb#0 ← (signed byte~) main::$2 (signed byte) main::sb#0 ← (signed byte~) main::$2
(byte~) main::$3 ← _byte_ (signed byte) main::sb#0 (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0
*((byte*) SCREEN2#1 + (byte) main::b#2) ← (byte~) main::$3 *((byte*) SCREEN2#1 + (byte) main::b#2) ← (byte~) main::$3
(byte) main::b#1 ← ++ (byte) main::b#2 (byte) main::b#1 ← ++ (byte) main::b#2
(boolean~) main::$4 ← (byte) main::b#1 != (byte/signed byte/word/signed word) 101 (boolean~) main::$4 ← (byte) main::b#1 != (byte/signed byte/word/signed word) 101
@ -622,7 +622,7 @@ w::@1: scope:[w] from w w::@1
(word) w::w1#0 ← (word/signed word) 1300 (word) w::w1#0 ← (word/signed word) 1300
(word) w::w2#0 ← (word/signed word) 1250 (word) w::w2#0 ← (word/signed word) 1250
(word~) w::$0 ← (word) w::w1#0 - (word) w::w2#0 (word~) w::$0 ← (word) w::w1#0 - (word) w::w2#0
(byte~) w::$1 ← _byte_ (word~) w::$0 (byte~) w::$1 ← ((byte)) (word~) w::$0
(byte) w::b#0 ← (byte~) w::$1 (byte) w::b#0 ← (byte~) w::$1
(byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350 (byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350
(byte~) w::$3 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i#2 (byte~) w::$3 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i#2
@ -658,7 +658,7 @@ Alias (byte) w::b2#0 = (byte~) w::$3
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3
(byte*) SCREEN2#0 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word~) $0 (byte*) SCREEN2#0 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word~) $0
(byte/word/signed word~) $2 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6 (byte/word/signed word~) $2 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6
@ -677,9 +677,9 @@ main::@1: scope:[main] from main main::@1
(byte) main::b#2 ← phi( main/(byte) main::b#0 main::@1/(byte) main::b#1 ) (byte) main::b#2 ← phi( main/(byte) main::b#0 main::@1/(byte) main::b#1 )
(byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2
*((byte*) SCREEN#1 + (byte) main::b#2) ← (byte) main::b2#0 *((byte*) SCREEN#1 + (byte) main::b#2) ← (byte) main::b2#0
(signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2
(signed byte) main::sb#0 ← - (signed byte~) main::$1 (signed byte) main::sb#0 ← - (signed byte~) main::$1
(byte~) main::$3 ← _byte_ (signed byte) main::sb#0 (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0
*((byte*) SCREEN2#1 + (byte) main::b#2) ← (byte~) main::$3 *((byte*) SCREEN2#1 + (byte) main::b#2) ← (byte~) main::$3
(byte) main::b#1 ← ++ (byte) main::b#2 (byte) main::b#1 ← ++ (byte) main::b#2
(boolean~) main::$4 ← (byte) main::b#1 != (byte/signed byte/word/signed word) 101 (boolean~) main::$4 ← (byte) main::b#1 != (byte/signed byte/word/signed word) 101
@ -701,7 +701,7 @@ w::@1: scope:[w] from w w::@1
(word) w::w1#0 ← (word/signed word) 1300 (word) w::w1#0 ← (word/signed word) 1300
(word) w::w2#0 ← (word/signed word) 1250 (word) w::w2#0 ← (word/signed word) 1250
(word~) w::$0 ← (word) w::w1#0 - (word) w::w2#0 (word~) w::$0 ← (word) w::w1#0 - (word) w::w2#0
(byte) w::b#0 ← _byte_ (word~) w::$0 (byte) w::b#0 ← ((byte)) (word~) w::$0
(byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350 (byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350
(byte) w::b2#0 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i#2 (byte) w::b2#0 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i#2
*((byte*) SCREEN3#1 + (byte) w::i#2) ← (byte) w::b#0 *((byte*) SCREEN3#1 + (byte) w::i#2) ← (byte) w::b#0
@ -727,7 +727,7 @@ Self Phi Eliminated (byte*) SCREEN4#1
Succesful SSA optimization Pass2SelfPhiElimination Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3
(byte*) SCREEN2#0 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word~) $0 (byte*) SCREEN2#0 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word~) $0
(byte/word/signed word~) $2 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6 (byte/word/signed word~) $2 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6
@ -746,9 +746,9 @@ main::@1: scope:[main] from main main::@1
(byte) main::b#2 ← phi( main/(byte) main::b#0 main::@1/(byte) main::b#1 ) (byte) main::b#2 ← phi( main/(byte) main::b#0 main::@1/(byte) main::b#1 )
(byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2
*((byte*) SCREEN#1 + (byte) main::b#2) ← (byte) main::b2#0 *((byte*) SCREEN#1 + (byte) main::b#2) ← (byte) main::b2#0
(signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2
(signed byte) main::sb#0 ← - (signed byte~) main::$1 (signed byte) main::sb#0 ← - (signed byte~) main::$1
(byte~) main::$3 ← _byte_ (signed byte) main::sb#0 (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0
*((byte*) SCREEN2#1 + (byte) main::b#2) ← (byte~) main::$3 *((byte*) SCREEN2#1 + (byte) main::b#2) ← (byte~) main::$3
(byte) main::b#1 ← ++ (byte) main::b#2 (byte) main::b#1 ← ++ (byte) main::b#2
(boolean~) main::$4 ← (byte) main::b#1 != (byte/signed byte/word/signed word) 101 (boolean~) main::$4 ← (byte) main::b#1 != (byte/signed byte/word/signed word) 101
@ -770,7 +770,7 @@ w::@1: scope:[w] from w w::@1
(word) w::w1#0 ← (word/signed word) 1300 (word) w::w1#0 ← (word/signed word) 1300
(word) w::w2#0 ← (word/signed word) 1250 (word) w::w2#0 ← (word/signed word) 1250
(word~) w::$0 ← (word) w::w1#0 - (word) w::w2#0 (word~) w::$0 ← (word) w::w1#0 - (word) w::w2#0
(byte) w::b#0 ← _byte_ (word~) w::$0 (byte) w::b#0 ← ((byte)) (word~) w::$0
(byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350 (byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350
(byte) w::b2#0 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i#2 (byte) w::b2#0 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i#2
*((byte*) SCREEN3#1 + (byte) w::i#2) ← (byte) w::b#0 *((byte*) SCREEN3#1 + (byte) w::i#2) ← (byte) w::b#0
@ -796,7 +796,7 @@ Redundant Phi (byte*) SCREEN4#1 (byte*) SCREEN4#2
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3
(byte*) SCREEN2#0 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word~) $0 (byte*) SCREEN2#0 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word~) $0
(byte/word/signed word~) $2 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6 (byte/word/signed word~) $2 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6
@ -811,9 +811,9 @@ main::@1: scope:[main] from main main::@1
(byte) main::b#2 ← phi( main/(byte) main::b#0 main::@1/(byte) main::b#1 ) (byte) main::b#2 ← phi( main/(byte) main::b#0 main::@1/(byte) main::b#1 )
(byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2
*((byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 *((byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0
(signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2
(signed byte) main::sb#0 ← - (signed byte~) main::$1 (signed byte) main::sb#0 ← - (signed byte~) main::$1
(byte~) main::$3 ← _byte_ (signed byte) main::sb#0 (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0
*((byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 *((byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3
(byte) main::b#1 ← ++ (byte) main::b#2 (byte) main::b#1 ← ++ (byte) main::b#2
(boolean~) main::$4 ← (byte) main::b#1 != (byte/signed byte/word/signed word) 101 (boolean~) main::$4 ← (byte) main::b#1 != (byte/signed byte/word/signed word) 101
@ -833,7 +833,7 @@ w::@1: scope:[w] from w w::@1
(word) w::w1#0 ← (word/signed word) 1300 (word) w::w1#0 ← (word/signed word) 1300
(word) w::w2#0 ← (word/signed word) 1250 (word) w::w2#0 ← (word/signed word) 1250
(word~) w::$0 ← (word) w::w1#0 - (word) w::w2#0 (word~) w::$0 ← (word) w::w1#0 - (word) w::w2#0
(byte) w::b#0 ← _byte_ (word~) w::$0 (byte) w::b#0 ← ((byte)) (word~) w::$0
(byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350 (byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350
(byte) w::b2#0 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i#2 (byte) w::b2#0 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i#2
*((byte*) SCREEN3#0 + (byte) w::i#2) ← (byte) w::b#0 *((byte*) SCREEN3#0 + (byte) w::i#2) ← (byte) w::b#0
@ -855,7 +855,7 @@ Simple Condition (boolean~) w::$4 if((byte) w::i#1!=(byte/signed byte/word/signe
Succesful SSA optimization Pass2ConditionalJumpSimplification Succesful SSA optimization Pass2ConditionalJumpSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3 (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 3
(byte*) SCREEN2#0 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word~) $0 (byte*) SCREEN2#0 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word~) $0
(byte/word/signed word~) $2 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6 (byte/word/signed word~) $2 ← (byte/signed byte/word/signed word) 40 * (byte/signed byte/word/signed word) 6
@ -870,9 +870,9 @@ main::@1: scope:[main] from main main::@1
(byte) main::b#2 ← phi( main/(byte) main::b#0 main::@1/(byte) main::b#1 ) (byte) main::b#2 ← phi( main/(byte) main::b#0 main::@1/(byte) main::b#1 )
(byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2
*((byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 *((byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0
(signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2
(signed byte) main::sb#0 ← - (signed byte~) main::$1 (signed byte) main::sb#0 ← - (signed byte~) main::$1
(byte~) main::$3 ← _byte_ (signed byte) main::sb#0 (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0
*((byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 *((byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3
(byte) main::b#1 ← ++ (byte) main::b#2 (byte) main::b#1 ← ++ (byte) main::b#2
if((byte) main::b#1!=(byte/signed byte/word/signed word) 101) goto main::@1 if((byte) main::b#1!=(byte/signed byte/word/signed word) 101) goto main::@1
@ -891,7 +891,7 @@ w::@1: scope:[w] from w w::@1
(word) w::w1#0 ← (word/signed word) 1300 (word) w::w1#0 ← (word/signed word) 1300
(word) w::w2#0 ← (word/signed word) 1250 (word) w::w2#0 ← (word/signed word) 1250
(word~) w::$0 ← (word) w::w1#0 - (word) w::w2#0 (word~) w::$0 ← (word) w::w1#0 - (word) w::w2#0
(byte) w::b#0 ← _byte_ (word~) w::$0 (byte) w::b#0 ← ((byte)) (word~) w::$0
(byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350 (byte/signed byte/word/signed word~) w::$2 ← (word/signed word) 1400 - (word/signed word) 1350
(byte) w::b2#0 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i#2 (byte) w::b2#0 ← (byte/signed byte/word/signed word~) w::$2 + (byte) w::i#2
*((byte*) SCREEN3#0 + (byte) w::i#2) ← (byte) w::b#0 *((byte*) SCREEN3#0 + (byte) w::i#2) ← (byte) w::b#0
@ -907,7 +907,7 @@ w::@return: scope:[w] from w::@1
to:@end to:@end
@end: scope:[] from @2 @end: scope:[] from @2
Constant (const byte*) SCREEN#0 = 1024 Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte/signed byte/word/signed word) $0 = 40*3 Constant (const byte/signed byte/word/signed word) $0 = 40*3
Constant (const byte/word/signed word) $2 = 40*6 Constant (const byte/word/signed word) $2 = 40*6
Constant (const word/signed word) $4 = 40*9 Constant (const word/signed word) $4 = 40*9
@ -929,9 +929,9 @@ main::@1: scope:[main] from main main::@1
(byte) main::b#2 ← phi( main/(const byte) main::b#0 main::@1/(byte) main::b#1 ) (byte) main::b#2 ← phi( main/(const byte) main::b#0 main::@1/(byte) main::b#1 )
(byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2
*((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0
(signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2
(signed byte) main::sb#0 ← - (signed byte~) main::$1 (signed byte) main::sb#0 ← - (signed byte~) main::$1
(byte~) main::$3 ← _byte_ (signed byte) main::sb#0 (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0
*((byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 *((byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3
(byte) main::b#1 ← ++ (byte) main::b#2 (byte) main::b#1 ← ++ (byte) main::b#2
if((byte) main::b#1!=(byte/signed byte/word/signed word) 101) goto main::@1 if((byte) main::b#1!=(byte/signed byte/word/signed word) 101) goto main::@1
@ -947,7 +947,7 @@ w: scope:[w] from main::@2
w::@1: scope:[w] from w w::@1 w::@1: scope:[w] from w w::@1
(byte) w::i#2 ← phi( w/(const byte) w::i#0 w::@1/(byte) w::i#1 ) (byte) w::i#2 ← phi( w/(const byte) w::i#0 w::@1/(byte) w::i#1 )
(word~) w::$0 ← (const word) w::w1#0 - (const word) w::w2#0 (word~) w::$0 ← (const word) w::w1#0 - (const word) w::w2#0
(byte) w::b#0 ← _byte_ (word~) w::$0 (byte) w::b#0 ← ((byte)) (word~) w::$0
(byte) w::b2#0 ← (const byte/signed byte/word/signed word) w::$2 + (byte) w::i#2 (byte) w::b2#0 ← (const byte/signed byte/word/signed word) w::$2 + (byte) w::i#2
*((byte*) SCREEN3#0 + (byte) w::i#2) ← (byte) w::b#0 *((byte*) SCREEN3#0 + (byte) w::i#2) ← (byte) w::b#0
*((byte*) SCREEN4#0 + (byte) w::i#2) ← (byte) w::b2#0 *((byte*) SCREEN4#0 + (byte) w::i#2) ← (byte) w::b2#0
@ -976,9 +976,9 @@ main::@1: scope:[main] from main main::@1
(byte) main::b#2 ← phi( main/(const byte) main::b#0 main::@1/(byte) main::b#1 ) (byte) main::b#2 ← phi( main/(const byte) main::b#0 main::@1/(byte) main::b#1 )
(byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2
*((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0
(signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2
(signed byte) main::sb#0 ← - (signed byte~) main::$1 (signed byte) main::sb#0 ← - (signed byte~) main::$1
(byte~) main::$3 ← _byte_ (signed byte) main::sb#0 (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0
*((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3
(byte) main::b#1 ← ++ (byte) main::b#2 (byte) main::b#1 ← ++ (byte) main::b#2
if((byte) main::b#1!=(byte/signed byte/word/signed word) 101) goto main::@1 if((byte) main::b#1!=(byte/signed byte/word/signed word) 101) goto main::@1
@ -993,7 +993,7 @@ w: scope:[w] from main::@2
to:w::@1 to:w::@1
w::@1: scope:[w] from w w::@1 w::@1: scope:[w] from w w::@1
(byte) w::i#2 ← phi( w/(const byte) w::i#0 w::@1/(byte) w::i#1 ) (byte) w::i#2 ← phi( w/(const byte) w::i#0 w::@1/(byte) w::i#1 )
(byte) w::b#0 ← _byte_ (const word) w::$0 (byte) w::b#0 ← ((byte)) (const word) w::$0
(byte) w::b2#0 ← (const byte/signed byte/word/signed word) w::$2 + (byte) w::i#2 (byte) w::b2#0 ← (const byte/signed byte/word/signed word) w::$2 + (byte) w::i#2
*((const byte*) SCREEN3#0 + (byte) w::i#2) ← (byte) w::b#0 *((const byte*) SCREEN3#0 + (byte) w::i#2) ← (byte) w::b#0
*((const byte*) SCREEN4#0 + (byte) w::i#2) ← (byte) w::b2#0 *((const byte*) SCREEN4#0 + (byte) w::i#2) ← (byte) w::b2#0
@ -1008,7 +1008,7 @@ w::@return: scope:[w] from w::@1
to:@end to:@end
@end: scope:[] from @2 @end: scope:[] from @2
Constant (const byte) w::b#0 = _byte_w::$0 Constant (const byte) w::b#0 = ((byte))w::$0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
@ -1019,9 +1019,9 @@ main::@1: scope:[main] from main main::@1
(byte) main::b#2 ← phi( main/(const byte) main::b#0 main::@1/(byte) main::b#1 ) (byte) main::b#2 ← phi( main/(const byte) main::b#0 main::@1/(byte) main::b#1 )
(byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2
*((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0
(signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2
(signed byte) main::sb#0 ← - (signed byte~) main::$1 (signed byte) main::sb#0 ← - (signed byte~) main::$1
(byte~) main::$3 ← _byte_ (signed byte) main::sb#0 (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0
*((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3
(byte) main::b#1 ← ++ (byte) main::b#2 (byte) main::b#1 ← ++ (byte) main::b#2
if((byte) main::b#1!=(byte/signed byte/word/signed word) 101) goto main::@1 if((byte) main::b#1!=(byte/signed byte/word/signed word) 101) goto main::@1
@ -1081,9 +1081,9 @@ main::@1: scope:[main] from main main::@1
(byte) main::b#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::b#1 ) (byte) main::b#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::b#1 )
(byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2
*((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0
(signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2
(signed byte) main::sb#0 ← - (signed byte~) main::$1 (signed byte) main::sb#0 ← - (signed byte~) main::$1
(byte~) main::$3 ← _byte_ (signed byte) main::sb#0 (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0
*((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3
(byte) main::b#1 ← ++ (byte) main::b#2 (byte) main::b#1 ← ++ (byte) main::b#2
if((byte) main::b#1!=(byte/signed byte/word/signed word) 101) goto main::@1 if((byte) main::b#1!=(byte/signed byte/word/signed word) 101) goto main::@1
@ -1117,7 +1117,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024 (const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(byte*) SCREEN2 (byte*) SCREEN2
(const byte*) SCREEN2#0 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3 (const byte*) SCREEN2#0 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3
(byte*) SCREEN3 (byte*) SCREEN3
@ -1141,7 +1141,7 @@ FINAL SYMBOL TABLE
(label) w::@1 (label) w::@1
(label) w::@return (label) w::@return
(byte) w::b (byte) w::b
(const byte) w::b#0 = _byte_(const word) w::w1#0-(const word) w::w2#0 (const byte) w::b#0 = ((byte))(const word) w::w1#0-(const word) w::w2#0
(byte) w::b2 (byte) w::b2
(byte) w::b2#0 (byte) w::b2#0
(byte) w::i (byte) w::i
@ -1169,9 +1169,9 @@ main::@1: scope:[main] from main main::@4
(byte) main::b#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@4/(byte~) main::b#3 ) (byte) main::b#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@4/(byte~) main::b#3 )
(byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2
*((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0
(signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2
(signed byte) main::sb#0 ← - (signed byte~) main::$1 (signed byte) main::sb#0 ← - (signed byte~) main::$1
(byte~) main::$3 ← _byte_ (signed byte) main::sb#0 (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0
*((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3
(byte) main::b#1 ← ++ (byte) main::b#2 (byte) main::b#1 ← ++ (byte) main::b#2
if((byte) main::b#1!=(byte/signed byte/word/signed word) 101) goto main::@4 if((byte) main::b#1!=(byte/signed byte/word/signed word) 101) goto main::@4
@ -1226,9 +1226,9 @@ main::@1: scope:[main] from main main::@4
[2] (byte) main::b#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@4/(byte~) main::b#3 ) [ main::b#2 ] [2] (byte) main::b#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@4/(byte~) main::b#3 ) [ main::b#2 ]
[3] (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 [ main::b#2 main::b2#0 ] [3] (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 [ main::b#2 main::b2#0 ]
[4] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 [ main::b#2 ] [4] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 [ main::b#2 ]
[5] (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 [ main::b#2 main::$1 ] [5] (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 [ main::b#2 main::$1 ]
[6] (signed byte) main::sb#0 ← - (signed byte~) main::$1 [ main::b#2 main::sb#0 ] [6] (signed byte) main::sb#0 ← - (signed byte~) main::$1 [ main::b#2 main::sb#0 ]
[7] (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 [ main::b#2 main::$3 ] [7] (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 [ main::b#2 main::$3 ]
[8] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 [ main::b#2 ] [8] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 [ main::b#2 ]
[9] (byte) main::b#1 ← ++ (byte) main::b#2 [ main::b#1 ] [9] (byte) main::b#1 ← ++ (byte) main::b#2 [ main::b#1 ]
[10] if((byte) main::b#1!=(byte/signed byte/word/signed word) 101) goto main::@4 [ main::b#1 ] [10] if((byte) main::b#1!=(byte/signed byte/word/signed word) 101) goto main::@4 [ main::b#1 ]
@ -1287,9 +1287,9 @@ main::@1: scope:[main] from main main::@1
[2] (byte) main::b#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::b#1 ) [ main::b#2 ] [2] (byte) main::b#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::b#1 ) [ main::b#2 ]
[3] (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 [ main::b#2 main::b2#0 ] [3] (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 [ main::b#2 main::b2#0 ]
[4] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 [ main::b#2 ] [4] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 [ main::b#2 ]
[5] (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 [ main::b#2 main::$1 ] [5] (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 [ main::b#2 main::$1 ]
[6] (signed byte) main::sb#0 ← - (signed byte~) main::$1 [ main::b#2 main::sb#0 ] [6] (signed byte) main::sb#0 ← - (signed byte~) main::$1 [ main::b#2 main::sb#0 ]
[7] (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 [ main::b#2 main::$3 ] [7] (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 [ main::b#2 main::$3 ]
[8] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 [ main::b#2 ] [8] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 [ main::b#2 ]
[9] (byte) main::b#1 ← ++ (byte) main::b#2 [ main::b#1 ] [9] (byte) main::b#1 ← ++ (byte) main::b#2 [ main::b#1 ]
[10] if((byte) main::b#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::b#1 ] [10] if((byte) main::b#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::b#1 ]
@ -1329,9 +1329,9 @@ main::@1: scope:[main] from main main::@1
[2] (byte) main::b#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::b#1 ) [ main::b#2 ] ( main:0 [ main::b#2 ] ) [2] (byte) main::b#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::b#1 ) [ main::b#2 ] ( main:0 [ main::b#2 ] )
[3] (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 [ main::b#2 main::b2#0 ] ( main:0 [ main::b#2 main::b2#0 ] ) [3] (byte) main::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2 [ main::b#2 main::b2#0 ] ( main:0 [ main::b#2 main::b2#0 ] )
[4] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 [ main::b#2 ] ( main:0 [ main::b#2 ] ) [4] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 [ main::b#2 ] ( main:0 [ main::b#2 ] )
[5] (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] ) [5] (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] )
[6] (signed byte) main::sb#0 ← - (signed byte~) main::$1 [ main::b#2 main::sb#0 ] ( main:0 [ main::b#2 main::sb#0 ] ) [6] (signed byte) main::sb#0 ← - (signed byte~) main::$1 [ main::b#2 main::sb#0 ] ( main:0 [ main::b#2 main::sb#0 ] )
[7] (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] ) [7] (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] )
[8] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 [ main::b#2 ] ( main:0 [ main::b#2 ] ) [8] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 [ main::b#2 ] ( main:0 [ main::b#2 ] )
[9] (byte) main::b#1 ← ++ (byte) main::b#2 [ main::b#1 ] ( main:0 [ main::b#1 ] ) [9] (byte) main::b#1 ← ++ (byte) main::b#2 [ main::b#1 ] ( main:0 [ main::b#1 ] )
[10] if((byte) main::b#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::b#1 ] ( main:0 [ main::b#1 ] ) [10] if((byte) main::b#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::b#1 ] ( main:0 [ main::b#1 ] )
@ -1486,7 +1486,7 @@ main: {
lda b2 lda b2
ldx b ldx b
sta SCREEN,x sta SCREEN,x
//SEG15 [5] (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] ) -- zpsby1=_sbyte_zpby1 //SEG15 [5] (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] ) -- zpsby1=_sbyte_zpby1
lda b lda b
sta _1 sta _1
//SEG16 [6] (signed byte) main::sb#0 ← - (signed byte~) main::$1 [ main::b#2 main::sb#0 ] ( main:0 [ main::b#2 main::sb#0 ] ) -- zpsby1=_neg_zpsby2 //SEG16 [6] (signed byte) main::sb#0 ← - (signed byte~) main::$1 [ main::b#2 main::sb#0 ] ( main:0 [ main::b#2 main::sb#0 ] ) -- zpsby1=_neg_zpsby2
@ -1495,7 +1495,7 @@ main: {
clc clc
adc #1 adc #1
sta sb sta sb
//SEG17 [7] (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] ) -- zpby1=_byte_zpsby1 //SEG17 [7] (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] ) -- zpby1=_byte_zpsby1
lda sb lda sb
sta _3 sta _3
//SEG18 [8] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_zpby1=zpby2 //SEG18 [8] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_zpby1=zpby2
@ -1643,13 +1643,13 @@ main: {
sbc $ff sbc $ff
//SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_xby=aby //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_xby=aby
sta SCREEN,x sta SCREEN,x
//SEG15 [5] (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] ) -- asby=_sbyte_xby //SEG15 [5] (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] ) -- asby=_sbyte_xby
txa txa
//SEG16 [6] (signed byte) main::sb#0 ← - (signed byte~) main::$1 [ main::b#2 main::sb#0 ] ( main:0 [ main::b#2 main::sb#0 ] ) -- asby=_neg_asby //SEG16 [6] (signed byte) main::sb#0 ← - (signed byte~) main::$1 [ main::b#2 main::sb#0 ] ( main:0 [ main::b#2 main::sb#0 ] ) -- asby=_neg_asby
eor #$ff eor #$ff
clc clc
adc #1 adc #1
//SEG17 [7] (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] ) -- aby=_byte_asby //SEG17 [7] (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] ) -- aby=_byte_asby
//SEG18 [8] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_xby=aby //SEG18 [8] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_xby=aby
sta SCREEN2,x sta SCREEN2,x
//SEG19 [9] (byte) main::b#1 ← ++ (byte) main::b#2 [ main::b#1 ] ( main:0 [ main::b#1 ] ) -- xby=_inc_xby //SEG19 [9] (byte) main::b#1 ← ++ (byte) main::b#2 [ main::b#1 ] ( main:0 [ main::b#1 ] ) -- xby=_inc_xby
@ -1749,13 +1749,13 @@ main: {
sbc $ff sbc $ff
//SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_xby=aby //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_xby=aby
sta SCREEN,x sta SCREEN,x
//SEG15 [5] (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] ) -- asby=_sbyte_xby //SEG15 [5] (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] ) -- asby=_sbyte_xby
txa txa
//SEG16 [6] (signed byte) main::sb#0 ← - (signed byte~) main::$1 [ main::b#2 main::sb#0 ] ( main:0 [ main::b#2 main::sb#0 ] ) -- asby=_neg_asby //SEG16 [6] (signed byte) main::sb#0 ← - (signed byte~) main::$1 [ main::b#2 main::sb#0 ] ( main:0 [ main::b#2 main::sb#0 ] ) -- asby=_neg_asby
eor #$ff eor #$ff
clc clc
adc #1 adc #1
//SEG17 [7] (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] ) -- aby=_byte_asby //SEG17 [7] (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] ) -- aby=_byte_asby
//SEG18 [8] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_xby=aby //SEG18 [8] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_xby=aby
sta SCREEN2,x sta SCREEN2,x
//SEG19 [9] (byte) main::b#1 ← ++ (byte) main::b#2 [ main::b#1 ] ( main:0 [ main::b#1 ] ) -- xby=_inc_xby //SEG19 [9] (byte) main::b#1 ← ++ (byte) main::b#2 [ main::b#1 ] ( main:0 [ main::b#1 ] ) -- xby=_inc_xby
@ -1850,13 +1850,13 @@ main: {
sbc $ff sbc $ff
//SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_xby=aby //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_xby=aby
sta SCREEN,x sta SCREEN,x
//SEG15 [5] (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] ) -- asby=_sbyte_xby //SEG15 [5] (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] ) -- asby=_sbyte_xby
txa txa
//SEG16 [6] (signed byte) main::sb#0 ← - (signed byte~) main::$1 [ main::b#2 main::sb#0 ] ( main:0 [ main::b#2 main::sb#0 ] ) -- asby=_neg_asby //SEG16 [6] (signed byte) main::sb#0 ← - (signed byte~) main::$1 [ main::b#2 main::sb#0 ] ( main:0 [ main::b#2 main::sb#0 ] ) -- asby=_neg_asby
eor #$ff eor #$ff
clc clc
adc #1 adc #1
//SEG17 [7] (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] ) -- aby=_byte_asby //SEG17 [7] (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] ) -- aby=_byte_asby
//SEG18 [8] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_xby=aby //SEG18 [8] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_xby=aby
sta SCREEN2,x sta SCREEN2,x
//SEG19 [9] (byte) main::b#1 ← ++ (byte) main::b#2 [ main::b#1 ] ( main:0 [ main::b#1 ] ) -- xby=_inc_xby //SEG19 [9] (byte) main::b#1 ← ++ (byte) main::b#2 [ main::b#1 ] ( main:0 [ main::b#1 ] ) -- xby=_inc_xby
@ -1941,13 +1941,13 @@ main: {
sbc $ff sbc $ff
//SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_xby=aby //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_xby=aby
sta SCREEN,x sta SCREEN,x
//SEG15 [5] (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] ) -- asby=_sbyte_xby //SEG15 [5] (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] ) -- asby=_sbyte_xby
txa txa
//SEG16 [6] (signed byte) main::sb#0 ← - (signed byte~) main::$1 [ main::b#2 main::sb#0 ] ( main:0 [ main::b#2 main::sb#0 ] ) -- asby=_neg_asby //SEG16 [6] (signed byte) main::sb#0 ← - (signed byte~) main::$1 [ main::b#2 main::sb#0 ] ( main:0 [ main::b#2 main::sb#0 ] ) -- asby=_neg_asby
eor #$ff eor #$ff
clc clc
adc #1 adc #1
//SEG17 [7] (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] ) -- aby=_byte_asby //SEG17 [7] (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] ) -- aby=_byte_asby
//SEG18 [8] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_xby=aby //SEG18 [8] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_xby=aby
sta SCREEN2,x sta SCREEN2,x
//SEG19 [9] (byte) main::b#1 ← ++ (byte) main::b#2 [ main::b#1 ] ( main:0 [ main::b#1 ] ) -- xby=_inc_xby //SEG19 [9] (byte) main::b#1 ← ++ (byte) main::b#2 [ main::b#1 ] ( main:0 [ main::b#1 ] ) -- xby=_inc_xby
@ -2001,7 +2001,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte*) SCREEN2 (byte*) SCREEN2
(const byte*) SCREEN2#0 SCREEN2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3 (const byte*) SCREEN2#0 SCREEN2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3
(byte*) SCREEN3 (byte*) SCREEN3
@ -2025,7 +2025,7 @@ FINAL SYMBOL TABLE
(label) w::@1 (label) w::@1
(label) w::@return (label) w::@return
(byte) w::b (byte) w::b
(const byte) w::b#0 b = _byte_(const word) w::w1#0-(const word) w::w2#0 (const byte) w::b#0 b = ((byte))(const word) w::w1#0-(const word) w::w2#0
(byte) w::b2 (byte) w::b2
(byte) w::b2#0 reg byte x 11.0 (byte) w::b2#0 reg byte x 11.0
(byte) w::i (byte) w::i
@ -2076,13 +2076,13 @@ main: {
sbc $ff sbc $ff
//SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_xby=aby //SEG14 [4] *((const byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_xby=aby
sta SCREEN,x sta SCREEN,x
//SEG15 [5] (signed byte~) main::$1 ← _sbyte_ (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] ) -- asby=_sbyte_xby //SEG15 [5] (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 [ main::b#2 main::$1 ] ( main:0 [ main::b#2 main::$1 ] ) -- asby=_sbyte_xby
txa txa
//SEG16 [6] (signed byte) main::sb#0 ← - (signed byte~) main::$1 [ main::b#2 main::sb#0 ] ( main:0 [ main::b#2 main::sb#0 ] ) -- asby=_neg_asby //SEG16 [6] (signed byte) main::sb#0 ← - (signed byte~) main::$1 [ main::b#2 main::sb#0 ] ( main:0 [ main::b#2 main::sb#0 ] ) -- asby=_neg_asby
eor #$ff eor #$ff
clc clc
adc #1 adc #1
//SEG17 [7] (byte~) main::$3 ← _byte_ (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] ) -- aby=_byte_asby //SEG17 [7] (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 [ main::b#2 main::$3 ] ( main:0 [ main::b#2 main::$3 ] ) -- aby=_byte_asby
//SEG18 [8] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_xby=aby //SEG18 [8] *((const byte*) SCREEN2#0 + (byte) main::b#2) ← (byte~) main::$3 [ main::b#2 ] ( main:0 [ main::b#2 ] ) -- cowo1_derefidx_xby=aby
sta SCREEN2,x sta SCREEN2,x
//SEG19 [9] (byte) main::b#1 ← ++ (byte) main::b#2 [ main::b#1 ] ( main:0 [ main::b#1 ] ) -- xby=_inc_xby //SEG19 [9] (byte) main::b#1 ← ++ (byte) main::b#2 [ main::b#1 ] ( main:0 [ main::b#1 ] ) -- xby=_inc_xby

View File

@ -2,7 +2,7 @@
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte*) SCREEN2 (byte*) SCREEN2
(const byte*) SCREEN2#0 SCREEN2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3 (const byte*) SCREEN2#0 SCREEN2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3
(byte*) SCREEN3 (byte*) SCREEN3
@ -26,7 +26,7 @@
(label) w::@1 (label) w::@1
(label) w::@return (label) w::@return
(byte) w::b (byte) w::b
(const byte) w::b#0 b = _byte_(const word) w::w1#0-(const word) w::w2#0 (const byte) w::b#0 b = ((byte))(const word) w::w1#0-(const word) w::w2#0
(byte) w::b2 (byte) w::b2
(byte) w::b2#0 reg byte x 11.0 (byte) w::b2#0 reg byte x 11.0
(byte) w::i (byte) w::i

View File

@ -94,9 +94,9 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) PROCPORT ← (byte/signed byte/word/signed word) 1 (byte*) PROCPORT ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) CHARGEN ← (word) 53248 (byte*) CHARGEN ← ((byte*)) (word) 53248
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
asm { sei } asm { sei }
@ -153,9 +153,9 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
(byte*) PROCPORT ← (byte/signed byte/word/signed word) 1 (byte*) PROCPORT ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) CHARGEN ← (word) 53248 (byte*) CHARGEN ← ((byte*)) (word) 53248
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
asm { sei } asm { sei }
@ -217,9 +217,9 @@ Completing Phi functions...
Completing Phi functions... Completing Phi functions...
CONTROL FLOW GRAPH SSA CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
(byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) CHARGEN#0 ← (word) 53248 (byte*) CHARGEN#0 ← ((byte*)) (word) 53248
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 ) (byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 )
@ -310,9 +310,9 @@ main::@return: scope:[main] from main::@6
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
(byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) CHARGEN#0 ← (word) 53248 (byte*) CHARGEN#0 ← ((byte*)) (word) 53248
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 ) (byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 )
@ -486,9 +486,9 @@ Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) CHARGEN#0 ← (word) 53248 (byte*) CHARGEN#0 ← ((byte*)) (word) 53248
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 ) (byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 )
@ -579,9 +579,9 @@ Inversing boolean not (boolean~) main::$4 ← (byte~) main::$2 == (byte/signed b
Succesful SSA optimization Pass2UnaryNotSimplification Succesful SSA optimization Pass2UnaryNotSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) CHARGEN#0 ← (word) 53248 (byte*) CHARGEN#0 ← ((byte*)) (word) 53248
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 ) (byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 )
@ -688,9 +688,9 @@ Alias (byte*) main::sc#2 = (byte*~) main::$7
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) CHARGEN#0 ← (word) 53248 (byte*) CHARGEN#0 ← ((byte*)) (word) 53248
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
asm { sei } asm { sei }
@ -765,9 +765,9 @@ Alias (byte*) PROCPORT#2 = (byte*) PROCPORT#6
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) CHARGEN#0 ← (word) 53248 (byte*) CHARGEN#0 ← ((byte*)) (word) 53248
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
asm { sei } asm { sei }
@ -833,9 +833,9 @@ Self Phi Eliminated (byte*) PROCPORT#2
Succesful SSA optimization Pass2SelfPhiElimination Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) CHARGEN#0 ← (word) 53248 (byte*) CHARGEN#0 ← ((byte*)) (word) 53248
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
asm { sei } asm { sei }
@ -900,9 +900,9 @@ Redundant Phi (byte*) PROCPORT#2 (byte*) PROCPORT#8
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) CHARGEN#0 ← (word) 53248 (byte*) CHARGEN#0 ← ((byte*)) (word) 53248
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
asm { sei } asm { sei }
@ -964,9 +964,9 @@ Simple Condition (boolean~) main::$8 if((byte) main::y#1!=(byte/signed byte/word
Succesful SSA optimization Pass2ConditionalJumpSimplification Succesful SSA optimization Pass2ConditionalJumpSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) CHARGEN#0 ← (word) 53248 (byte*) CHARGEN#0 ← ((byte*)) (word) 53248
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
asm { sei } asm { sei }
@ -1019,9 +1019,9 @@ main::@return: scope:[main] from main::@6
to:@end to:@end
@end: scope:[] from @1 @end: scope:[] from @1
Constant (const byte*) PROCPORT#0 = 1 Constant (const byte*) PROCPORT#0 = ((byte*))1
Constant (const byte*) CHARGEN#0 = 53248 Constant (const byte*) CHARGEN#0 = ((byte*))53248
Constant (const byte*) SCREEN#0 = 1024 Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte) main::y#0 = 0 Constant (const byte) main::y#0 = 0
Constant (const byte) main::x#0 = 0 Constant (const byte) main::x#0 = 0
Constant (const byte) main::c#0 = '.' Constant (const byte) main::c#0 = '.'
@ -1304,11 +1304,11 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) CHARGEN (byte*) CHARGEN
(const byte*) CHARGEN#0 = (word) 53248 (const byte*) CHARGEN#0 = ((byte*))(word) 53248
(byte*) PROCPORT (byte*) PROCPORT
(const byte*) PROCPORT#0 = (byte/signed byte/word/signed word) 1 (const byte*) PROCPORT#0 = ((byte*))(byte/signed byte/word/signed word) 1
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024 (const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(void()) main() (void()) main()
(byte~) main::$2 (byte~) main::$2
(label) main::@1 (label) main::@1
@ -2352,11 +2352,11 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) CHARGEN (byte*) CHARGEN
(const byte*) CHARGEN#0 CHARGEN = (word) 53248 (const byte*) CHARGEN#0 CHARGEN = ((byte*))(word) 53248
(byte*) PROCPORT (byte*) PROCPORT
(const byte*) PROCPORT#0 PROCPORT = (byte/signed byte/word/signed word) 1 (const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word) 1
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) main() (void()) main()
(byte~) main::$2 reg byte a 202.0 (byte~) main::$2 reg byte a 202.0
(label) main::@1 (label) main::@1

View File

@ -2,11 +2,11 @@
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) CHARGEN (byte*) CHARGEN
(const byte*) CHARGEN#0 CHARGEN = (word) 53248 (const byte*) CHARGEN#0 CHARGEN = ((byte*))(word) 53248
(byte*) PROCPORT (byte*) PROCPORT
(const byte*) PROCPORT#0 PROCPORT = (byte/signed byte/word/signed word) 1 (const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word) 1
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) main() (void()) main()
(byte~) main::$2 reg byte a 202.0 (byte~) main::$2 reg byte a 202.0
(label) main::@1 (label) main::@1

View File

@ -105,8 +105,8 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte[]) plots ← (word/signed word) 4096 (byte[]) plots ← ((byte*)) (word/signed word) 4096
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 0 (byte) main::i ← (byte/signed byte/word/signed word) 0
@ -183,8 +183,8 @@ Removing empty block line::@6
Removing empty block @2 Removing empty block @2
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte[]) plots ← (word/signed word) 4096 (byte[]) plots ← ((byte*)) (word/signed word) 4096
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 0 (byte) main::i ← (byte/signed byte/word/signed word) 0
@ -242,8 +242,8 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
(byte[]) plots ← (word/signed word) 4096 (byte[]) plots ← ((byte*)) (word/signed word) 4096
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte) main::i ← (byte/signed byte/word/signed word) 0 (byte) main::i ← (byte/signed byte/word/signed word) 0
@ -316,8 +316,8 @@ Completing Phi functions...
Completing Phi functions... Completing Phi functions...
CONTROL FLOW GRAPH SSA CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
(byte[]) plots#0 ← (word/signed word) 4096 (byte[]) plots#0 ← ((byte*)) (word/signed word) 4096
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte*) SCREEN#3 ← phi( @3/(byte*) SCREEN#6 ) (byte*) SCREEN#3 ← phi( @3/(byte*) SCREEN#6 )
@ -418,8 +418,8 @@ plot::@return: scope:[plot] from plot
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
(byte[]) plots#0 ← (word/signed word) 4096 (byte[]) plots#0 ← ((byte*)) (word/signed word) 4096
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte*) SCREEN#3 ← phi( @3/(byte*) SCREEN#6 ) (byte*) SCREEN#3 ← phi( @3/(byte*) SCREEN#6 )
@ -602,8 +602,8 @@ Culled Empty Block (label) @4
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte[]) plots#0 ← (word/signed word) 4096 (byte[]) plots#0 ← ((byte*)) (word/signed word) 4096
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte*) SCREEN#3 ← phi( @3/(byte*) SCREEN#6 ) (byte*) SCREEN#3 ← phi( @3/(byte*) SCREEN#6 )
@ -702,8 +702,8 @@ Inversing boolean not (boolean~) line::$1 ← (byte) line::x0#1 >= (byte) line::
Succesful SSA optimization Pass2UnaryNotSimplification Succesful SSA optimization Pass2UnaryNotSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte[]) plots#0 ← (word/signed word) 4096 (byte[]) plots#0 ← ((byte*)) (word/signed word) 4096
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte*) SCREEN#3 ← phi( @3/(byte*) SCREEN#6 ) (byte*) SCREEN#3 ← phi( @3/(byte*) SCREEN#6 )
@ -813,8 +813,8 @@ Alias (byte) plot::idx#0 = (byte~) plot::$0
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte[]) plots#0 ← (word/signed word) 4096 (byte[]) plots#0 ← ((byte*)) (word/signed word) 4096
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -897,8 +897,8 @@ Self Phi Eliminated (byte*) SCREEN#5
Succesful SSA optimization Pass2SelfPhiElimination Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte[]) plots#0 ← (word/signed word) 4096 (byte[]) plots#0 ← ((byte*)) (word/signed word) 4096
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -979,8 +979,8 @@ Redundant Phi (byte*) SCREEN#5 (byte*) SCREEN#10
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte[]) plots#0 ← (word/signed word) 4096 (byte[]) plots#0 ← ((byte*)) (word/signed word) 4096
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -1049,8 +1049,8 @@ Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#0
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte[]) plots#0 ← (word/signed word) 4096 (byte[]) plots#0 ← ((byte*)) (word/signed word) 4096
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -1118,8 +1118,8 @@ Simple Condition (boolean~) line::$3 if((byte) line::x#1<=(byte) line::x1#0) got
Succesful SSA optimization Pass2ConditionalJumpSimplification Succesful SSA optimization Pass2ConditionalJumpSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte[]) plots#0 ← (word/signed word) 4096 (byte[]) plots#0 ← ((byte*)) (word/signed word) 4096
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -1178,8 +1178,8 @@ plot::@return: scope:[plot] from plot
to:@end to:@end
@end: scope:[] from @3 @end: scope:[] from @3
Constant (const byte[]) plots#0 = 4096 Constant (const byte[]) plots#0 = ((byte*))4096
Constant (const byte*) SCREEN#0 = 1024 Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte) main::i#0 = 0 Constant (const byte) main::i#0 = 0
Constant (const byte) line::x#0 = 0 Constant (const byte) line::x#0 = 0
Constant (const byte) line::x1#0 = 10 Constant (const byte) line::x1#0 = 10
@ -1432,7 +1432,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024 (const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(void()) line((byte) line::x0 , (byte) line::x1) (void()) line((byte) line::x0 , (byte) line::x1)
(label) line::@1 (label) line::@1
(label) line::@2 (label) line::@2
@ -1462,7 +1462,7 @@ FINAL SYMBOL TABLE
(byte) plot::x#1 (byte) plot::x#1
(byte) plot::x#2 (byte) plot::x#2
(byte[]) plots (byte[]) plots
(const byte[]) plots#0 = (word/signed word) 4096 (const byte[]) plots#0 = ((byte*))(word/signed word) 4096
Block Sequence Planned @begin @3 @end main main::@1 main::@2 main::@5 main::@return line line::@2 line::@8 line::@return line::@1 plot plot::@return Block Sequence Planned @begin @3 @end main main::@1 main::@2 main::@5 main::@return line line::@2 line::@8 line::@return line::@1 plot plot::@return
Added new block during phi lifting main::@6(between main::@1 and main::@1) Added new block during phi lifting main::@6(between main::@1 and main::@1)
@ -2571,7 +2571,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) line((byte) line::x0 , (byte) line::x1) (void()) line((byte) line::x0 , (byte) line::x1)
(label) line::@1 (label) line::@1
(label) line::@2 (label) line::@2
@ -2601,7 +2601,7 @@ FINAL SYMBOL TABLE
(byte) plot::x#1 reg byte y 202.0 (byte) plot::x#1 reg byte y 202.0
(byte) plot::x#2 reg byte y 103.0 (byte) plot::x#2 reg byte y 103.0
(byte[]) plots (byte[]) plots
(const byte[]) plots#0 plots = (word/signed word) 4096 (const byte[]) plots#0 plots = ((byte*))(word/signed word) 4096
reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::i#2 main::i#1 ]
zp ZP_BYTE:2 [ line::x#2 line::x#1 ] zp ZP_BYTE:2 [ line::x#2 line::x#1 ]

View File

@ -2,7 +2,7 @@
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) line((byte) line::x0 , (byte) line::x1) (void()) line((byte) line::x0 , (byte) line::x1)
(label) line::@1 (label) line::@1
(label) line::@2 (label) line::@2
@ -32,7 +32,7 @@
(byte) plot::x#1 reg byte y 202.0 (byte) plot::x#1 reg byte y 202.0
(byte) plot::x#2 reg byte y 103.0 (byte) plot::x#2 reg byte y 103.0
(byte[]) plots (byte[]) plots
(const byte[]) plots#0 plots = (word/signed word) 4096 (const byte[]) plots#0 plots = ((byte*))(word/signed word) 4096
reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::i#2 main::i#1 ]
zp ZP_BYTE:2 [ line::x#2 line::x#1 ] zp ZP_BYTE:2 [ line::x#2 line::x#1 ]

View File

@ -54,9 +54,9 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte) STAR ← (byte/signed byte/word/signed word) 81 (byte) STAR ← (byte/signed byte/word/signed word) 81
(byte*) VIC ← (word) 53248 (byte*) VIC ← ((byte*)) (word) 53248
(byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2 (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2
(byte*~) $1 ← (byte*) VIC + (byte/signed byte/word/signed word~) $0 (byte*~) $1 ← (byte*) VIC + (byte/signed byte/word/signed word~) $0
(byte*~) $2 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1 (byte*~) $2 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1
@ -88,9 +88,9 @@ main::@return: scope:[main] from main::@2
Removing empty block main::@2 Removing empty block main::@2
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte) STAR ← (byte/signed byte/word/signed word) 81 (byte) STAR ← (byte/signed byte/word/signed word) 81
(byte*) VIC ← (word) 53248 (byte*) VIC ← ((byte*)) (word) 53248
(byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2 (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2
(byte*~) $1 ← (byte*) VIC + (byte/signed byte/word/signed word~) $0 (byte*~) $1 ← (byte*) VIC + (byte/signed byte/word/signed word~) $0
(byte*~) $2 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1 (byte*~) $2 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1
@ -121,9 +121,9 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte) STAR ← (byte/signed byte/word/signed word) 81 (byte) STAR ← (byte/signed byte/word/signed word) 81
(byte*) VIC ← (word) 53248 (byte*) VIC ← ((byte*)) (word) 53248
(byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2 (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2
(byte*~) $1 ← (byte*) VIC + (byte/signed byte/word/signed word~) $0 (byte*~) $1 ← (byte*) VIC + (byte/signed byte/word/signed word~) $0
(byte*~) $2 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1 (byte*~) $2 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1
@ -156,9 +156,9 @@ Completing Phi functions...
Completing Phi functions... Completing Phi functions...
CONTROL FLOW GRAPH SSA CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte) STAR#0 ← (byte/signed byte/word/signed word) 81 (byte) STAR#0 ← (byte/signed byte/word/signed word) 81
(byte*) VIC#0 ← (word) 53248 (byte*) VIC#0 ← ((byte*)) (word) 53248
(byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2 (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2
(byte*~) $1 ← (byte*) VIC#0 + (byte/signed byte/word/signed word~) $0 (byte*~) $1 ← (byte*) VIC#0 + (byte/signed byte/word/signed word~) $0
(byte*~) $2 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1 (byte*~) $2 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1
@ -200,9 +200,9 @@ main::@return: scope:[main] from main::@1
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte) STAR#0 ← (byte/signed byte/word/signed word) 81 (byte) STAR#0 ← (byte/signed byte/word/signed word) 81
(byte*) VIC#0 ← (word) 53248 (byte*) VIC#0 ← ((byte*)) (word) 53248
(byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2 (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2
(byte*~) $1 ← (byte*) VIC#0 + (byte/signed byte/word/signed word~) $0 (byte*~) $1 ← (byte*) VIC#0 + (byte/signed byte/word/signed word~) $0
(byte*~) $2 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1 (byte*~) $2 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1
@ -284,9 +284,9 @@ Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte) STAR#0 ← (byte/signed byte/word/signed word) 81 (byte) STAR#0 ← (byte/signed byte/word/signed word) 81
(byte*) VIC#0 ← (word) 53248 (byte*) VIC#0 ← ((byte*)) (word) 53248
(byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2 (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2
(byte*~) $1 ← (byte*) VIC#0 + (byte/signed byte/word/signed word~) $0 (byte*~) $1 ← (byte*) VIC#0 + (byte/signed byte/word/signed word~) $0
(byte*~) $2 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1 (byte*~) $2 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1
@ -331,9 +331,9 @@ Alias (byte*) BGCOL#0 = (byte*) BGCOL#1 (byte*) BGCOL#2 (byte*~) $2
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte) STAR#0 ← (byte/signed byte/word/signed word) 81 (byte) STAR#0 ← (byte/signed byte/word/signed word) 81
(byte*) VIC#0 ← (word) 53248 (byte*) VIC#0 ← ((byte*)) (word) 53248
(byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2 (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2
(byte*~) $1 ← (byte*) VIC#0 + (byte/signed byte/word/signed word~) $0 (byte*~) $1 ← (byte*) VIC#0 + (byte/signed byte/word/signed word~) $0
(byte*) BGCOL#0 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1 (byte*) BGCOL#0 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1
@ -367,9 +367,9 @@ Self Phi Eliminated (byte*) SCREEN#2
Succesful SSA optimization Pass2SelfPhiElimination Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte) STAR#0 ← (byte/signed byte/word/signed word) 81 (byte) STAR#0 ← (byte/signed byte/word/signed word) 81
(byte*) VIC#0 ← (word) 53248 (byte*) VIC#0 ← ((byte*)) (word) 53248
(byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2 (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2
(byte*~) $1 ← (byte*) VIC#0 + (byte/signed byte/word/signed word~) $0 (byte*~) $1 ← (byte*) VIC#0 + (byte/signed byte/word/signed word~) $0
(byte*) BGCOL#0 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1 (byte*) BGCOL#0 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1
@ -403,9 +403,9 @@ Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#0
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte) STAR#0 ← (byte/signed byte/word/signed word) 81 (byte) STAR#0 ← (byte/signed byte/word/signed word) 81
(byte*) VIC#0 ← (word) 53248 (byte*) VIC#0 ← ((byte*)) (word) 53248
(byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2 (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2
(byte*~) $1 ← (byte*) VIC#0 + (byte/signed byte/word/signed word~) $0 (byte*~) $1 ← (byte*) VIC#0 + (byte/signed byte/word/signed word~) $0
(byte*) BGCOL#0 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1 (byte*) BGCOL#0 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1
@ -436,9 +436,9 @@ Simple Condition (boolean~) main::$1 if((byte) main::i#1!=(byte/signed byte/word
Succesful SSA optimization Pass2ConditionalJumpSimplification Succesful SSA optimization Pass2ConditionalJumpSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte) STAR#0 ← (byte/signed byte/word/signed word) 81 (byte) STAR#0 ← (byte/signed byte/word/signed word) 81
(byte*) VIC#0 ← (word) 53248 (byte*) VIC#0 ← ((byte*)) (word) 53248
(byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2 (byte/signed byte/word/signed word~) $0 ← (byte/signed byte/word/signed word) 16 * (byte/signed byte/word/signed word) 2
(byte*~) $1 ← (byte*) VIC#0 + (byte/signed byte/word/signed word~) $0 (byte*~) $1 ← (byte*) VIC#0 + (byte/signed byte/word/signed word~) $0
(byte*) BGCOL#0 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1 (byte*) BGCOL#0 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1
@ -464,9 +464,9 @@ main::@return: scope:[main] from main::@1
to:@end to:@end
@end: scope:[] from @1 @end: scope:[] from @1
Constant (const byte*) SCREEN#0 = 1024 Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte) STAR#0 = 81 Constant (const byte) STAR#0 = 81
Constant (const byte*) VIC#0 = 53248 Constant (const byte*) VIC#0 = ((byte*))53248
Constant (const byte/signed byte/word/signed word) $0 = 16*2 Constant (const byte/signed byte/word/signed word) $0 = 16*2
Constant (const byte) RED#0 = 2 Constant (const byte) RED#0 = 2
Constant (const byte) main::i#0 = 40 Constant (const byte) main::i#0 = 40
@ -580,11 +580,11 @@ FINAL SYMBOL TABLE
(byte) RED (byte) RED
(const byte) RED#0 = (byte/signed byte/word/signed word) 2 (const byte) RED#0 = (byte/signed byte/word/signed word) 2
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024 (const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(byte) STAR (byte) STAR
(const byte) STAR#0 = (byte/signed byte/word/signed word) 81 (const byte) STAR#0 = (byte/signed byte/word/signed word) 81
(byte*) VIC (byte*) VIC
(const byte*) VIC#0 = (word) 53248 (const byte*) VIC#0 = ((byte*))(word) 53248
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@return (label) main::@return
@ -1022,11 +1022,11 @@ FINAL SYMBOL TABLE
(byte) RED (byte) RED
(const byte) RED#0 RED = (byte/signed byte/word/signed word) 2 (const byte) RED#0 RED = (byte/signed byte/word/signed word) 2
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte) STAR (byte) STAR
(const byte) STAR#0 STAR = (byte/signed byte/word/signed word) 81 (const byte) STAR#0 STAR = (byte/signed byte/word/signed word) 81
(byte*) VIC (byte*) VIC
(const byte*) VIC#0 VIC = (word) 53248 (const byte*) VIC#0 VIC = ((byte*))(word) 53248
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@return (label) main::@return

View File

@ -6,11 +6,11 @@
(byte) RED (byte) RED
(const byte) RED#0 RED = (byte/signed byte/word/signed word) 2 (const byte) RED#0 RED = (byte/signed byte/word/signed word) 2
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte) STAR (byte) STAR
(const byte) STAR#0 STAR = (byte/signed byte/word/signed word) 81 (const byte) STAR#0 STAR = (byte/signed byte/word/signed word) 81
(byte*) VIC (byte*) VIC
(const byte*) VIC#0 VIC = (word) 53248 (const byte*) VIC#0 VIC = ((byte*))(word) 53248
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@return (label) main::@return

View File

@ -45,7 +45,7 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte[15]) fibs ← (word/signed word) 4352 (byte[15]) fibs ← ((byte*)) (word/signed word) 4352
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
*((byte[15]) fibs + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 *((byte[15]) fibs + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0
@ -76,7 +76,7 @@ main::@return: scope:[main] from main::@2
Removing empty block main::@2 Removing empty block main::@2
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte[15]) fibs ← (word/signed word) 4352 (byte[15]) fibs ← ((byte*)) (word/signed word) 4352
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
*((byte[15]) fibs + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 *((byte[15]) fibs + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0
@ -106,7 +106,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
(byte[15]) fibs ← (word/signed word) 4352 (byte[15]) fibs ← ((byte*)) (word/signed word) 4352
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
*((byte[15]) fibs + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 *((byte[15]) fibs + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0
@ -138,7 +138,7 @@ Completing Phi functions...
Completing Phi functions... Completing Phi functions...
CONTROL FLOW GRAPH SSA CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
(byte[15]) fibs#0 ← (word/signed word) 4352 (byte[15]) fibs#0 ← ((byte*)) (word/signed word) 4352
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte[15]) fibs#1 ← phi( @1/(byte[15]) fibs#3 ) (byte[15]) fibs#1 ← phi( @1/(byte[15]) fibs#3 )
@ -172,7 +172,7 @@ main::@return: scope:[main] from main::@1
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
(byte[15]) fibs#0 ← (word/signed word) 4352 (byte[15]) fibs#0 ← ((byte*)) (word/signed word) 4352
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte[15]) fibs#1 ← phi( @1/(byte[15]) fibs#3 ) (byte[15]) fibs#1 ← phi( @1/(byte[15]) fibs#3 )
@ -232,7 +232,7 @@ Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte[15]) fibs#0 ← (word/signed word) 4352 (byte[15]) fibs#0 ← ((byte*)) (word/signed word) 4352
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte[15]) fibs#1 ← phi( @1/(byte[15]) fibs#3 ) (byte[15]) fibs#1 ← phi( @1/(byte[15]) fibs#3 )
@ -266,7 +266,7 @@ Alias (byte[15]) fibs#0 = (byte[15]) fibs#1 (byte[15]) fibs#3
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte[15]) fibs#0 ← (word/signed word) 4352 (byte[15]) fibs#0 ← ((byte*)) (word/signed word) 4352
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
*((byte[15]) fibs#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 *((byte[15]) fibs#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0
@ -298,7 +298,7 @@ Self Phi Eliminated (byte[15]) fibs#2
Succesful SSA optimization Pass2SelfPhiElimination Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte[15]) fibs#0 ← (word/signed word) 4352 (byte[15]) fibs#0 ← ((byte*)) (word/signed word) 4352
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
*((byte[15]) fibs#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 *((byte[15]) fibs#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0
@ -330,7 +330,7 @@ Redundant Phi (byte[15]) fibs#2 (byte[15]) fibs#0
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte[15]) fibs#0 ← (word/signed word) 4352 (byte[15]) fibs#0 ← ((byte*)) (word/signed word) 4352
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
*((byte[15]) fibs#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 *((byte[15]) fibs#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0
@ -361,7 +361,7 @@ Simple Condition (boolean~) main::$5 if((byte) main::i#1<(byte/signed byte/word/
Succesful SSA optimization Pass2ConditionalJumpSimplification Succesful SSA optimization Pass2ConditionalJumpSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte[15]) fibs#0 ← (word/signed word) 4352 (byte[15]) fibs#0 ← ((byte*)) (word/signed word) 4352
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
*((byte[15]) fibs#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 *((byte[15]) fibs#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0
@ -387,7 +387,7 @@ main::@return: scope:[main] from main::@1
to:@end to:@end
@end: scope:[] from @1 @end: scope:[] from @1
Constant (const byte[15]) fibs#0 = 4352 Constant (const byte[15]) fibs#0 = ((byte*))4352
Constant (const byte) main::i#0 = 0 Constant (const byte) main::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@ -516,7 +516,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte[15]) fibs (byte[15]) fibs
(const byte[15]) fibs#0 = (word/signed word) 4352 (const byte[15]) fibs#0 = ((byte*))(word/signed word) 4352
(void()) main() (void()) main()
(byte~) main::$1 (byte~) main::$1
(byte~) main::$3 (byte~) main::$3
@ -994,7 +994,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte[15]) fibs (byte[15]) fibs
(const byte[15]) fibs#0 fibs = (word/signed word) 4352 (const byte[15]) fibs#0 fibs = ((byte*))(word/signed word) 4352
(void()) main() (void()) main()
(byte~) main::$1 reg byte a 11.0 (byte~) main::$1 reg byte a 11.0
(byte~) main::$3 reg byte alu 22.0 (byte~) main::$3 reg byte alu 22.0

View File

@ -2,7 +2,7 @@
(label) @begin (label) @begin
(label) @end (label) @end
(byte[15]) fibs (byte[15]) fibs
(const byte[15]) fibs#0 fibs = (word/signed word) 4352 (const byte[15]) fibs#0 fibs = ((byte*))(word/signed word) 4352
(void()) main() (void()) main()
(byte~) main::$1 reg byte a 11.0 (byte~) main::$1 reg byte a 11.0
(byte~) main::$3 reg byte alu 22.0 (byte~) main::$3 reg byte alu 22.0

View File

@ -200,10 +200,10 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte[1000]) SCREEN ← (word/signed word) 1024 (byte[1000]) SCREEN ← ((byte*)) (word/signed word) 1024
(byte[256]) buffer1 ← (word/signed word) 4096 (byte[256]) buffer1 ← ((byte*)) (word/signed word) 4096
(byte[256]) buffer2 ← (word/signed word) 4352 (byte[256]) buffer2 ← ((byte*)) (word/signed word) 4352
(byte*) RASTER ← (word) 53266 (byte*) RASTER ← ((byte*)) (word) 53266
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(void~) main::$0 ← call prepare (void~) main::$0 ← call prepare
@ -343,10 +343,10 @@ Removing empty block @3
Removing empty block plot::@4 Removing empty block plot::@4
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte[1000]) SCREEN ← (word/signed word) 1024 (byte[1000]) SCREEN ← ((byte*)) (word/signed word) 1024
(byte[256]) buffer1 ← (word/signed word) 4096 (byte[256]) buffer1 ← ((byte*)) (word/signed word) 4096
(byte[256]) buffer2 ← (word/signed word) 4352 (byte[256]) buffer2 ← ((byte*)) (word/signed word) 4352
(byte*) RASTER ← (word) 53266 (byte*) RASTER ← ((byte*)) (word) 53266
to:@4 to:@4
main: scope:[main] from main: scope:[main] from
(void~) main::$0 ← call prepare (void~) main::$0 ← call prepare
@ -464,10 +464,10 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
(byte[1000]) SCREEN ← (word/signed word) 1024 (byte[1000]) SCREEN ← ((byte*)) (word/signed word) 1024
(byte[256]) buffer1 ← (word/signed word) 4096 (byte[256]) buffer1 ← ((byte*)) (word/signed word) 4096
(byte[256]) buffer2 ← (word/signed word) 4352 (byte[256]) buffer2 ← ((byte*)) (word/signed word) 4352
(byte*) RASTER ← (word) 53266 (byte*) RASTER ← ((byte*)) (word) 53266
to:@4 to:@4
main: scope:[main] from @4 main: scope:[main] from @4
call prepare param-assignment call prepare param-assignment
@ -602,10 +602,10 @@ Completing Phi functions...
Completing Phi functions... Completing Phi functions...
CONTROL FLOW GRAPH SSA CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
(byte[1000]) SCREEN#0 ← (word/signed word) 1024 (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte[256]) buffer1#0 ← (word/signed word) 4096 (byte[256]) buffer1#0 ← ((byte*)) (word/signed word) 4096
(byte[256]) buffer2#0 ← (word/signed word) 4352 (byte[256]) buffer2#0 ← ((byte*)) (word/signed word) 4352
(byte*) RASTER#0 ← (word) 53266 (byte*) RASTER#0 ← ((byte*)) (word) 53266
to:@4 to:@4
main: scope:[main] from @4 main: scope:[main] from @4
(byte[256]) buffer2#15 ← phi( @4/(byte[256]) buffer2#17 ) (byte[256]) buffer2#15 ← phi( @4/(byte[256]) buffer2#17 )
@ -818,10 +818,10 @@ plot::@return: scope:[plot] from plot::@3
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
(byte[1000]) SCREEN#0 ← (word/signed word) 1024 (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte[256]) buffer1#0 ← (word/signed word) 4096 (byte[256]) buffer1#0 ← ((byte*)) (word/signed word) 4096
(byte[256]) buffer2#0 ← (word/signed word) 4352 (byte[256]) buffer2#0 ← ((byte*)) (word/signed word) 4352
(byte*) RASTER#0 ← (word) 53266 (byte*) RASTER#0 ← ((byte*)) (word) 53266
to:@4 to:@4
main: scope:[main] from @4 main: scope:[main] from @4
(byte[256]) buffer2#15 ← phi( @4/(byte[256]) buffer2#17 ) (byte[256]) buffer2#15 ← phi( @4/(byte[256]) buffer2#17 )
@ -1216,10 +1216,10 @@ Culled Empty Block (label) @5
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte[1000]) SCREEN#0 ← (word/signed word) 1024 (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte[256]) buffer1#0 ← (word/signed word) 4096 (byte[256]) buffer1#0 ← ((byte*)) (word/signed word) 4096
(byte[256]) buffer2#0 ← (word/signed word) 4352 (byte[256]) buffer2#0 ← ((byte*)) (word/signed word) 4352
(byte*) RASTER#0 ← (word) 53266 (byte*) RASTER#0 ← ((byte*)) (word) 53266
to:@4 to:@4
main: scope:[main] from @4 main: scope:[main] from @4
(byte[256]) buffer2#15 ← phi( @4/(byte[256]) buffer2#17 ) (byte[256]) buffer2#15 ← phi( @4/(byte[256]) buffer2#17 )
@ -1454,10 +1454,10 @@ Alias (byte*) plot::line#1 = (byte*~) plot::$5
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte[1000]) SCREEN#0 ← (word/signed word) 1024 (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte[256]) buffer1#0 ← (word/signed word) 4096 (byte[256]) buffer1#0 ← ((byte*)) (word/signed word) 4096
(byte[256]) buffer2#0 ← (word/signed word) 4352 (byte[256]) buffer2#0 ← ((byte*)) (word/signed word) 4352
(byte*) RASTER#0 ← (word) 53266 (byte*) RASTER#0 ← ((byte*)) (word) 53266
to:@4 to:@4
main: scope:[main] from @4 main: scope:[main] from @4
call prepare param-assignment call prepare param-assignment
@ -1637,10 +1637,10 @@ Self Phi Eliminated (byte) plot::y#2
Succesful SSA optimization Pass2SelfPhiElimination Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte[1000]) SCREEN#0 ← (word/signed word) 1024 (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte[256]) buffer1#0 ← (word/signed word) 4096 (byte[256]) buffer1#0 ← ((byte*)) (word/signed word) 4096
(byte[256]) buffer2#0 ← (word/signed word) 4352 (byte[256]) buffer2#0 ← ((byte*)) (word/signed word) 4352
(byte*) RASTER#0 ← (word) 53266 (byte*) RASTER#0 ← ((byte*)) (word) 53266
to:@4 to:@4
main: scope:[main] from @4 main: scope:[main] from @4
call prepare param-assignment call prepare param-assignment
@ -1813,10 +1813,10 @@ Redundant Phi (byte) plot::y#2 (byte) plot::y#4
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte[1000]) SCREEN#0 ← (word/signed word) 1024 (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte[256]) buffer1#0 ← (word/signed word) 4096 (byte[256]) buffer1#0 ← ((byte*)) (word/signed word) 4096
(byte[256]) buffer2#0 ← (word/signed word) 4352 (byte[256]) buffer2#0 ← ((byte*)) (word/signed word) 4352
(byte*) RASTER#0 ← (word) 53266 (byte*) RASTER#0 ← ((byte*)) (word) 53266
to:@4 to:@4
main: scope:[main] from @4 main: scope:[main] from @4
call prepare param-assignment call prepare param-assignment
@ -1970,10 +1970,10 @@ Simple Condition (boolean~) plot::$6 if((byte) plot::y#1!=(byte/signed byte/word
Succesful SSA optimization Pass2ConditionalJumpSimplification Succesful SSA optimization Pass2ConditionalJumpSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte[1000]) SCREEN#0 ← (word/signed word) 1024 (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte[256]) buffer1#0 ← (word/signed word) 4096 (byte[256]) buffer1#0 ← ((byte*)) (word/signed word) 4096
(byte[256]) buffer2#0 ← (word/signed word) 4352 (byte[256]) buffer2#0 ← ((byte*)) (word/signed word) 4352
(byte*) RASTER#0 ← (word) 53266 (byte*) RASTER#0 ← ((byte*)) (word) 53266
to:@4 to:@4
main: scope:[main] from @4 main: scope:[main] from @4
call prepare param-assignment call prepare param-assignment
@ -2106,10 +2106,10 @@ plot::@return: scope:[plot] from plot::@3
to:@end to:@end
@end: scope:[] from @4 @end: scope:[] from @4
Constant (const byte[1000]) SCREEN#0 = 1024 Constant (const byte[1000]) SCREEN#0 = ((byte*))1024
Constant (const byte[256]) buffer1#0 = 4096 Constant (const byte[256]) buffer1#0 = ((byte*))4096
Constant (const byte[256]) buffer2#0 = 4352 Constant (const byte[256]) buffer2#0 = ((byte*))4352
Constant (const byte*) RASTER#0 = 53266 Constant (const byte*) RASTER#0 = ((byte*))53266
Constant (const byte) main::c#0 = 25 Constant (const byte) main::c#0 = 25
Constant (const byte) prepare::i#0 = 0 Constant (const byte) prepare::i#0 = 0
Constant (const byte) flip::srcIdx#0 = 0 Constant (const byte) flip::srcIdx#0 = 0
@ -3449,13 +3449,13 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) RASTER (byte*) RASTER
(const byte*) RASTER#0 = (word) 53266 (const byte*) RASTER#0 = ((byte*))(word) 53266
(byte[1000]) SCREEN (byte[1000]) SCREEN
(const byte[1000]) SCREEN#0 = (word/signed word) 1024 (const byte[1000]) SCREEN#0 = ((byte*))(word/signed word) 1024
(byte[256]) buffer1 (byte[256]) buffer1
(const byte[256]) buffer1#0 = (word/signed word) 4096 (const byte[256]) buffer1#0 = ((byte*))(word/signed word) 4096
(byte[256]) buffer2 (byte[256]) buffer2
(const byte[256]) buffer2#0 = (word/signed word) 4352 (const byte[256]) buffer2#0 = ((byte*))(word/signed word) 4352
(void()) flip() (void()) flip()
(byte~) flip::$0 (byte~) flip::$0
(byte~) flip::$4 (byte~) flip::$4
@ -6064,13 +6064,13 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) RASTER (byte*) RASTER
(const byte*) RASTER#0 RASTER = (word) 53266 (const byte*) RASTER#0 RASTER = ((byte*))(word) 53266
(byte[1000]) SCREEN (byte[1000]) SCREEN
(const byte[1000]) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte[1000]) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte[256]) buffer1 (byte[256]) buffer1
(const byte[256]) buffer1#0 buffer1 = (word/signed word) 4096 (const byte[256]) buffer1#0 buffer1 = ((byte*))(word/signed word) 4096
(byte[256]) buffer2 (byte[256]) buffer2
(const byte[256]) buffer2#0 buffer2 = (word/signed word) 4352 (const byte[256]) buffer2#0 buffer2 = ((byte*))(word/signed word) 4352
(void()) flip() (void()) flip()
(byte~) flip::$0 reg byte a 2002.0 (byte~) flip::$0 reg byte a 2002.0
(byte~) flip::$4 reg byte a 202.0 (byte~) flip::$4 reg byte a 202.0

View File

@ -2,13 +2,13 @@
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) RASTER (byte*) RASTER
(const byte*) RASTER#0 RASTER = (word) 53266 (const byte*) RASTER#0 RASTER = ((byte*))(word) 53266
(byte[1000]) SCREEN (byte[1000]) SCREEN
(const byte[1000]) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte[1000]) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte[256]) buffer1 (byte[256]) buffer1
(const byte[256]) buffer1#0 buffer1 = (word/signed word) 4096 (const byte[256]) buffer1#0 buffer1 = ((byte*))(word/signed word) 4096
(byte[256]) buffer2 (byte[256]) buffer2
(const byte[256]) buffer2#0 buffer2 = (word/signed word) 4352 (const byte[256]) buffer2#0 buffer2 = ((byte*))(word/signed word) 4352
(void()) flip() (void()) flip()
(byte~) flip::$0 reg byte a 2002.0 (byte~) flip::$0 reg byte a 2002.0
(byte~) flip::$4 reg byte a 202.0 (byte~) flip::$4 reg byte a 202.0

View File

@ -1,7 +1,7 @@
// Minimal classic for() loop // Minimal classic for() loop
byte* SCREEN = $0400; byte* SCREEN = (byte*)$0400;
void main() { void main() {
for(byte i=0; i!=100; i++) { for(byte i=0; i!=100; i++) {
@ -12,7 +12,8 @@ void main() {
Adding pre/post-modifier (byte) main::i ← ++ (byte) main::i Adding pre/post-modifier (byte) main::i ← ++ (byte) main::i
PROGRAM PROGRAM
(byte*) SCREEN ← (word/signed word) 1024 (byte*~) $0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN ← (byte*~) $0
proc (void()) main() proc (void()) main()
(byte) main::i ← (byte/signed byte/word/signed word) 0 (byte) main::i ← (byte/signed byte/word/signed word) 0
main::@1: main::@1:
@ -26,6 +27,7 @@ endproc // main()
call main call main
SYMBOLS SYMBOLS
(byte*~) $0
(byte*) SCREEN (byte*) SCREEN
(void()) main() (void()) main()
(boolean~) main::$0 (boolean~) main::$0
@ -35,7 +37,8 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*~) $0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN ← (byte*~) $0
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 0 (byte) main::i ← (byte/signed byte/word/signed word) 0
@ -59,7 +62,8 @@ main::@return: scope:[main] from main::@2
Removing empty block main::@2 Removing empty block main::@2
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*~) $0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN ← (byte*~) $0
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 0 (byte) main::i ← (byte/signed byte/word/signed word) 0
@ -82,7 +86,8 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*~) $0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN ← (byte*~) $0
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::i ← (byte/signed byte/word/signed word) 0 (byte) main::i ← (byte/signed byte/word/signed word) 0
@ -108,7 +113,8 @@ Completing Phi functions...
Completing Phi functions... Completing Phi functions...
CONTROL FLOW GRAPH SSA CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*~) $0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN#0 ← (byte*~) $0
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#3 ) (byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#3 )
@ -135,7 +141,8 @@ main::@return: scope:[main] from main::@1
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*~) $0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN#0 ← (byte*~) $0
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#3 ) (byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#3 )
@ -161,6 +168,7 @@ main::@return: scope:[main] from main::@1
@end: scope:[] from @2 @end: scope:[] from @2
INITIAL SSA SYMBOL TABLE INITIAL SSA SYMBOL TABLE
(byte*~) $0
(label) @1 (label) @1
(label) @2 (label) @2
(label) @begin (label) @begin
@ -183,7 +191,8 @@ Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*~) $0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN#0 ← (byte*~) $0
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#3 ) (byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#3 )
@ -206,11 +215,11 @@ main::@return: scope:[main] from main::@1
to:@end to:@end
@end: scope:[] from @1 @end: scope:[] from @1
Alias (byte*) SCREEN#0 = (byte*) SCREEN#2 (byte*) SCREEN#3 Alias (byte*) SCREEN#0 = (byte*) SCREEN#2 (byte*) SCREEN#3 (byte*~) $0
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -235,7 +244,7 @@ Self Phi Eliminated (byte*) SCREEN#1
Succesful SSA optimization Pass2SelfPhiElimination Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -260,7 +269,7 @@ Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -284,7 +293,7 @@ Simple Condition (boolean~) main::$0 if((byte) main::i#1!=(byte/signed byte/word
Succesful SSA optimization Pass2ConditionalJumpSimplification Succesful SSA optimization Pass2ConditionalJumpSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -303,7 +312,7 @@ main::@return: scope:[main] from main::@1
to:@end to:@end
@end: scope:[] from @1 @end: scope:[] from @1
Constant (const byte*) SCREEN#0 = 1024 Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte) main::i#0 = 0 Constant (const byte) main::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@ -355,7 +364,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024 (const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@return (label) main::@return
@ -733,7 +742,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@return (label) main::@return

View File

@ -2,7 +2,7 @@
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@return (label) main::@return

View File

@ -49,8 +49,8 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN1 ← (word/signed word) 1024 (byte*) SCREEN1 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN2 ← (word/signed word) 1280 (byte*) SCREEN2 ← ((byte*)) (word/signed word) 1280
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 0 (byte) main::i ← (byte/signed byte/word/signed word) 0
@ -83,8 +83,8 @@ main::@return: scope:[main] from main::@4
Removing empty block main::@4 Removing empty block main::@4
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN1 ← (word/signed word) 1024 (byte*) SCREEN1 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN2 ← (word/signed word) 1280 (byte*) SCREEN2 ← ((byte*)) (word/signed word) 1280
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 0 (byte) main::i ← (byte/signed byte/word/signed word) 0
@ -116,8 +116,8 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN1 ← (word/signed word) 1024 (byte*) SCREEN1 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN2 ← (word/signed word) 1280 (byte*) SCREEN2 ← ((byte*)) (word/signed word) 1280
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::i ← (byte/signed byte/word/signed word) 0 (byte) main::i ← (byte/signed byte/word/signed word) 0
@ -154,8 +154,8 @@ Completing Phi functions...
Completing Phi functions... Completing Phi functions...
CONTROL FLOW GRAPH SSA CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN1#0 ← (word/signed word) 1024 (byte*) SCREEN1#0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN2#0 ← (word/signed word) 1280 (byte*) SCREEN2#0 ← ((byte*)) (word/signed word) 1280
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) SCREEN2#4 ← phi( @1/(byte*) SCREEN2#5 ) (byte*) SCREEN2#4 ← phi( @1/(byte*) SCREEN2#5 )
@ -197,8 +197,8 @@ main::@return: scope:[main] from main::@2
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN1#0 ← (word/signed word) 1024 (byte*) SCREEN1#0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN2#0 ← (word/signed word) 1280 (byte*) SCREEN2#0 ← ((byte*)) (word/signed word) 1280
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) SCREEN2#4 ← phi( @1/(byte*) SCREEN2#5 ) (byte*) SCREEN2#4 ← phi( @1/(byte*) SCREEN2#5 )
@ -275,8 +275,8 @@ Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN1#0 ← (word/signed word) 1024 (byte*) SCREEN1#0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN2#0 ← (word/signed word) 1280 (byte*) SCREEN2#0 ← ((byte*)) (word/signed word) 1280
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) SCREEN2#4 ← phi( @1/(byte*) SCREEN2#5 ) (byte*) SCREEN2#4 ← phi( @1/(byte*) SCREEN2#5 )
@ -321,8 +321,8 @@ Alias (byte*) SCREEN2#2 = (byte*) SCREEN2#3
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN1#0 ← (word/signed word) 1024 (byte*) SCREEN1#0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN2#0 ← (word/signed word) 1280 (byte*) SCREEN2#0 ← ((byte*)) (word/signed word) 1280
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -362,8 +362,8 @@ Self Phi Eliminated (byte*) SCREEN2#1
Succesful SSA optimization Pass2SelfPhiElimination Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN1#0 ← (word/signed word) 1024 (byte*) SCREEN1#0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN2#0 ← (word/signed word) 1280 (byte*) SCREEN2#0 ← ((byte*)) (word/signed word) 1280
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -402,8 +402,8 @@ Redundant Phi (byte*) SCREEN2#1 (byte*) SCREEN2#2
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN1#0 ← (word/signed word) 1024 (byte*) SCREEN1#0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN2#0 ← (word/signed word) 1280 (byte*) SCREEN2#0 ← ((byte*)) (word/signed word) 1280
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -438,8 +438,8 @@ Simple Condition (boolean~) main::$1 if((byte) main::j#1!=(byte/word/signed word
Succesful SSA optimization Pass2ConditionalJumpSimplification Succesful SSA optimization Pass2ConditionalJumpSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN1#0 ← (word/signed word) 1024 (byte*) SCREEN1#0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN2#0 ← (word/signed word) 1280 (byte*) SCREEN2#0 ← ((byte*)) (word/signed word) 1280
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -467,8 +467,8 @@ main::@return: scope:[main] from main::@2
to:@end to:@end
@end: scope:[] from @1 @end: scope:[] from @1
Constant (const byte*) SCREEN1#0 = 1024 Constant (const byte*) SCREEN1#0 = ((byte*))1024
Constant (const byte*) SCREEN2#0 = 1280 Constant (const byte*) SCREEN2#0 = ((byte*))1280
Constant (const byte) main::i#0 = 0 Constant (const byte) main::i#0 = 0
Constant (const byte) main::j#0 = 100 Constant (const byte) main::j#0 = 100
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
@ -569,9 +569,9 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN1 (byte*) SCREEN1
(const byte*) SCREEN1#0 = (word/signed word) 1024 (const byte*) SCREEN1#0 = ((byte*))(word/signed word) 1024
(byte*) SCREEN2 (byte*) SCREEN2
(const byte*) SCREEN2#0 = (word/signed word) 1280 (const byte*) SCREEN2#0 = ((byte*))(word/signed word) 1280
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@2 (label) main::@2
@ -1098,9 +1098,9 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN1 (byte*) SCREEN1
(const byte*) SCREEN1#0 SCREEN1 = (word/signed word) 1024 (const byte*) SCREEN1#0 SCREEN1 = ((byte*))(word/signed word) 1024
(byte*) SCREEN2 (byte*) SCREEN2
(const byte*) SCREEN2#0 SCREEN2 = (word/signed word) 1280 (const byte*) SCREEN2#0 SCREEN2 = ((byte*))(word/signed word) 1280
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@2 (label) main::@2

View File

@ -2,9 +2,9 @@
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN1 (byte*) SCREEN1
(const byte*) SCREEN1#0 SCREEN1 = (word/signed word) 1024 (const byte*) SCREEN1#0 SCREEN1 = ((byte*))(word/signed word) 1024
(byte*) SCREEN2 (byte*) SCREEN2
(const byte*) SCREEN2#0 SCREEN2 = (word/signed word) 1280 (const byte*) SCREEN2#0 SCREEN2 = ((byte*))(word/signed word) 1280
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@2 (label) main::@2

View File

@ -210,12 +210,12 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte*) CHARSET ← (word/signed word) 8192 (byte*) CHARSET ← ((byte*)) (word/signed word) 8192
(byte*) CHARGEN ← (word) 53248 (byte*) CHARGEN ← ((byte*)) (word) 53248
(byte*) PROCPORT ← (byte/signed byte/word/signed word) 1 (byte*) PROCPORT ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) D018 ← (word) 53272 (byte*) D018 ← ((byte*)) (word) 53272
(byte*) CHARSET4 ← (word/signed word) 10240 (byte*) CHARSET4 ← ((byte*)) (word/signed word) 10240
(byte[]) bits_count ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } (byte[]) bits_count ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 }
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
@ -334,12 +334,12 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte*) CHARSET ← (word/signed word) 8192 (byte*) CHARSET ← ((byte*)) (word/signed word) 8192
(byte*) CHARGEN ← (word) 53248 (byte*) CHARGEN ← ((byte*)) (word) 53248
(byte*) PROCPORT ← (byte/signed byte/word/signed word) 1 (byte*) PROCPORT ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) D018 ← (word) 53272 (byte*) D018 ← ((byte*)) (word) 53272
(byte*) CHARSET4 ← (word/signed word) 10240 (byte*) CHARSET4 ← ((byte*)) (word/signed word) 10240
(byte[]) bits_count ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } (byte[]) bits_count ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 }
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -468,12 +468,12 @@ Completing Phi functions...
Completing Phi functions... Completing Phi functions...
CONTROL FLOW GRAPH SSA CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) CHARSET#0 ← (word/signed word) 8192 (byte*) CHARSET#0 ← ((byte*)) (word/signed word) 8192
(byte*) CHARGEN#0 ← (word) 53248 (byte*) CHARGEN#0 ← ((byte*)) (word) 53248
(byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) D018#0 ← (word) 53272 (byte*) D018#0 ← ((byte*)) (word) 53272
(byte*) CHARSET4#0 ← (word/signed word) 10240 (byte*) CHARSET4#0 ← ((byte*)) (word/signed word) 10240
(byte[]) bits_count#0 ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } (byte[]) bits_count#0 ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 }
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -688,12 +688,12 @@ main::@return: scope:[main] from main::@12
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) CHARSET#0 ← (word/signed word) 8192 (byte*) CHARSET#0 ← ((byte*)) (word/signed word) 8192
(byte*) CHARGEN#0 ← (word) 53248 (byte*) CHARGEN#0 ← ((byte*)) (word) 53248
(byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) D018#0 ← (word) 53272 (byte*) D018#0 ← ((byte*)) (word) 53272
(byte*) CHARSET4#0 ← (word/signed word) 10240 (byte*) CHARSET4#0 ← ((byte*)) (word/signed word) 10240
(byte[]) bits_count#0 ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } (byte[]) bits_count#0 ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 }
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -1111,12 +1111,12 @@ Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) CHARSET#0 ← (word/signed word) 8192 (byte*) CHARSET#0 ← ((byte*)) (word/signed word) 8192
(byte*) CHARGEN#0 ← (word) 53248 (byte*) CHARGEN#0 ← ((byte*)) (word) 53248
(byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) D018#0 ← (word) 53272 (byte*) D018#0 ← ((byte*)) (word) 53272
(byte*) CHARSET4#0 ← (word/signed word) 10240 (byte*) CHARSET4#0 ← ((byte*)) (word/signed word) 10240
(byte[]) bits_count#0 ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } (byte[]) bits_count#0 ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 }
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -1334,12 +1334,12 @@ Inversing boolean not (boolean~) main::$38 ← (byte) main::bits#3 < (byte/signe
Succesful SSA optimization Pass2UnaryNotSimplification Succesful SSA optimization Pass2UnaryNotSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) CHARSET#0 ← (word/signed word) 8192 (byte*) CHARSET#0 ← ((byte*)) (word/signed word) 8192
(byte*) CHARGEN#0 ← (word) 53248 (byte*) CHARGEN#0 ← ((byte*)) (word) 53248
(byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) D018#0 ← (word) 53272 (byte*) D018#0 ← ((byte*)) (word) 53272
(byte*) CHARSET4#0 ← (word/signed word) 10240 (byte*) CHARSET4#0 ← ((byte*)) (word/signed word) 10240
(byte[]) bits_count#0 ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } (byte[]) bits_count#0 ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 }
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -1606,12 +1606,12 @@ Alias (byte*) D018#1 = (byte*) D018#2
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) CHARSET#0 ← (word/signed word) 8192 (byte*) CHARSET#0 ← ((byte*)) (word/signed word) 8192
(byte*) CHARGEN#0 ← (word) 53248 (byte*) CHARGEN#0 ← ((byte*)) (word) 53248
(byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) D018#0 ← (word) 53272 (byte*) D018#0 ← ((byte*)) (word) 53272
(byte*) CHARSET4#0 ← (word/signed word) 10240 (byte*) CHARSET4#0 ← ((byte*)) (word/signed word) 10240
(byte[]) bits_count#0 ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } (byte[]) bits_count#0 ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 }
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -1766,12 +1766,12 @@ Alias (byte*) D018#10 = (byte*) D018#11 (byte*) D018#7 (byte*) D018#5 (byte*) D0
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) CHARSET#0 ← (word/signed word) 8192 (byte*) CHARSET#0 ← ((byte*)) (word/signed word) 8192
(byte*) CHARGEN#0 ← (word) 53248 (byte*) CHARGEN#0 ← ((byte*)) (word) 53248
(byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) D018#0 ← (word) 53272 (byte*) D018#0 ← ((byte*)) (word) 53272
(byte*) CHARSET4#0 ← (word/signed word) 10240 (byte*) CHARSET4#0 ← ((byte*)) (word/signed word) 10240
(byte[]) bits_count#0 ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } (byte[]) bits_count#0 ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 }
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -1894,12 +1894,12 @@ Self Phi Eliminated (byte*) D018#1
Succesful SSA optimization Pass2SelfPhiElimination Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) CHARSET#0 ← (word/signed word) 8192 (byte*) CHARSET#0 ← ((byte*)) (word/signed word) 8192
(byte*) CHARGEN#0 ← (word) 53248 (byte*) CHARGEN#0 ← ((byte*)) (word) 53248
(byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) D018#0 ← (word) 53272 (byte*) D018#0 ← ((byte*)) (word) 53272
(byte*) CHARSET4#0 ← (word/signed word) 10240 (byte*) CHARSET4#0 ← ((byte*)) (word/signed word) 10240
(byte[]) bits_count#0 ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } (byte[]) bits_count#0 ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 }
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -2020,12 +2020,12 @@ Redundant Phi (byte*) D018#1 (byte*) D018#10
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) CHARSET#0 ← (word/signed word) 8192 (byte*) CHARSET#0 ← ((byte*)) (word/signed word) 8192
(byte*) CHARGEN#0 ← (word) 53248 (byte*) CHARGEN#0 ← ((byte*)) (word) 53248
(byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) D018#0 ← (word) 53272 (byte*) D018#0 ← ((byte*)) (word) 53272
(byte*) CHARSET4#0 ← (word/signed word) 10240 (byte*) CHARSET4#0 ← ((byte*)) (word/signed word) 10240
(byte[]) bits_count#0 ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } (byte[]) bits_count#0 ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 }
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -2138,12 +2138,12 @@ Simple Condition (boolean~) main::$44 if((byte) main::i#1!=(byte/signed byte/wor
Succesful SSA optimization Pass2ConditionalJumpSimplification Succesful SSA optimization Pass2ConditionalJumpSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) CHARSET#0 ← (word/signed word) 8192 (byte*) CHARSET#0 ← ((byte*)) (word/signed word) 8192
(byte*) CHARGEN#0 ← (word) 53248 (byte*) CHARGEN#0 ← ((byte*)) (word) 53248
(byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1 (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) D018#0 ← (word) 53272 (byte*) D018#0 ← ((byte*)) (word) 53272
(byte*) CHARSET4#0 ← (word/signed word) 10240 (byte*) CHARSET4#0 ← ((byte*)) (word/signed word) 10240
(byte[]) bits_count#0 ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } (byte[]) bits_count#0 ← { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 }
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -2241,12 +2241,12 @@ main::@return: scope:[main] from main::@12
to:@end to:@end
@end: scope:[] from @1 @end: scope:[] from @1
Constant (const byte*) SCREEN#0 = 1024 Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte*) CHARSET#0 = 8192 Constant (const byte*) CHARSET#0 = ((byte*))8192
Constant (const byte*) CHARGEN#0 = 53248 Constant (const byte*) CHARGEN#0 = ((byte*))53248
Constant (const byte*) PROCPORT#0 = 1 Constant (const byte*) PROCPORT#0 = ((byte*))1
Constant (const byte*) D018#0 = 53272 Constant (const byte*) D018#0 = ((byte*))53272
Constant (const byte*) CHARSET4#0 = 10240 Constant (const byte*) CHARSET4#0 = ((byte*))10240
Constant (const byte[]) bits_count#0 = { 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 } Constant (const byte[]) bits_count#0 = { 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 }
Constant (const byte) main::bits_gen#0 = 0 Constant (const byte) main::bits_gen#0 = 0
Constant (const byte) main::i#0 = 0 Constant (const byte) main::i#0 = 0
@ -2591,17 +2591,17 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) CHARGEN (byte*) CHARGEN
(const byte*) CHARGEN#0 = (word) 53248 (const byte*) CHARGEN#0 = ((byte*))(word) 53248
(byte*) CHARSET (byte*) CHARSET
(const byte*) CHARSET#0 = (word/signed word) 8192 (const byte*) CHARSET#0 = ((byte*))(word/signed word) 8192
(byte*) CHARSET4 (byte*) CHARSET4
(const byte*) CHARSET4#0 = (word/signed word) 10240 (const byte*) CHARSET4#0 = ((byte*))(word/signed word) 10240
(byte*) D018 (byte*) D018
(const byte*) D018#0 = (word) 53272 (const byte*) D018#0 = ((byte*))(word) 53272
(byte*) PROCPORT (byte*) PROCPORT
(const byte*) PROCPORT#0 = (byte/signed byte/word/signed word) 1 (const byte*) PROCPORT#0 = ((byte*))(byte/signed byte/word/signed word) 1
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024 (const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(byte[]) bits_count (byte[]) bits_count
(const byte[]) bits_count#0 = { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } (const byte[]) bits_count#0 = { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 }
(void()) main() (void()) main()
@ -5209,17 +5209,17 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) CHARGEN (byte*) CHARGEN
(const byte*) CHARGEN#0 CHARGEN = (word) 53248 (const byte*) CHARGEN#0 CHARGEN = ((byte*))(word) 53248
(byte*) CHARSET (byte*) CHARSET
(const byte*) CHARSET#0 CHARSET = (word/signed word) 8192 (const byte*) CHARSET#0 CHARSET = ((byte*))(word/signed word) 8192
(byte*) CHARSET4 (byte*) CHARSET4
(const byte*) CHARSET4#0 CHARSET4 = (word/signed word) 10240 (const byte*) CHARSET4#0 CHARSET4 = ((byte*))(word/signed word) 10240
(byte*) D018 (byte*) D018
(const byte*) D018#0 D018 = (word) 53272 (const byte*) D018#0 D018 = ((byte*))(word) 53272
(byte*) PROCPORT (byte*) PROCPORT
(const byte*) PROCPORT#0 PROCPORT = (byte/signed byte/word/signed word) 1 (const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word) 1
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte[]) bits_count (byte[]) bits_count
(const byte[]) bits_count#0 bits_count = { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } (const byte[]) bits_count#0 bits_count = { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 }
(void()) main() (void()) main()

View File

@ -2,17 +2,17 @@
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) CHARGEN (byte*) CHARGEN
(const byte*) CHARGEN#0 CHARGEN = (word) 53248 (const byte*) CHARGEN#0 CHARGEN = ((byte*))(word) 53248
(byte*) CHARSET (byte*) CHARSET
(const byte*) CHARSET#0 CHARSET = (word/signed word) 8192 (const byte*) CHARSET#0 CHARSET = ((byte*))(word/signed word) 8192
(byte*) CHARSET4 (byte*) CHARSET4
(const byte*) CHARSET4#0 CHARSET4 = (word/signed word) 10240 (const byte*) CHARSET4#0 CHARSET4 = ((byte*))(word/signed word) 10240
(byte*) D018 (byte*) D018
(const byte*) D018#0 D018 = (word) 53272 (const byte*) D018#0 D018 = ((byte*))(word) 53272
(byte*) PROCPORT (byte*) PROCPORT
(const byte*) PROCPORT#0 PROCPORT = (byte/signed byte/word/signed word) 1 (const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word) 1
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte[]) bits_count (byte[]) bits_count
(const byte[]) bits_count#0 bits_count = { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } (const byte[]) bits_count#0 bits_count = { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 }
(void()) main() (void()) main()

View File

@ -41,7 +41,7 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 0 (byte) main::i ← (byte/signed byte/word/signed word) 0
@ -72,7 +72,7 @@ main::@return: scope:[main] from main::@4
Removing empty block main::@4 Removing empty block main::@4
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 0 (byte) main::i ← (byte/signed byte/word/signed word) 0
@ -102,7 +102,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::i ← (byte/signed byte/word/signed word) 0 (byte) main::i ← (byte/signed byte/word/signed word) 0
@ -136,7 +136,7 @@ Completing Phi functions...
Completing Phi functions... Completing Phi functions...
CONTROL FLOW GRAPH SSA CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) SCREEN#3 ← phi( @1/(byte*) SCREEN#5 ) (byte*) SCREEN#3 ← phi( @1/(byte*) SCREEN#5 )
@ -174,7 +174,7 @@ main::@return: scope:[main] from main::@2
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) SCREEN#3 ← phi( @1/(byte*) SCREEN#5 ) (byte*) SCREEN#3 ← phi( @1/(byte*) SCREEN#5 )
@ -241,7 +241,7 @@ Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) SCREEN#3 ← phi( @1/(byte*) SCREEN#5 ) (byte*) SCREEN#3 ← phi( @1/(byte*) SCREEN#5 )
@ -279,7 +279,7 @@ Inversing boolean not (boolean~) main::$1 ← (byte) main::i#2 >= (byte/signed b
Succesful SSA optimization Pass2UnaryNotSimplification Succesful SSA optimization Pass2UnaryNotSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) SCREEN#3 ← phi( @1/(byte*) SCREEN#5 ) (byte*) SCREEN#3 ← phi( @1/(byte*) SCREEN#5 )
@ -318,7 +318,7 @@ Alias (byte*) SCREEN#1 = (byte*) SCREEN#2
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -352,7 +352,7 @@ Alias (byte*) SCREEN#1 = (byte*) SCREEN#4
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -383,7 +383,7 @@ Self Phi Eliminated (byte*) SCREEN#1
Succesful SSA optimization Pass2SelfPhiElimination Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -414,7 +414,7 @@ Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -445,7 +445,7 @@ Simple Condition (boolean~) main::$2 if((byte) main::i#1<(byte/signed byte/word/
Succesful SSA optimization Pass2ConditionalJumpSimplification Succesful SSA optimization Pass2ConditionalJumpSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -469,7 +469,7 @@ main::@return: scope:[main] from main::@2
to:@end to:@end
@end: scope:[] from @1 @end: scope:[] from @1
Constant (const byte*) SCREEN#0 = 1024 Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte) main::i#0 = 0 Constant (const byte) main::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@ -529,7 +529,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024 (const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@2 (label) main::@2
@ -965,7 +965,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@2 (label) main::@2

View File

@ -2,7 +2,7 @@
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@2 (label) main::@2

View File

@ -30,7 +30,7 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) BGCOL ← (word) 53280 (byte*) BGCOL ← ((byte*)) (word) 53280
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
to:main::@1 to:main::@1
@ -52,7 +52,7 @@ main::@return: scope:[main] from main::@2
Removing empty block main::@2 Removing empty block main::@2
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) BGCOL ← (word) 53280 (byte*) BGCOL ← ((byte*)) (word) 53280
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
to:main::@1 to:main::@1
@ -73,7 +73,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
(byte*) BGCOL ← (word) 53280 (byte*) BGCOL ← ((byte*)) (word) 53280
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
to:main::@1 to:main::@1
@ -97,7 +97,7 @@ Completing Phi functions...
Completing Phi functions... Completing Phi functions...
CONTROL FLOW GRAPH SSA CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
(byte*) BGCOL#0 ← (word) 53280 (byte*) BGCOL#0 ← ((byte*)) (word) 53280
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) BGCOL#2 ← phi( @1/(byte*) BGCOL#3 ) (byte*) BGCOL#2 ← phi( @1/(byte*) BGCOL#3 )
@ -121,7 +121,7 @@ main::@return: scope:[main] from main::@1
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
(byte*) BGCOL#0 ← (word) 53280 (byte*) BGCOL#0 ← ((byte*)) (word) 53280
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) BGCOL#2 ← phi( @1/(byte*) BGCOL#3 ) (byte*) BGCOL#2 ← phi( @1/(byte*) BGCOL#3 )
@ -161,7 +161,7 @@ Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) BGCOL#0 ← (word) 53280 (byte*) BGCOL#0 ← ((byte*)) (word) 53280
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) BGCOL#2 ← phi( @1/(byte*) BGCOL#3 ) (byte*) BGCOL#2 ← phi( @1/(byte*) BGCOL#3 )
@ -185,7 +185,7 @@ Alias (byte*) BGCOL#0 = (byte*) BGCOL#2 (byte*) BGCOL#3
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) BGCOL#0 ← (word) 53280 (byte*) BGCOL#0 ← ((byte*)) (word) 53280
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
to:main::@1 to:main::@1
@ -207,7 +207,7 @@ Self Phi Eliminated (byte*) BGCOL#1
Succesful SSA optimization Pass2SelfPhiElimination Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) BGCOL#0 ← (word) 53280 (byte*) BGCOL#0 ← ((byte*)) (word) 53280
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
to:main::@1 to:main::@1
@ -229,7 +229,7 @@ Redundant Phi (byte*) BGCOL#1 (byte*) BGCOL#0
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) BGCOL#0 ← (word) 53280 (byte*) BGCOL#0 ← ((byte*)) (word) 53280
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
to:main::@1 to:main::@1
@ -246,7 +246,7 @@ main::@return: scope:[main] from main::@1
to:@end to:@end
@end: scope:[] from @1 @end: scope:[] from @1
Constant (const byte*) BGCOL#0 = 53280 Constant (const byte*) BGCOL#0 = ((byte*))53280
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
@ -271,7 +271,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) BGCOL (byte*) BGCOL
(const byte*) BGCOL#0 = (word) 53280 (const byte*) BGCOL#0 = ((byte*))(word) 53280
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@return (label) main::@return
@ -543,7 +543,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) BGCOL (byte*) BGCOL
(const byte*) BGCOL#0 BGCOL = (word) 53280 (const byte*) BGCOL#0 BGCOL = ((byte*))(word) 53280
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@return (label) main::@return

View File

@ -2,7 +2,7 @@
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) BGCOL (byte*) BGCOL
(const byte*) BGCOL#0 BGCOL = (word) 53280 (const byte*) BGCOL#0 BGCOL = ((byte*))(word) 53280
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@return (label) main::@return

View File

@ -51,7 +51,7 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte[]) TXT ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } (byte[]) TXT ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 }
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
@ -87,7 +87,7 @@ main::@return: scope:[main] from main::@4
Removing empty block main::@4 Removing empty block main::@4
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte[]) TXT ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } (byte[]) TXT ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 }
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
@ -122,7 +122,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte[]) TXT ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } (byte[]) TXT ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 }
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -160,7 +160,7 @@ Completing Phi functions...
Completing Phi functions... Completing Phi functions...
CONTROL FLOW GRAPH SSA CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte[]) TXT#0 ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } (byte[]) TXT#0 ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 }
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -210,7 +210,7 @@ main::@return: scope:[main] from main::@2
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte[]) TXT#0 ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } (byte[]) TXT#0 ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 }
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -303,7 +303,7 @@ Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte[]) TXT#0 ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } (byte[]) TXT#0 ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 }
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -353,7 +353,7 @@ Inversing boolean not (boolean~) main::$2 ← (byte) main::j#1 != (byte/signed b
Succesful SSA optimization Pass2UnaryNotSimplification Succesful SSA optimization Pass2UnaryNotSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte[]) TXT#0 ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } (byte[]) TXT#0 ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 }
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -406,7 +406,7 @@ Alias (byte*) SCREEN#1 = (byte*) SCREEN#5
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte[]) TXT#0 ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } (byte[]) TXT#0 ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 }
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -450,7 +450,7 @@ Alias (byte*) SCREEN#1 = (byte*) SCREEN#3
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte[]) TXT#0 ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } (byte[]) TXT#0 ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 }
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -490,7 +490,7 @@ Self Phi Eliminated (byte*) SCREEN#1
Succesful SSA optimization Pass2SelfPhiElimination Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte[]) TXT#0 ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } (byte[]) TXT#0 ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 }
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -530,7 +530,7 @@ Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte[]) TXT#0 ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } (byte[]) TXT#0 ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 }
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -568,7 +568,7 @@ Simple Condition (boolean~) main::$3 if((byte) main::i#1!=(byte/signed byte/word
Succesful SSA optimization Pass2ConditionalJumpSimplification Succesful SSA optimization Pass2ConditionalJumpSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte[]) TXT#0 ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } (byte[]) TXT#0 ← { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 }
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -599,7 +599,7 @@ main::@return: scope:[main] from main::@2
to:@end to:@end
@end: scope:[] from @1 @end: scope:[] from @1
Constant (const byte*) SCREEN#0 = 1024 Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte[]) TXT#0 = { 3, 1, 13, 5, 12, 15, 20, 32 } Constant (const byte[]) TXT#0 = { 3, 1, 13, 5, 12, 15, 20, 32 }
Constant (const byte) main::j#0 = 0 Constant (const byte) main::j#0 = 0
Constant (const byte) main::i#0 = 0 Constant (const byte) main::i#0 = 0
@ -681,7 +681,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024 (const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(byte[]) TXT (byte[]) TXT
(const byte[]) TXT#0 = { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } (const byte[]) TXT#0 = { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 }
(void()) main() (void()) main()
@ -1256,7 +1256,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte[]) TXT (byte[]) TXT
(const byte[]) TXT#0 TXT = { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } (const byte[]) TXT#0 TXT = { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 }
(void()) main() (void()) main()

View File

@ -2,7 +2,7 @@
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte[]) TXT (byte[]) TXT
(const byte[]) TXT#0 TXT = { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } (const byte[]) TXT#0 TXT = { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 }
(void()) main() (void()) main()

View File

@ -55,7 +55,7 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte[]) TEXT ← (string) "camelot " (byte[]) TEXT ← (string) "camelot "
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
@ -92,7 +92,7 @@ main::@return: scope:[main] from main::@4
Removing empty block main::@4 Removing empty block main::@4
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte[]) TEXT ← (string) "camelot " (byte[]) TEXT ← (string) "camelot "
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
@ -128,7 +128,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte[]) TEXT ← (string) "camelot " (byte[]) TEXT ← (string) "camelot "
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -167,7 +167,7 @@ Completing Phi functions...
Completing Phi functions... Completing Phi functions...
CONTROL FLOW GRAPH SSA CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte[]) TEXT#0 ← (string) "camelot " (byte[]) TEXT#0 ← (string) "camelot "
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -218,7 +218,7 @@ main::@return: scope:[main] from main::@2
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte[]) TEXT#0 ← (string) "camelot " (byte[]) TEXT#0 ← (string) "camelot "
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -313,7 +313,7 @@ Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte[]) TEXT#0 ← (string) "camelot " (byte[]) TEXT#0 ← (string) "camelot "
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -364,7 +364,7 @@ Inversing boolean not (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed b
Succesful SSA optimization Pass2UnaryNotSimplification Succesful SSA optimization Pass2UnaryNotSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte[]) TEXT#0 ← (string) "camelot " (byte[]) TEXT#0 ← (string) "camelot "
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -419,7 +419,7 @@ Alias (byte[]) TEXT#1 = (byte[]) TEXT#5
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte[]) TEXT#0 ← (string) "camelot " (byte[]) TEXT#0 ← (string) "camelot "
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -465,7 +465,7 @@ Alias (byte[]) TEXT#1 = (byte[]) TEXT#3
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte[]) TEXT#0 ← (string) "camelot " (byte[]) TEXT#0 ← (string) "camelot "
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -507,7 +507,7 @@ Self Phi Eliminated (byte*) SCREEN#2
Succesful SSA optimization Pass2SelfPhiElimination Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte[]) TEXT#0 ← (string) "camelot " (byte[]) TEXT#0 ← (string) "camelot "
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -548,7 +548,7 @@ Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#0
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte[]) TEXT#0 ← (string) "camelot " (byte[]) TEXT#0 ← (string) "camelot "
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -587,7 +587,7 @@ Simple Condition (boolean~) main::$4 if((byte*) main::cursor#1<(byte*~) main::$3
Succesful SSA optimization Pass2ConditionalJumpSimplification Succesful SSA optimization Pass2ConditionalJumpSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte[]) TEXT#0 ← (string) "camelot " (byte[]) TEXT#0 ← (string) "camelot "
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -619,7 +619,7 @@ main::@return: scope:[main] from main::@2
to:@end to:@end
@end: scope:[] from @1 @end: scope:[] from @1
Constant (const byte*) SCREEN#0 = 1024 Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte[]) TEXT#0 = "camelot " Constant (const byte[]) TEXT#0 = "camelot "
Constant (const byte) main::i#0 = 0 Constant (const byte) main::i#0 = 0
Constant (const byte) main::i#2 = 0 Constant (const byte) main::i#2 = 0
@ -734,7 +734,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024 (const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(byte[]) TEXT (byte[]) TEXT
(const byte[]) TEXT#0 = (string) "camelot " (const byte[]) TEXT#0 = (string) "camelot "
(void()) main() (void()) main()
@ -1383,7 +1383,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte[]) TEXT (byte[]) TEXT
(const byte[]) TEXT#0 TEXT = (string) "camelot " (const byte[]) TEXT#0 TEXT = (string) "camelot "
(void()) main() (void()) main()

View File

@ -2,7 +2,7 @@
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte[]) TEXT (byte[]) TEXT
(const byte[]) TEXT#0 TEXT = (string) "camelot " (const byte[]) TEXT#0 TEXT = (string) "camelot "
(void()) main() (void()) main()

View File

@ -38,7 +38,7 @@ INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(byte[16]) main::buf ← (word/signed word) 4352 (byte[16]) main::buf ← ((byte*)) (word/signed word) 4352
(byte) main::i ← (byte/signed byte/word/signed word) 5 (byte) main::i ← (byte/signed byte/word/signed word) 5
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@1 main::@1: scope:[main] from main main::@1
@ -65,7 +65,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(byte[16]) main::buf ← (word/signed word) 4352 (byte[16]) main::buf ← ((byte*)) (word/signed word) 4352
(byte) main::i ← (byte/signed byte/word/signed word) 5 (byte) main::i ← (byte/signed byte/word/signed word) 5
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@1 main::@1: scope:[main] from main main::@1
@ -91,7 +91,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte[16]) main::buf ← (word/signed word) 4352 (byte[16]) main::buf ← ((byte*)) (word/signed word) 4352
(byte) main::i ← (byte/signed byte/word/signed word) 5 (byte) main::i ← (byte/signed byte/word/signed word) 5
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@1 main::@1: scope:[main] from main main::@1
@ -118,7 +118,7 @@ CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte[16]) main::buf#0 ← (word/signed word) 4352 (byte[16]) main::buf#0 ← ((byte*)) (word/signed word) 4352
(byte) main::i#0 ← (byte/signed byte/word/signed word) 5 (byte) main::i#0 ← (byte/signed byte/word/signed word) 5
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@1 main::@1: scope:[main] from main main::@1
@ -146,7 +146,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte[16]) main::buf#0 ← (word/signed word) 4352 (byte[16]) main::buf#0 ← ((byte*)) (word/signed word) 4352
(byte) main::i#0 ← (byte/signed byte/word/signed word) 5 (byte) main::i#0 ← (byte/signed byte/word/signed word) 5
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@1 main::@1: scope:[main] from main main::@1
@ -196,7 +196,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte[16]) main::buf#0 ← (word/signed word) 4352 (byte[16]) main::buf#0 ← ((byte*)) (word/signed word) 4352
(byte) main::i#0 ← (byte/signed byte/word/signed word) 5 (byte) main::i#0 ← (byte/signed byte/word/signed word) 5
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@1 main::@1: scope:[main] from main main::@1
@ -224,7 +224,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte[16]) main::buf#0 ← (word/signed word) 4352 (byte[16]) main::buf#0 ← ((byte*)) (word/signed word) 4352
(byte) main::i#0 ← (byte/signed byte/word/signed word) 5 (byte) main::i#0 ← (byte/signed byte/word/signed word) 5
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@1 main::@1: scope:[main] from main main::@1
@ -251,7 +251,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte[16]) main::buf#0 ← (word/signed word) 4352 (byte[16]) main::buf#0 ← ((byte*)) (word/signed word) 4352
(byte) main::i#0 ← (byte/signed byte/word/signed word) 5 (byte) main::i#0 ← (byte/signed byte/word/signed word) 5
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@1 main::@1: scope:[main] from main main::@1
@ -278,7 +278,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte[16]) main::buf#0 ← (word/signed word) 4352 (byte[16]) main::buf#0 ← ((byte*)) (word/signed word) 4352
(byte) main::i#0 ← (byte/signed byte/word/signed word) 5 (byte) main::i#0 ← (byte/signed byte/word/signed word) 5
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@1 main::@1: scope:[main] from main main::@1
@ -304,7 +304,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte[16]) main::buf#0 ← (word/signed word) 4352 (byte[16]) main::buf#0 ← ((byte*)) (word/signed word) 4352
(byte) main::i#0 ← (byte/signed byte/word/signed word) 5 (byte) main::i#0 ← (byte/signed byte/word/signed word) 5
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@1 main::@1: scope:[main] from main main::@1
@ -323,7 +323,7 @@ main::@return: scope:[main] from main::@1
to:@end to:@end
@end: scope:[] from @1 @end: scope:[] from @1
Constant (const byte[16]) main::buf#0 = 4352 Constant (const byte[16]) main::buf#0 = ((byte*))4352
Constant (const byte) main::i#0 = 5 Constant (const byte) main::i#0 = 5
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@ -436,7 +436,7 @@ FINAL SYMBOL TABLE
(label) main::@1 (label) main::@1
(label) main::@return (label) main::@return
(byte[16]) main::buf (byte[16]) main::buf
(const byte[16]) main::buf#0 = (word/signed word) 4352 (const byte[16]) main::buf#0 = ((byte*))(word/signed word) 4352
(byte) main::i (byte) main::i
(byte) main::i#1 (byte) main::i#1
(byte) main::i#2 (byte) main::i#2
@ -845,7 +845,7 @@ FINAL SYMBOL TABLE
(label) main::@1 (label) main::@1
(label) main::@return (label) main::@return
(byte[16]) main::buf (byte[16]) main::buf
(const byte[16]) main::buf#0 buf = (word/signed word) 4352 (const byte[16]) main::buf#0 buf = ((byte*))(word/signed word) 4352
(byte) main::i (byte) main::i
(byte) main::i#1 reg byte x 16.5 (byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 14.666666666666666 (byte) main::i#2 reg byte x 14.666666666666666

View File

@ -6,7 +6,7 @@
(label) main::@1 (label) main::@1
(label) main::@return (label) main::@return
(byte[16]) main::buf (byte[16]) main::buf
(const byte[16]) main::buf#0 buf = (word/signed word) 4352 (const byte[16]) main::buf#0 buf = ((byte*))(word/signed word) 4352
(byte) main::i (byte) main::i
(byte) main::i#1 reg byte x 16.5 (byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 14.666666666666666 (byte) main::i#2 reg byte x 14.666666666666666

View File

@ -60,7 +60,7 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte) char ← (byte) 'a' (byte) char ← (byte) 'a'
(byte) num ← (byte/signed byte/word/signed word) 1 (byte) num ← (byte/signed byte/word/signed word) 1
(string~) $0 ← (string) "bc" + (string) "d" (string~) $0 ← (string) "bc" + (string) "d"
@ -97,7 +97,7 @@ main::@return: scope:[main] from main::@2
Removing empty block main::@2 Removing empty block main::@2
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte) char ← (byte) 'a' (byte) char ← (byte) 'a'
(byte) num ← (byte/signed byte/word/signed word) 1 (byte) num ← (byte/signed byte/word/signed word) 1
(string~) $0 ← (string) "bc" + (string) "d" (string~) $0 ← (string) "bc" + (string) "d"
@ -133,7 +133,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte) char ← (byte) 'a' (byte) char ← (byte) 'a'
(byte) num ← (byte/signed byte/word/signed word) 1 (byte) num ← (byte/signed byte/word/signed word) 1
(string~) $0 ← (string) "bc" + (string) "d" (string~) $0 ← (string) "bc" + (string) "d"
@ -172,7 +172,7 @@ Completing Phi functions...
Completing Phi functions... Completing Phi functions...
CONTROL FLOW GRAPH SSA CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte) char#0 ← (byte) 'a' (byte) char#0 ← (byte) 'a'
(byte) num#0 ← (byte/signed byte/word/signed word) 1 (byte) num#0 ← (byte/signed byte/word/signed word) 1
(string~) $0 ← (string) "bc" + (string) "d" (string~) $0 ← (string) "bc" + (string) "d"
@ -222,7 +222,7 @@ main::@return: scope:[main] from main::@1
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte) char#0 ← (byte) 'a' (byte) char#0 ← (byte) 'a'
(byte) num#0 ← (byte/signed byte/word/signed word) 1 (byte) num#0 ← (byte/signed byte/word/signed word) 1
(string~) $0 ← (string) "bc" + (string) "d" (string~) $0 ← (string) "bc" + (string) "d"
@ -317,7 +317,7 @@ Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte) char#0 ← (byte) 'a' (byte) char#0 ← (byte) 'a'
(byte) num#0 ← (byte/signed byte/word/signed word) 1 (byte) num#0 ← (byte/signed byte/word/signed word) 1
(string~) $0 ← (string) "bc" + (string) "d" (string~) $0 ← (string) "bc" + (string) "d"
@ -371,7 +371,7 @@ Alias (byte[]) nums#0 = (byte[]) nums#2 (byte[]) nums#3
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte) char#0 ← (byte) 'a' (byte) char#0 ← (byte) 'a'
(byte) num#0 ← (byte/signed byte/word/signed word) 1 (byte) num#0 ← (byte/signed byte/word/signed word) 1
(string~) $0 ← (string) "bc" + (string) "d" (string~) $0 ← (string) "bc" + (string) "d"
@ -412,7 +412,7 @@ Self Phi Eliminated (byte[]) nums#1
Succesful SSA optimization Pass2SelfPhiElimination Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte) char#0 ← (byte) 'a' (byte) char#0 ← (byte) 'a'
(byte) num#0 ← (byte/signed byte/word/signed word) 1 (byte) num#0 ← (byte/signed byte/word/signed word) 1
(string~) $0 ← (string) "bc" + (string) "d" (string~) $0 ← (string) "bc" + (string) "d"
@ -453,7 +453,7 @@ Redundant Phi (byte[]) nums#1 (byte[]) nums#0
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte) char#0 ← (byte) 'a' (byte) char#0 ← (byte) 'a'
(byte) num#0 ← (byte/signed byte/word/signed word) 1 (byte) num#0 ← (byte/signed byte/word/signed word) 1
(string~) $0 ← (string) "bc" + (string) "d" (string~) $0 ← (string) "bc" + (string) "d"
@ -489,7 +489,7 @@ Simple Condition (boolean~) main::$4 if((byte) main::i#1!=(byte/signed byte/word
Succesful SSA optimization Pass2ConditionalJumpSimplification Succesful SSA optimization Pass2ConditionalJumpSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte) char#0 ← (byte) 'a' (byte) char#0 ← (byte) 'a'
(byte) num#0 ← (byte/signed byte/word/signed word) 1 (byte) num#0 ← (byte/signed byte/word/signed word) 1
(string~) $0 ← (string) "bc" + (string) "d" (string~) $0 ← (string) "bc" + (string) "d"
@ -520,7 +520,7 @@ main::@return: scope:[main] from main::@1
to:@end to:@end
@end: scope:[] from @1 @end: scope:[] from @1
Constant (const byte*) SCREEN#0 = 1024 Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte) char#0 = 'a' Constant (const byte) char#0 = 'a'
Constant (const byte) num#0 = 1 Constant (const byte) num#0 = 1
Constant (const string) $0 = "bc"+"d" Constant (const string) $0 = "bc"+"d"
@ -687,7 +687,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024 (const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(byte) char (byte) char
(const byte) char#0 = (byte) 'a' (const byte) char#0 = (byte) 'a'
(void()) main() (void()) main()
@ -1182,7 +1182,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte) char (byte) char
(const byte) char#0 char = (byte) 'a' (const byte) char#0 char = (byte) 'a'
(void()) main() (void()) main()

View File

@ -2,7 +2,7 @@
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte) char (byte) char
(const byte) char#0 char = (byte) 'a' (const byte) char#0 char = (byte) 'a'
(void()) main() (void()) main()

View File

@ -56,7 +56,7 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 100 (byte) main::i ← (byte/signed byte/word/signed word) 100
@ -98,7 +98,7 @@ Removing empty block @1
Removing empty block nest::@2 Removing empty block nest::@2
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 100 (byte) main::i ← (byte/signed byte/word/signed word) 100
@ -133,7 +133,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
(byte) main::i ← (byte/signed byte/word/signed word) 100 (byte) main::i ← (byte/signed byte/word/signed word) 100
@ -175,7 +175,7 @@ Completing Phi functions...
Completing Phi functions... Completing Phi functions...
CONTROL FLOW GRAPH SSA CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
(byte*) SCREEN#4 ← phi( @2/(byte*) SCREEN#6 ) (byte*) SCREEN#4 ← phi( @2/(byte*) SCREEN#6 )
@ -221,7 +221,7 @@ nest::@return: scope:[nest] from nest::@1
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
(byte*) SCREEN#4 ← phi( @2/(byte*) SCREEN#6 ) (byte*) SCREEN#4 ← phi( @2/(byte*) SCREEN#6 )
@ -301,7 +301,7 @@ Culled Empty Block (label) @3
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
(byte*) SCREEN#4 ← phi( @2/(byte*) SCREEN#6 ) (byte*) SCREEN#4 ← phi( @2/(byte*) SCREEN#6 )
@ -349,7 +349,7 @@ Alias (byte*) SCREEN#2 = (byte*) SCREEN#5 (byte*) SCREEN#3
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
(byte) main::i#0 ← (byte/signed byte/word/signed word) 100 (byte) main::i#0 ← (byte/signed byte/word/signed word) 100
@ -391,7 +391,7 @@ Self Phi Eliminated (byte*) SCREEN#1
Succesful SSA optimization Pass2SelfPhiElimination Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
(byte) main::i#0 ← (byte/signed byte/word/signed word) 100 (byte) main::i#0 ← (byte/signed byte/word/signed word) 100
@ -433,7 +433,7 @@ Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#2
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
(byte) main::i#0 ← (byte/signed byte/word/signed word) 100 (byte) main::i#0 ← (byte/signed byte/word/signed word) 100
@ -473,7 +473,7 @@ Simple Condition (boolean~) nest::$0 if((byte) nest::j#1>(byte/signed byte/word/
Succesful SSA optimization Pass2ConditionalJumpSimplification Succesful SSA optimization Pass2ConditionalJumpSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
(byte) main::i#0 ← (byte/signed byte/word/signed word) 100 (byte) main::i#0 ← (byte/signed byte/word/signed word) 100
@ -506,7 +506,7 @@ nest::@return: scope:[nest] from nest::@1
to:@end to:@end
@end: scope:[] from @2 @end: scope:[] from @2
Constant (const byte*) SCREEN#0 = 1024 Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte) main::i#0 = 100 Constant (const byte) main::i#0 = 100
Constant (const byte) nest::j#0 = 100 Constant (const byte) nest::j#0 = 100
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
@ -586,7 +586,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024 (const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@3 (label) main::@3
@ -1196,7 +1196,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@3 (label) main::@3

View File

@ -2,7 +2,7 @@
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@3 (label) main::@3

View File

@ -116,7 +116,7 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 100 (byte) main::i ← (byte/signed byte/word/signed word) 100
@ -200,7 +200,7 @@ Removing empty block @2
Removing empty block nest2::@4 Removing empty block nest2::@4
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 100 (byte) main::i ← (byte/signed byte/word/signed word) 100
@ -271,7 +271,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte) main::i ← (byte/signed byte/word/signed word) 100 (byte) main::i ← (byte/signed byte/word/signed word) 100
@ -356,7 +356,7 @@ Completing Phi functions...
Completing Phi functions... Completing Phi functions...
CONTROL FLOW GRAPH SSA CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte*) SCREEN#13 ← phi( @3/(byte*) SCREEN#15 ) (byte*) SCREEN#13 ← phi( @3/(byte*) SCREEN#15 )
@ -462,7 +462,7 @@ nest2::@return: scope:[nest2] from nest2::@3
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte*) SCREEN#13 ← phi( @3/(byte*) SCREEN#15 ) (byte*) SCREEN#13 ← phi( @3/(byte*) SCREEN#15 )
@ -650,7 +650,7 @@ Culled Empty Block (label) @4
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte*) SCREEN#13 ← phi( @3/(byte*) SCREEN#15 ) (byte*) SCREEN#13 ← phi( @3/(byte*) SCREEN#15 )
@ -764,7 +764,7 @@ Alias (byte*) SCREEN#1 = (byte*) SCREEN#4
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte) main::i#0 ← (byte/signed byte/word/signed word) 100 (byte) main::i#0 ← (byte/signed byte/word/signed word) 100
@ -859,7 +859,7 @@ Self Phi Eliminated (byte) nest2::i#2
Succesful SSA optimization Pass2SelfPhiElimination Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte) main::i#0 ← (byte/signed byte/word/signed word) 100 (byte) main::i#0 ← (byte/signed byte/word/signed word) 100
@ -954,7 +954,7 @@ Redundant Phi (byte) nest2::i#2 (byte) nest2::i#4
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte) main::i#0 ← (byte/signed byte/word/signed word) 100 (byte) main::i#0 ← (byte/signed byte/word/signed word) 100
@ -1043,7 +1043,7 @@ Simple Condition (boolean~) nest2::$1 if((byte) nest2::i#1>(byte/signed byte/wor
Succesful SSA optimization Pass2ConditionalJumpSimplification Succesful SSA optimization Pass2ConditionalJumpSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte) main::i#0 ← (byte/signed byte/word/signed word) 100 (byte) main::i#0 ← (byte/signed byte/word/signed word) 100
@ -1117,7 +1117,7 @@ nest2::@return: scope:[nest2] from nest2::@3
to:@end to:@end
@end: scope:[] from @3 @end: scope:[] from @3
Constant (const byte*) SCREEN#0 = 1024 Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte) main::i#0 = 100 Constant (const byte) main::i#0 = 100
Constant (const byte) main::j#0 = 100 Constant (const byte) main::j#0 = 100
Constant (const byte) nest1::i#0 = 100 Constant (const byte) nest1::i#0 = 100
@ -1427,7 +1427,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024 (const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@2 (label) main::@2
@ -2742,7 +2742,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@2 (label) main::@2

View File

@ -2,7 +2,7 @@
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@2 (label) main::@2

View File

@ -67,7 +67,7 @@ INITIAL CONTROL FLOW GRAPH
(byte) cnt ← (byte/signed byte/word/signed word) 0 (byte) cnt ← (byte/signed byte/word/signed word) 0
(byte) cnt2 ← (byte/signed byte/word/signed word) 0 (byte) cnt2 ← (byte/signed byte/word/signed word) 0
(byte) cnt3 ← (byte/signed byte/word/signed word) 0 (byte) cnt3 ← (byte/signed byte/word/signed word) 0
(byte[256]) SCREEN ← (word/signed word) 1024 (byte[256]) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(byte~) main::$0 ← call inccnt (byte~) main::$0 ← call inccnt
@ -105,7 +105,7 @@ CONTROL FLOW GRAPH
(byte) cnt ← (byte/signed byte/word/signed word) 0 (byte) cnt ← (byte/signed byte/word/signed word) 0
(byte) cnt2 ← (byte/signed byte/word/signed word) 0 (byte) cnt2 ← (byte/signed byte/word/signed word) 0
(byte) cnt3 ← (byte/signed byte/word/signed word) 0 (byte) cnt3 ← (byte/signed byte/word/signed word) 0
(byte[256]) SCREEN ← (word/signed word) 1024 (byte[256]) SCREEN ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from main: scope:[main] from
(byte~) main::$0 ← call inccnt (byte~) main::$0 ← call inccnt
@ -145,7 +145,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
(byte) cnt ← (byte/signed byte/word/signed word) 0 (byte) cnt ← (byte/signed byte/word/signed word) 0
(byte) cnt2 ← (byte/signed byte/word/signed word) 0 (byte) cnt2 ← (byte/signed byte/word/signed word) 0
(byte) cnt3 ← (byte/signed byte/word/signed word) 0 (byte) cnt3 ← (byte/signed byte/word/signed word) 0
(byte[256]) SCREEN ← (word/signed word) 1024 (byte[256]) SCREEN ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
(byte) inccnt::return ← call inccnt param-assignment (byte) inccnt::return ← call inccnt param-assignment
@ -203,7 +203,7 @@ CONTROL FLOW GRAPH SSA
(byte) cnt#0 ← (byte/signed byte/word/signed word) 0 (byte) cnt#0 ← (byte/signed byte/word/signed word) 0
(byte) cnt2#0 ← (byte/signed byte/word/signed word) 0 (byte) cnt2#0 ← (byte/signed byte/word/signed word) 0
(byte) cnt3#0 ← (byte/signed byte/word/signed word) 0 (byte) cnt3#0 ← (byte/signed byte/word/signed word) 0
(byte[256]) SCREEN#0 ← (word/signed word) 1024 (byte[256]) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
(byte[256]) SCREEN#3 ← phi( @2/(byte[256]) SCREEN#4 ) (byte[256]) SCREEN#3 ← phi( @2/(byte[256]) SCREEN#4 )
@ -289,7 +289,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
(byte) cnt#0 ← (byte/signed byte/word/signed word) 0 (byte) cnt#0 ← (byte/signed byte/word/signed word) 0
(byte) cnt2#0 ← (byte/signed byte/word/signed word) 0 (byte) cnt2#0 ← (byte/signed byte/word/signed word) 0
(byte) cnt3#0 ← (byte/signed byte/word/signed word) 0 (byte) cnt3#0 ← (byte/signed byte/word/signed word) 0
(byte[256]) SCREEN#0 ← (word/signed word) 1024 (byte[256]) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
(byte[256]) SCREEN#3 ← phi( @2/(byte[256]) SCREEN#4 ) (byte[256]) SCREEN#3 ← phi( @2/(byte[256]) SCREEN#4 )
@ -466,7 +466,7 @@ CONTROL FLOW GRAPH
(byte) cnt#0 ← (byte/signed byte/word/signed word) 0 (byte) cnt#0 ← (byte/signed byte/word/signed word) 0
(byte) cnt2#0 ← (byte/signed byte/word/signed word) 0 (byte) cnt2#0 ← (byte/signed byte/word/signed word) 0
(byte) cnt3#0 ← (byte/signed byte/word/signed word) 0 (byte) cnt3#0 ← (byte/signed byte/word/signed word) 0
(byte[256]) SCREEN#0 ← (word/signed word) 1024 (byte[256]) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
call inccnt param-assignment call inccnt param-assignment
@ -509,7 +509,7 @@ Not aliassing across scopes: inccnt::return#0 cnt#1
Constant (const byte) cnt#0 = 0 Constant (const byte) cnt#0 = 0
Constant (const byte) cnt2#0 = 0 Constant (const byte) cnt2#0 = 0
Constant (const byte) cnt3#0 = 0 Constant (const byte) cnt3#0 = 0
Constant (const byte[256]) SCREEN#0 = 1024 Constant (const byte[256]) SCREEN#0 = ((byte*))1024
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
@ -686,7 +686,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte[256]) SCREEN (byte[256]) SCREEN
(const byte[256]) SCREEN#0 = (word/signed word) 1024 (const byte[256]) SCREEN#0 = ((byte*))(word/signed word) 1024
(byte) cnt (byte) cnt
(byte) cnt#1 (byte) cnt#1
(byte) cnt#11 (byte) cnt#11
@ -1303,7 +1303,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte[256]) SCREEN (byte[256]) SCREEN
(const byte[256]) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte[256]) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte) cnt (byte) cnt
(byte) cnt#1 reg byte x 0.75 (byte) cnt#1 reg byte x 0.75
(byte) cnt#11 reg byte x 4.0 (byte) cnt#11 reg byte x 4.0

View File

@ -2,7 +2,7 @@
(label) @begin (label) @begin
(label) @end (label) @end
(byte[256]) SCREEN (byte[256]) SCREEN
(const byte[256]) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte[256]) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte) cnt (byte) cnt
(byte) cnt#1 reg byte x 0.75 (byte) cnt#1 reg byte x 0.75
(byte) cnt#11 reg byte x 4.0 (byte) cnt#11 reg byte x 4.0

View File

@ -51,7 +51,7 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte) cnt ← (byte/signed byte/word/signed word) 0 (byte) cnt ← (byte/signed byte/word/signed word) 0
(byte[256]) SCREEN ← (word/signed word) 1024 (byte[256]) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(void~) main::$0 ← call inccnt (void~) main::$0 ← call inccnt
@ -81,7 +81,7 @@ Removing empty block @1
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte) cnt ← (byte/signed byte/word/signed word) 0 (byte) cnt ← (byte/signed byte/word/signed word) 0
(byte[256]) SCREEN ← (word/signed word) 1024 (byte[256]) SCREEN ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from main: scope:[main] from
(void~) main::$0 ← call inccnt (void~) main::$0 ← call inccnt
@ -112,7 +112,7 @@ inccnt modifies cnt
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
(byte) cnt ← (byte/signed byte/word/signed word) 0 (byte) cnt ← (byte/signed byte/word/signed word) 0
(byte[256]) SCREEN ← (word/signed word) 1024 (byte[256]) SCREEN ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
call inccnt param-assignment call inccnt param-assignment
@ -153,7 +153,7 @@ Completing Phi functions...
CONTROL FLOW GRAPH SSA CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
(byte) cnt#0 ← (byte/signed byte/word/signed word) 0 (byte) cnt#0 ← (byte/signed byte/word/signed word) 0
(byte[256]) SCREEN#0 ← (word/signed word) 1024 (byte[256]) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
(byte[256]) SCREEN#3 ← phi( @2/(byte[256]) SCREEN#4 ) (byte[256]) SCREEN#3 ← phi( @2/(byte[256]) SCREEN#4 )
@ -203,7 +203,7 @@ inccnt::@return: scope:[inccnt] from inccnt
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
(byte) cnt#0 ← (byte/signed byte/word/signed word) 0 (byte) cnt#0 ← (byte/signed byte/word/signed word) 0
(byte[256]) SCREEN#0 ← (word/signed word) 1024 (byte[256]) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
(byte[256]) SCREEN#3 ← phi( @2/(byte[256]) SCREEN#4 ) (byte[256]) SCREEN#3 ← phi( @2/(byte[256]) SCREEN#4 )
@ -294,7 +294,7 @@ Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte) cnt#0 ← (byte/signed byte/word/signed word) 0 (byte) cnt#0 ← (byte/signed byte/word/signed word) 0
(byte[256]) SCREEN#0 ← (word/signed word) 1024 (byte[256]) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
call inccnt param-assignment call inccnt param-assignment
@ -326,7 +326,7 @@ inccnt::@return: scope:[inccnt] from inccnt
@end: scope:[] from @3 @end: scope:[] from @3
Constant (const byte) cnt#0 = 0 Constant (const byte) cnt#0 = 0
Constant (const byte[256]) SCREEN#0 = 1024 Constant (const byte[256]) SCREEN#0 = ((byte*))1024
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
@ -468,7 +468,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte[256]) SCREEN (byte[256]) SCREEN
(const byte[256]) SCREEN#0 = (word/signed word) 1024 (const byte[256]) SCREEN#0 = ((byte*))(word/signed word) 1024
(byte) cnt (byte) cnt
(byte) cnt#1 (byte) cnt#1
(byte) cnt#11 (byte) cnt#11
@ -936,7 +936,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte[256]) SCREEN (byte[256]) SCREEN
(const byte[256]) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte[256]) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte) cnt (byte) cnt
(byte) cnt#1 reg byte x 1.6 (byte) cnt#1 reg byte x 1.6
(byte) cnt#11 reg byte x 4.0 (byte) cnt#11 reg byte x 4.0

View File

@ -2,7 +2,7 @@
(label) @begin (label) @begin
(label) @end (label) @end
(byte[256]) SCREEN (byte[256]) SCREEN
(const byte[256]) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte[256]) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte) cnt (byte) cnt
(byte) cnt#1 reg byte x 1.6 (byte) cnt#1 reg byte x 1.6
(byte) cnt#11 reg byte x 4.0 (byte) cnt#11 reg byte x 4.0

View File

@ -75,7 +75,7 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 0 (byte) main::i ← (byte/signed byte/word/signed word) 0
@ -128,7 +128,7 @@ Removing empty block @1
Removing empty block @2 Removing empty block @2
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 0 (byte) main::i ← (byte/signed byte/word/signed word) 0
@ -174,7 +174,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte) main::i ← (byte/signed byte/word/signed word) 0 (byte) main::i ← (byte/signed byte/word/signed word) 0
@ -237,7 +237,7 @@ Completing Phi functions...
Completing Phi functions... Completing Phi functions...
CONTROL FLOW GRAPH SSA CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte*) SCREEN#6 ← phi( @3/(byte*) SCREEN#10 ) (byte*) SCREEN#6 ← phi( @3/(byte*) SCREEN#10 )
@ -312,7 +312,7 @@ plot::@return: scope:[plot] from plot
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte*) SCREEN#6 ← phi( @3/(byte*) SCREEN#10 ) (byte*) SCREEN#6 ← phi( @3/(byte*) SCREEN#10 )
@ -443,7 +443,7 @@ Culled Empty Block (label) @4
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte*) SCREEN#6 ← phi( @3/(byte*) SCREEN#10 ) (byte*) SCREEN#6 ← phi( @3/(byte*) SCREEN#10 )
@ -526,7 +526,7 @@ Alias (byte*) SCREEN#2 = (byte*) SCREEN#3
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -594,7 +594,7 @@ Alias (byte*) SCREEN#1 = (byte*) SCREEN#2
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -662,7 +662,7 @@ Self Phi Eliminated (byte*) SCREEN#5
Succesful SSA optimization Pass2SelfPhiElimination Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -726,7 +726,7 @@ Redundant Phi (byte*) SCREEN#5 (byte*) SCREEN#4
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -787,7 +787,7 @@ Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -848,7 +848,7 @@ Simple Condition (boolean~) main::$3 if((byte) main::j#1!=(byte/signed byte/word
Succesful SSA optimization Pass2ConditionalJumpSimplification Succesful SSA optimization Pass2ConditionalJumpSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -902,7 +902,7 @@ plot::@return: scope:[plot] from plot
to:@end to:@end
@end: scope:[] from @3 @end: scope:[] from @3
Constant (const byte*) SCREEN#0 = 1024 Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte) main::i#0 = 0 Constant (const byte) main::i#0 = 0
Constant (const byte) main::j#0 = 10 Constant (const byte) main::j#0 = 10
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
@ -1086,7 +1086,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024 (const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(void()) line((byte) line::l) (void()) line((byte) line::l)
(byte~) line::$1 (byte~) line::$1
(label) line::@1 (label) line::@1
@ -2045,7 +2045,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) line((byte) line::l) (void()) line((byte) line::l)
(byte~) line::$1 reg byte a 4.0 (byte~) line::$1 reg byte a 4.0
(label) line::@1 (label) line::@1

View File

@ -2,7 +2,7 @@
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) line((byte) line::l) (void()) line((byte) line::l)
(byte~) line::$1 reg byte a 4.0 (byte~) line::$1 reg byte a 4.0
(label) line::@1 (label) line::@1

View File

@ -71,7 +71,7 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 0 (byte) main::i ← (byte/signed byte/word/signed word) 0
@ -122,7 +122,7 @@ Removing empty block main::@6
Removing empty block @1 Removing empty block @1
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 0 (byte) main::i ← (byte/signed byte/word/signed word) 0
@ -169,7 +169,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
(byte) main::i ← (byte/signed byte/word/signed word) 0 (byte) main::i ← (byte/signed byte/word/signed word) 0
@ -229,7 +229,7 @@ Completing Phi functions...
Completing Phi functions... Completing Phi functions...
CONTROL FLOW GRAPH SSA CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
(byte*) SCREEN#5 ← phi( @2/(byte*) SCREEN#11 ) (byte*) SCREEN#5 ← phi( @2/(byte*) SCREEN#11 )
@ -303,7 +303,7 @@ plot::@return: scope:[plot] from plot
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
(byte*) SCREEN#5 ← phi( @2/(byte*) SCREEN#11 ) (byte*) SCREEN#5 ← phi( @2/(byte*) SCREEN#11 )
@ -433,7 +433,7 @@ Culled Empty Block (label) @3
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
(byte*) SCREEN#5 ← phi( @2/(byte*) SCREEN#11 ) (byte*) SCREEN#5 ← phi( @2/(byte*) SCREEN#11 )
@ -516,7 +516,7 @@ Alias (byte*) SCREEN#10 = (byte*) SCREEN#4
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -585,7 +585,7 @@ Self Phi Eliminated (byte*) SCREEN#10
Succesful SSA optimization Pass2SelfPhiElimination Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -651,7 +651,7 @@ Redundant Phi (byte*) SCREEN#10 (byte*) SCREEN#3
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -712,7 +712,7 @@ Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -774,7 +774,7 @@ Simple Condition (boolean~) main::$5 if((byte) main::k#1!=(byte/signed byte/word
Succesful SSA optimization Pass2ConditionalJumpSimplification Succesful SSA optimization Pass2ConditionalJumpSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -827,7 +827,7 @@ plot::@return: scope:[plot] from plot
to:@end to:@end
@end: scope:[] from @2 @end: scope:[] from @2
Constant (const byte*) SCREEN#0 = 1024 Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte) main::i#0 = 0 Constant (const byte) main::i#0 = 0
Constant (const byte) main::j#0 = 0 Constant (const byte) main::j#0 = 0
Constant (const byte) main::k#0 = 0 Constant (const byte) main::k#0 = 0
@ -1001,7 +1001,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024 (const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@2 (label) main::@2
@ -1920,7 +1920,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@2 (label) main::@2

View File

@ -2,7 +2,7 @@
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@2 (label) main::@2

View File

@ -27,8 +27,8 @@ main::@2: scope:[main] from main::@2 main::@3
[14] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) [14] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] )
to:main::@4 to:main::@4
main::@4: scope:[main] from main::@2 main::@4: scope:[main] from main::@2
[15] *((word) 53280) ← ++ *((word) 53280) [ ] ( main:0 [ ] ) [15] *(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280) [ ] ( main:0 [ ] )
[16] *((word) 53248+(byte/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) [16] *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) ← -- *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] )
[17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] )
to:main::@return to:main::@return
main::@return: scope:[main] from main::@4 main::@return: scope:[main] from main::@4

View File

@ -24,8 +24,8 @@ void main() {
} }
// Incrementing directly on a word // Incrementing directly on a word
++*$d020; ++*(byte*)$d020;
--*($d000+$21); --*(byte*)($d000+$21);
// Increment on a const named pointer // Increment on a const named pointer
byte* BGCOL = $d020; byte* BGCOL = $d020;
@ -33,8 +33,8 @@ void main() {
} }
Adding pre/post-modifier *((word) 53280) ← ++ *((word) 53280) Adding pre/post-modifier *((var) main::$13) ← ++ *((var) main::$13)
Adding pre/post-modifier *((var) main::$13) ← -- *((var) main::$13) Adding pre/post-modifier *((var) main::$17) ← -- *((var) main::$17)
Adding pre/post-modifier *((byte*) main::BGCOL) ← ++ *((byte*) main::BGCOL) Adding pre/post-modifier *((byte*) main::BGCOL) ← ++ *((byte*) main::BGCOL)
PROGRAM PROGRAM
proc (void()) main() proc (void()) main()
@ -66,11 +66,17 @@ main::@2:
(byte) main::j ← ++ (byte) main::j (byte) main::j ← ++ (byte) main::j
(boolean~) main::$12 ← (byte) main::j != (byte/signed byte/word/signed word) 11 (boolean~) main::$12 ← (byte) main::j != (byte/signed byte/word/signed word) 11
if((boolean~) main::$12) goto main::@2 if((boolean~) main::$12) goto main::@2
*((word) 53280) ← ++ *((word) 53280) (byte*~) main::$13 ← ((byte*)) (word) 53280
(word~) main::$13 ← (word) 53248 + (byte/signed byte/word/signed word) 33 *((byte*~) main::$13) ← ++ *((byte*~) main::$13)
*((word~) main::$13) ← -- *((word~) main::$13) (byte*~) main::$14 ← ((byte*)) (word) 53280
(word~) main::$14 ← (word) 53248 + (byte/signed byte/word/signed word) 33 (byte*~) main::$15 ← ((byte*)) (word) 53280
(word~) main::$15 ← (word) 53248 + (byte/signed byte/word/signed word) 33 (word~) main::$16 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*~) main::$17 ← ((byte*)) (word~) main::$16
*((byte*~) main::$17) ← -- *((byte*~) main::$17)
(word~) main::$18 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*~) main::$19 ← ((byte*)) (word~) main::$18
(word~) main::$20 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*~) main::$21 ← ((byte*)) (word~) main::$20
(byte*) main::BGCOL ← (word) 53280 (byte*) main::BGCOL ← (word) 53280
*((byte*) main::BGCOL) ← ++ *((byte*) main::BGCOL) *((byte*) main::BGCOL) ← ++ *((byte*) main::BGCOL)
main::@return: main::@return:
@ -85,10 +91,16 @@ SYMBOLS
(byte*~) main::$10 (byte*~) main::$10
(byte*~) main::$11 (byte*~) main::$11
(boolean~) main::$12 (boolean~) main::$12
(word~) main::$13 (byte*~) main::$13
(word~) main::$14 (byte*~) main::$14
(word~) main::$15 (byte*~) main::$15
(word~) main::$16
(byte*~) main::$17
(word~) main::$18
(byte*~) main::$19
(byte*~) main::$2 (byte*~) main::$2
(word~) main::$20
(byte*~) main::$21
(boolean~) main::$3 (boolean~) main::$3
(byte*~) main::$4 (byte*~) main::$4
(byte*~) main::$5 (byte*~) main::$5
@ -110,7 +122,7 @@ INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(byte*) main::screen ← (word/signed word) 1024 (byte*) main::screen ← ((byte*)) (word/signed word) 1024
(byte*~) main::$0 ← (byte*) main::screen + (byte/signed byte/word/signed word) 80 (byte*~) main::$0 ← (byte*) main::screen + (byte/signed byte/word/signed word) 80
(byte) main::a ← *((byte*~) main::$0) (byte) main::a ← *((byte*~) main::$0)
(byte) main::i ← (byte/signed byte/word/signed word) 0 (byte) main::i ← (byte/signed byte/word/signed word) 0
@ -144,12 +156,18 @@ main::@2: scope:[main] from main::@2 main::@3
if((boolean~) main::$12) goto main::@2 if((boolean~) main::$12) goto main::@2
to:main::@4 to:main::@4
main::@4: scope:[main] from main::@2 main::@4: scope:[main] from main::@2
*((word) 53280) ← ++ *((word) 53280) (byte*~) main::$13 ← ((byte*)) (word) 53280
(word~) main::$13 ← (word) 53248 + (byte/signed byte/word/signed word) 33 *((byte*~) main::$13) ← ++ *((byte*~) main::$13)
*((word~) main::$13) ← -- *((word~) main::$13) (byte*~) main::$14 ← ((byte*)) (word) 53280
(word~) main::$14 ← (word) 53248 + (byte/signed byte/word/signed word) 33 (byte*~) main::$15 ← ((byte*)) (word) 53280
(word~) main::$15 ← (word) 53248 + (byte/signed byte/word/signed word) 33 (word~) main::$16 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*) main::BGCOL ← (word) 53280 (byte*~) main::$17 ← ((byte*)) (word~) main::$16
*((byte*~) main::$17) ← -- *((byte*~) main::$17)
(word~) main::$18 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*~) main::$19 ← ((byte*)) (word~) main::$18
(word~) main::$20 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*~) main::$21 ← ((byte*)) (word~) main::$20
(byte*) main::BGCOL ← ((byte*)) (word) 53280
*((byte*) main::BGCOL) ← ++ *((byte*) main::BGCOL) *((byte*) main::BGCOL) ← ++ *((byte*) main::BGCOL)
to:main::@return to:main::@return
main::@return: scope:[main] from main::@4 main::@return: scope:[main] from main::@4
@ -166,7 +184,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) main::screen ← (word/signed word) 1024 (byte*) main::screen ← ((byte*)) (word/signed word) 1024
(byte*~) main::$0 ← (byte*) main::screen + (byte/signed byte/word/signed word) 80 (byte*~) main::$0 ← (byte*) main::screen + (byte/signed byte/word/signed word) 80
(byte) main::a ← *((byte*~) main::$0) (byte) main::a ← *((byte*~) main::$0)
(byte) main::i ← (byte/signed byte/word/signed word) 0 (byte) main::i ← (byte/signed byte/word/signed word) 0
@ -200,12 +218,18 @@ main::@2: scope:[main] from main::@2 main::@3
if((boolean~) main::$12) goto main::@2 if((boolean~) main::$12) goto main::@2
to:main::@4 to:main::@4
main::@4: scope:[main] from main::@2 main::@4: scope:[main] from main::@2
*((word) 53280) ← ++ *((word) 53280) (byte*~) main::$13 ← ((byte*)) (word) 53280
(word~) main::$13 ← (word) 53248 + (byte/signed byte/word/signed word) 33 *((byte*~) main::$13) ← ++ *((byte*~) main::$13)
*((word~) main::$13) ← -- *((word~) main::$13) (byte*~) main::$14 ← ((byte*)) (word) 53280
(word~) main::$14 ← (word) 53248 + (byte/signed byte/word/signed word) 33 (byte*~) main::$15 ← ((byte*)) (word) 53280
(word~) main::$15 ← (word) 53248 + (byte/signed byte/word/signed word) 33 (word~) main::$16 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*) main::BGCOL ← (word) 53280 (byte*~) main::$17 ← ((byte*)) (word~) main::$16
*((byte*~) main::$17) ← -- *((byte*~) main::$17)
(word~) main::$18 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*~) main::$19 ← ((byte*)) (word~) main::$18
(word~) main::$20 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*~) main::$21 ← ((byte*)) (word~) main::$20
(byte*) main::BGCOL ← ((byte*)) (word) 53280
*((byte*) main::BGCOL) ← ++ *((byte*) main::BGCOL) *((byte*) main::BGCOL) ← ++ *((byte*) main::BGCOL)
to:main::@return to:main::@return
main::@return: scope:[main] from main::@4 main::@return: scope:[main] from main::@4
@ -223,7 +247,7 @@ CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) main::screen#0 ← (word/signed word) 1024 (byte*) main::screen#0 ← ((byte*)) (word/signed word) 1024
(byte*~) main::$0 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 80 (byte*~) main::$0 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 80
(byte) main::a#0 ← *((byte*~) main::$0) (byte) main::a#0 ← *((byte*~) main::$0)
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -262,12 +286,18 @@ main::@2: scope:[main] from main::@2 main::@3
if((boolean~) main::$12) goto main::@2 if((boolean~) main::$12) goto main::@2
to:main::@4 to:main::@4
main::@4: scope:[main] from main::@2 main::@4: scope:[main] from main::@2
*((word) 53280) ← ++ *((word) 53280) (byte*~) main::$13 ← ((byte*)) (word) 53280
(word~) main::$13 ← (word) 53248 + (byte/signed byte/word/signed word) 33 *((byte*~) main::$13) ← ++ *((byte*~) main::$13)
*((word~) main::$13) ← -- *((word~) main::$13) (byte*~) main::$14 ← ((byte*)) (word) 53280
(word~) main::$14 ← (word) 53248 + (byte/signed byte/word/signed word) 33 (byte*~) main::$15 ← ((byte*)) (word) 53280
(word~) main::$15 ← (word) 53248 + (byte/signed byte/word/signed word) 33 (word~) main::$16 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*) main::BGCOL#0 ← (word) 53280 (byte*~) main::$17 ← ((byte*)) (word~) main::$16
*((byte*~) main::$17) ← -- *((byte*~) main::$17)
(word~) main::$18 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*~) main::$19 ← ((byte*)) (word~) main::$18
(word~) main::$20 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*~) main::$21 ← ((byte*)) (word~) main::$20
(byte*) main::BGCOL#0 ← ((byte*)) (word) 53280
*((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0) *((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0)
to:main::@return to:main::@return
main::@return: scope:[main] from main::@4 main::@return: scope:[main] from main::@4
@ -284,7 +314,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) main::screen#0 ← (word/signed word) 1024 (byte*) main::screen#0 ← ((byte*)) (word/signed word) 1024
(byte*~) main::$0 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 80 (byte*~) main::$0 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 80
(byte) main::a#0 ← *((byte*~) main::$0) (byte) main::a#0 ← *((byte*~) main::$0)
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -323,12 +353,18 @@ main::@2: scope:[main] from main::@2 main::@3
if((boolean~) main::$12) goto main::@2 if((boolean~) main::$12) goto main::@2
to:main::@4 to:main::@4
main::@4: scope:[main] from main::@2 main::@4: scope:[main] from main::@2
*((word) 53280) ← ++ *((word) 53280) (byte*~) main::$13 ← ((byte*)) (word) 53280
(word~) main::$13 ← (word) 53248 + (byte/signed byte/word/signed word) 33 *((byte*~) main::$13) ← ++ *((byte*~) main::$13)
*((word~) main::$13) ← -- *((word~) main::$13) (byte*~) main::$14 ← ((byte*)) (word) 53280
(word~) main::$14 ← (word) 53248 + (byte/signed byte/word/signed word) 33 (byte*~) main::$15 ← ((byte*)) (word) 53280
(word~) main::$15 ← (word) 53248 + (byte/signed byte/word/signed word) 33 (word~) main::$16 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*) main::BGCOL#0 ← (word) 53280 (byte*~) main::$17 ← ((byte*)) (word~) main::$16
*((byte*~) main::$17) ← -- *((byte*~) main::$17)
(word~) main::$18 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*~) main::$19 ← ((byte*)) (word~) main::$18
(word~) main::$20 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*~) main::$21 ← ((byte*)) (word~) main::$20
(byte*) main::BGCOL#0 ← ((byte*)) (word) 53280
*((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0) *((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0)
to:main::@return to:main::@return
main::@return: scope:[main] from main::@4 main::@return: scope:[main] from main::@4
@ -352,10 +388,16 @@ INITIAL SSA SYMBOL TABLE
(byte*~) main::$10 (byte*~) main::$10
(byte*~) main::$11 (byte*~) main::$11
(boolean~) main::$12 (boolean~) main::$12
(word~) main::$13 (byte*~) main::$13
(word~) main::$14 (byte*~) main::$14
(word~) main::$15 (byte*~) main::$15
(word~) main::$16
(byte*~) main::$17
(word~) main::$18
(byte*~) main::$19
(byte*~) main::$2 (byte*~) main::$2
(word~) main::$20
(byte*~) main::$21
(boolean~) main::$3 (boolean~) main::$3
(byte*~) main::$4 (byte*~) main::$4
(byte*~) main::$5 (byte*~) main::$5
@ -394,7 +436,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) main::screen#0 ← (word/signed word) 1024 (byte*) main::screen#0 ← ((byte*)) (word/signed word) 1024
(byte*~) main::$0 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 80 (byte*~) main::$0 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 80
(byte) main::a#0 ← *((byte*~) main::$0) (byte) main::a#0 ← *((byte*~) main::$0)
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -433,12 +475,18 @@ main::@2: scope:[main] from main::@2 main::@3
if((boolean~) main::$12) goto main::@2 if((boolean~) main::$12) goto main::@2
to:main::@4 to:main::@4
main::@4: scope:[main] from main::@2 main::@4: scope:[main] from main::@2
*((word) 53280) ← ++ *((word) 53280) (byte*~) main::$13 ← ((byte*)) (word) 53280
(word~) main::$13 ← (word) 53248 + (byte/signed byte/word/signed word) 33 *((byte*~) main::$13) ← ++ *((byte*~) main::$13)
*((word~) main::$13) ← -- *((word~) main::$13) (byte*~) main::$14 ← ((byte*)) (word) 53280
(word~) main::$14 ← (word) 53248 + (byte/signed byte/word/signed word) 33 (byte*~) main::$15 ← ((byte*)) (word) 53280
(word~) main::$15 ← (word) 53248 + (byte/signed byte/word/signed word) 33 (word~) main::$16 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*) main::BGCOL#0 ← (word) 53280 (byte*~) main::$17 ← ((byte*)) (word~) main::$16
*((byte*~) main::$17) ← -- *((byte*~) main::$17)
(word~) main::$18 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*~) main::$19 ← ((byte*)) (word~) main::$18
(word~) main::$20 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*~) main::$21 ← ((byte*)) (word~) main::$20
(byte*) main::BGCOL#0 ← ((byte*)) (word) 53280
*((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0) *((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0)
to:main::@return to:main::@return
main::@return: scope:[main] from main::@4 main::@return: scope:[main] from main::@4
@ -457,7 +505,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) main::screen#0 ← (word/signed word) 1024 (byte*) main::screen#0 ← ((byte*)) (word/signed word) 1024
(byte*~) main::$0 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 80 (byte*~) main::$0 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 80
(byte) main::a#0 ← *((byte*~) main::$0) (byte) main::a#0 ← *((byte*~) main::$0)
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -494,12 +542,18 @@ main::@2: scope:[main] from main::@2 main::@3
if((boolean~) main::$12) goto main::@2 if((boolean~) main::$12) goto main::@2
to:main::@4 to:main::@4
main::@4: scope:[main] from main::@2 main::@4: scope:[main] from main::@2
*((word) 53280) ← ++ *((word) 53280) (byte*~) main::$13 ← ((byte*)) (word) 53280
(word~) main::$13 ← (word) 53248 + (byte/signed byte/word/signed word) 33 *((byte*~) main::$13) ← ++ *((byte*~) main::$13)
*((word~) main::$13) ← -- *((word~) main::$13) (byte*~) main::$14 ← ((byte*)) (word) 53280
(word~) main::$14 ← (word) 53248 + (byte/signed byte/word/signed word) 33 (byte*~) main::$15 ← ((byte*)) (word) 53280
(word~) main::$15 ← (word) 53248 + (byte/signed byte/word/signed word) 33 (word~) main::$16 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*) main::BGCOL#0 ← (word) 53280 (byte*~) main::$17 ← ((byte*)) (word~) main::$16
*((byte*~) main::$17) ← -- *((byte*~) main::$17)
(word~) main::$18 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*~) main::$19 ← ((byte*)) (word~) main::$18
(word~) main::$20 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*~) main::$21 ← ((byte*)) (word~) main::$20
(byte*) main::BGCOL#0 ← ((byte*)) (word) 53280
*((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0) *((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0)
to:main::@return to:main::@return
main::@return: scope:[main] from main::@4 main::@return: scope:[main] from main::@4
@ -518,7 +572,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) main::screen#0 ← (word/signed word) 1024 (byte*) main::screen#0 ← ((byte*)) (word/signed word) 1024
(byte*~) main::$0 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 80 (byte*~) main::$0 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 80
(byte) main::a#0 ← *((byte*~) main::$0) (byte) main::a#0 ← *((byte*~) main::$0)
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -555,12 +609,18 @@ main::@2: scope:[main] from main::@2 main::@3
if((boolean~) main::$12) goto main::@2 if((boolean~) main::$12) goto main::@2
to:main::@4 to:main::@4
main::@4: scope:[main] from main::@2 main::@4: scope:[main] from main::@2
*((word) 53280) ← ++ *((word) 53280) (byte*~) main::$13 ← ((byte*)) (word) 53280
(word~) main::$13 ← (word) 53248 + (byte/signed byte/word/signed word) 33 *((byte*~) main::$13) ← ++ *((byte*~) main::$13)
*((word~) main::$13) ← -- *((word~) main::$13) (byte*~) main::$14 ← ((byte*)) (word) 53280
(word~) main::$14 ← (word) 53248 + (byte/signed byte/word/signed word) 33 (byte*~) main::$15 ← ((byte*)) (word) 53280
(word~) main::$15 ← (word) 53248 + (byte/signed byte/word/signed word) 33 (word~) main::$16 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*) main::BGCOL#0 ← (word) 53280 (byte*~) main::$17 ← ((byte*)) (word~) main::$16
*((byte*~) main::$17) ← -- *((byte*~) main::$17)
(word~) main::$18 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*~) main::$19 ← ((byte*)) (word~) main::$18
(word~) main::$20 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*~) main::$21 ← ((byte*)) (word~) main::$20
(byte*) main::BGCOL#0 ← ((byte*)) (word) 53280
*((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0) *((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0)
to:main::@return to:main::@return
main::@return: scope:[main] from main::@4 main::@return: scope:[main] from main::@4
@ -578,7 +638,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) main::screen#0 ← (word/signed word) 1024 (byte*) main::screen#0 ← ((byte*)) (word/signed word) 1024
(byte*~) main::$0 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 80 (byte*~) main::$0 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 80
(byte) main::a#0 ← *((byte*~) main::$0) (byte) main::a#0 ← *((byte*~) main::$0)
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -613,12 +673,18 @@ main::@2: scope:[main] from main::@2 main::@3
if((boolean~) main::$12) goto main::@2 if((boolean~) main::$12) goto main::@2
to:main::@4 to:main::@4
main::@4: scope:[main] from main::@2 main::@4: scope:[main] from main::@2
*((word) 53280) ← ++ *((word) 53280) (byte*~) main::$13 ← ((byte*)) (word) 53280
(word~) main::$13 ← (word) 53248 + (byte/signed byte/word/signed word) 33 *((byte*~) main::$13) ← ++ *((byte*~) main::$13)
*((word~) main::$13) ← -- *((word~) main::$13) (byte*~) main::$14 ← ((byte*)) (word) 53280
(word~) main::$14 ← (word) 53248 + (byte/signed byte/word/signed word) 33 (byte*~) main::$15 ← ((byte*)) (word) 53280
(word~) main::$15 ← (word) 53248 + (byte/signed byte/word/signed word) 33 (word~) main::$16 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*) main::BGCOL#0 ← (word) 53280 (byte*~) main::$17 ← ((byte*)) (word~) main::$16
*((byte*~) main::$17) ← -- *((byte*~) main::$17)
(word~) main::$18 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*~) main::$19 ← ((byte*)) (word~) main::$18
(word~) main::$20 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*~) main::$21 ← ((byte*)) (word~) main::$20
(byte*) main::BGCOL#0 ← ((byte*)) (word) 53280
*((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0) *((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0)
to:main::@return to:main::@return
main::@return: scope:[main] from main::@4 main::@return: scope:[main] from main::@4
@ -636,7 +702,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) main::screen#0 ← (word/signed word) 1024 (byte*) main::screen#0 ← ((byte*)) (word/signed word) 1024
(byte*~) main::$0 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 80 (byte*~) main::$0 ← (byte*) main::screen#0 + (byte/signed byte/word/signed word) 80
(byte) main::a#0 ← *((byte*~) main::$0) (byte) main::a#0 ← *((byte*~) main::$0)
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -669,12 +735,18 @@ main::@2: scope:[main] from main::@2 main::@3
if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2
to:main::@4 to:main::@4
main::@4: scope:[main] from main::@2 main::@4: scope:[main] from main::@2
*((word) 53280) ← ++ *((word) 53280) (byte*~) main::$13 ← ((byte*)) (word) 53280
(word~) main::$13 ← (word) 53248 + (byte/signed byte/word/signed word) 33 *((byte*~) main::$13) ← ++ *((byte*~) main::$13)
*((word~) main::$13) ← -- *((word~) main::$13) (byte*~) main::$14 ← ((byte*)) (word) 53280
(word~) main::$14 ← (word) 53248 + (byte/signed byte/word/signed word) 33 (byte*~) main::$15 ← ((byte*)) (word) 53280
(word~) main::$15 ← (word) 53248 + (byte/signed byte/word/signed word) 33 (word~) main::$16 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*) main::BGCOL#0 ← (word) 53280 (byte*~) main::$17 ← ((byte*)) (word~) main::$16
*((byte*~) main::$17) ← -- *((byte*~) main::$17)
(word~) main::$18 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*~) main::$19 ← ((byte*)) (word~) main::$18
(word~) main::$20 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*~) main::$21 ← ((byte*)) (word~) main::$20
(byte*) main::BGCOL#0 ← ((byte*)) (word) 53280
*((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0) *((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0)
to:main::@return to:main::@return
main::@return: scope:[main] from main::@4 main::@return: scope:[main] from main::@4
@ -685,13 +757,16 @@ main::@return: scope:[main] from main::@4
to:@end to:@end
@end: scope:[] from @1 @end: scope:[] from @1
Constant (const byte*) main::screen#0 = 1024 Constant (const byte*) main::screen#0 = ((byte*))1024
Constant (const byte) main::i#0 = 0 Constant (const byte) main::i#0 = 0
Constant (const byte) main::j#0 = 0 Constant (const byte) main::j#0 = 0
Constant (const word) main::$13 = 53248+33 Constant (const byte*) main::$13 = ((byte*))53280
Constant (const word) main::$14 = 53248+33 Constant (const byte*) main::$14 = ((byte*))53280
Constant (const word) main::$15 = 53248+33 Constant (const byte*) main::$15 = ((byte*))53280
Constant (const byte*) main::BGCOL#0 = 53280 Constant (const word) main::$16 = 53248+33
Constant (const word) main::$18 = 53248+33
Constant (const word) main::$20 = 53248+33
Constant (const byte*) main::BGCOL#0 = ((byte*))53280
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
@ -727,8 +802,11 @@ main::@2: scope:[main] from main::@2 main::@3
if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2
to:main::@4 to:main::@4
main::@4: scope:[main] from main::@2 main::@4: scope:[main] from main::@2
*((word) 53280) ← ++ *((word) 53280) *((const byte*) main::$13) ← ++ *((const byte*) main::$13)
*((const word) main::$13) ← -- *((const word) main::$13) (byte*~) main::$17 ← ((byte*)) (const word) main::$16
*((byte*~) main::$17) ← -- *((byte*~) main::$17)
(byte*~) main::$19 ← ((byte*)) (const word) main::$18
(byte*~) main::$21 ← ((byte*)) (const word) main::$20
*((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0)
to:main::@return to:main::@return
main::@return: scope:[main] from main::@4 main::@return: scope:[main] from main::@4
@ -747,6 +825,9 @@ Constant (const byte*) main::$6 = main::screen#0+82
Constant (const byte*) main::$7 = main::screen#0+122 Constant (const byte*) main::$7 = main::screen#0+122
Constant (const byte*) main::$8 = main::screen#0+160 Constant (const byte*) main::$8 = main::screen#0+160
Constant (const byte*) main::$10 = main::screen#0+200 Constant (const byte*) main::$10 = main::screen#0+200
Constant (const byte*) main::$17 = ((byte*))main::$16
Constant (const byte*) main::$19 = ((byte*))main::$18
Constant (const byte*) main::$21 = ((byte*))main::$20
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
@ -774,8 +855,8 @@ main::@2: scope:[main] from main::@2 main::@3
if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2
to:main::@4 to:main::@4
main::@4: scope:[main] from main::@2 main::@4: scope:[main] from main::@2
*((word) 53280) ← ++ *((word) 53280) *((const byte*) main::$13) ← ++ *((const byte*) main::$13)
*((const word) main::$13) ← -- *((const word) main::$13) *((const byte*) main::$17) ← -- *((const byte*) main::$17)
*((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0)
to:main::@return to:main::@return
main::@return: scope:[main] from main::@4 main::@return: scope:[main] from main::@4
@ -798,17 +879,23 @@ Inlining constant with var siblings (const byte) main::i#0
Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0
Inlining constant with var siblings (const byte) main::j#0 Inlining constant with var siblings (const byte) main::j#0
Inlining constant with var siblings (const byte) main::j#0 Inlining constant with var siblings (const byte) main::j#0
Constant inlined main::$13 = ((byte*))(word) 53280
Constant inlined main::$14 = ((byte*))(word) 53280
Constant inlined main::$15 = ((byte*))(word) 53280
Constant inlined main::$20 = (word) 53248+(byte/signed byte/word/signed word) 33
Constant inlined main::$10 = (const byte*) main::screen#0+(byte/word/signed word) 200
Constant inlined main::$21 = ((byte*))(word) 53248+(byte/signed byte/word/signed word) 33
Constant inlined main::$16 = (word) 53248+(byte/signed byte/word/signed word) 33
Constant inlined main::$1 = (const byte*) main::screen#0+(byte/signed byte/word/signed word) 40 Constant inlined main::$1 = (const byte*) main::screen#0+(byte/signed byte/word/signed word) 40
Constant inlined main::$17 = ((byte*))(word) 53248+(byte/signed byte/word/signed word) 33
Constant inlined main::$18 = (word) 53248+(byte/signed byte/word/signed word) 33
Constant inlined main::$0 = (const byte*) main::screen#0+(byte/signed byte/word/signed word) 80 Constant inlined main::$0 = (const byte*) main::screen#0+(byte/signed byte/word/signed word) 80
Constant inlined main::$19 = ((byte*))(word) 53248+(byte/signed byte/word/signed word) 33
Constant inlined main::$5 = (const byte*) main::screen#0+(byte/signed byte/word/signed word) 121 Constant inlined main::$5 = (const byte*) main::screen#0+(byte/signed byte/word/signed word) 121
Constant inlined main::i#0 = (byte/signed byte/word/signed word) 0 Constant inlined main::i#0 = (byte/signed byte/word/signed word) 0
Constant inlined main::$13 = (word) 53248+(byte/signed byte/word/signed word) 33
Constant inlined main::$6 = (const byte*) main::screen#0+(byte/signed byte/word/signed word) 82 Constant inlined main::$6 = (const byte*) main::screen#0+(byte/signed byte/word/signed word) 82
Constant inlined main::$14 = (word) 53248+(byte/signed byte/word/signed word) 33
Constant inlined main::$15 = (word) 53248+(byte/signed byte/word/signed word) 33
Constant inlined main::j#0 = (byte/signed byte/word/signed word) 0 Constant inlined main::j#0 = (byte/signed byte/word/signed word) 0
Constant inlined main::$7 = (const byte*) main::screen#0+(byte/signed byte/word/signed word) 122 Constant inlined main::$7 = (const byte*) main::screen#0+(byte/signed byte/word/signed word) 122
Constant inlined main::$10 = (const byte*) main::screen#0+(byte/word/signed word) 200
Constant inlined main::$8 = (const byte*) main::screen#0+(byte/word/signed word) 160 Constant inlined main::$8 = (const byte*) main::screen#0+(byte/word/signed word) 160
Succesful SSA optimization Pass2ConstantInlining Succesful SSA optimization Pass2ConstantInlining
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@ -837,8 +924,8 @@ main::@2: scope:[main] from main::@2 main::@3
if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2
to:main::@4 to:main::@4
main::@4: scope:[main] from main::@2 main::@4: scope:[main] from main::@2
*((word) 53280) ← ++ *((word) 53280) *(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280)
*((word) 53248+(byte/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) ← -- *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33)
*((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0)
to:main::@return to:main::@return
main::@return: scope:[main] from main::@4 main::@return: scope:[main] from main::@4
@ -863,7 +950,7 @@ FINAL SYMBOL TABLE
(label) main::@4 (label) main::@4
(label) main::@return (label) main::@return
(byte*) main::BGCOL (byte*) main::BGCOL
(const byte*) main::BGCOL#0 = (word) 53280 (const byte*) main::BGCOL#0 = ((byte*))(word) 53280
(byte) main::a (byte) main::a
(byte) main::a#0 (byte) main::a#0
(byte) main::i (byte) main::i
@ -875,7 +962,7 @@ FINAL SYMBOL TABLE
(byte*) main::sc2 (byte*) main::sc2
(const byte*) main::sc2#0 = (const byte*) main::screen#0+(byte/signed byte/word/signed word) 81 (const byte*) main::sc2#0 = (const byte*) main::screen#0+(byte/signed byte/word/signed word) 81
(byte*) main::screen (byte*) main::screen
(const byte*) main::screen#0 = (word/signed word) 1024 (const byte*) main::screen#0 = ((byte*))(word/signed word) 1024
Block Sequence Planned @begin @1 @end main main::@1 main::@3 main::@2 main::@4 main::@return Block Sequence Planned @begin @1 @end main main::@1 main::@3 main::@2 main::@4 main::@return
Added new block during phi lifting main::@5(between main::@1 and main::@1) Added new block during phi lifting main::@5(between main::@1 and main::@1)
@ -911,8 +998,8 @@ main::@2: scope:[main] from main::@3 main::@6
if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@6 if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@6
to:main::@4 to:main::@4
main::@4: scope:[main] from main::@2 main::@4: scope:[main] from main::@2
*((word) 53280) ← ++ *((word) 53280) *(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280)
*((word) 53248+(byte/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) ← -- *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33)
*((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0)
to:main::@return to:main::@return
main::@return: scope:[main] from main::@4 main::@return: scope:[main] from main::@4
@ -961,8 +1048,8 @@ main::@2: scope:[main] from main::@3 main::@6
[14] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@6 [ main::j#1 ] [14] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@6 [ main::j#1 ]
to:main::@4 to:main::@4
main::@4: scope:[main] from main::@2 main::@4: scope:[main] from main::@2
[15] *((word) 53280) ← ++ *((word) 53280) [ ] [15] *(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280) [ ]
[16] *((word) 53248+(byte/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) [ ] [16] *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) ← -- *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) [ ]
[17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ]
to:main::@return to:main::@return
main::@return: scope:[main] from main::@4 main::@return: scope:[main] from main::@4
@ -1015,8 +1102,8 @@ main::@2: scope:[main] from main::@2 main::@3
[14] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 [ main::j#1 ] [14] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 [ main::j#1 ]
to:main::@4 to:main::@4
main::@4: scope:[main] from main::@2 main::@4: scope:[main] from main::@2
[15] *((word) 53280) ← ++ *((word) 53280) [ ] [15] *(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280) [ ]
[16] *((word) 53248+(byte/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) [ ] [16] *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) ← -- *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) [ ]
[17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ]
to:main::@return to:main::@return
main::@return: scope:[main] from main::@4 main::@return: scope:[main] from main::@4
@ -1053,8 +1140,8 @@ main::@2: scope:[main] from main::@2 main::@3
[14] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] ) [14] if((byte) main::j#1!=(byte/signed byte/word/signed word) 11) goto main::@2 [ main::j#1 ] ( main:0 [ main::j#1 ] )
to:main::@4 to:main::@4
main::@4: scope:[main] from main::@2 main::@4: scope:[main] from main::@2
[15] *((word) 53280) ← ++ *((word) 53280) [ ] ( main:0 [ ] ) [15] *(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280) [ ] ( main:0 [ ] )
[16] *((word) 53248+(byte/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) [16] *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) ← -- *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] )
[17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] )
to:main::@return to:main::@return
main::@return: scope:[main] from main::@4 main::@return: scope:[main] from main::@4
@ -1238,9 +1325,9 @@ main: {
jmp b4 jmp b4
//SEG30 main::@4 //SEG30 main::@4
b4: b4:
//SEG31 [15] *((word) 53280) ← ++ *((word) 53280) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 //SEG31 [15] *(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1
inc $d020 inc $d020
//SEG32 [16] *((word) 53248+(byte/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1 //SEG32 [16] *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) ← -- *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1
dec $d000+$21 dec $d000+$21
//SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 //SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1
inc BGCOL inc BGCOL
@ -1391,9 +1478,9 @@ main: {
bne b2_from_b2 bne b2_from_b2
//SEG30 main::@4 //SEG30 main::@4
b4: b4:
//SEG31 [15] *((word) 53280) ← ++ *((word) 53280) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 //SEG31 [15] *(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1
inc $d020 inc $d020
//SEG32 [16] *((word) 53248+(byte/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1 //SEG32 [16] *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) ← -- *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1
dec $d000+$21 dec $d000+$21
//SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 //SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1
inc BGCOL inc BGCOL
@ -1501,9 +1588,9 @@ main: {
bne b2_from_b2 bne b2_from_b2
//SEG30 main::@4 //SEG30 main::@4
b4: b4:
//SEG31 [15] *((word) 53280) ← ++ *((word) 53280) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 //SEG31 [15] *(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1
inc $d020 inc $d020
//SEG32 [16] *((word) 53248+(byte/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1 //SEG32 [16] *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) ← -- *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1
dec $d000+$21 dec $d000+$21
//SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 //SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1
inc BGCOL inc BGCOL
@ -1612,9 +1699,9 @@ main: {
bne b2 bne b2
//SEG30 main::@4 //SEG30 main::@4
b4: b4:
//SEG31 [15] *((word) 53280) ← ++ *((word) 53280) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 //SEG31 [15] *(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1
inc $d020 inc $d020
//SEG32 [16] *((word) 53248+(byte/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1 //SEG32 [16] *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) ← -- *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1
dec $d000+$21 dec $d000+$21
//SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 //SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1
inc BGCOL inc BGCOL
@ -1719,9 +1806,9 @@ main: {
cpx #$b cpx #$b
bne b2 bne b2
//SEG30 main::@4 //SEG30 main::@4
//SEG31 [15] *((word) 53280) ← ++ *((word) 53280) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 //SEG31 [15] *(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1
inc $d020 inc $d020
//SEG32 [16] *((word) 53248+(byte/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1 //SEG32 [16] *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) ← -- *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1
dec $d000+$21 dec $d000+$21
//SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 //SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1
inc BGCOL inc BGCOL
@ -1818,9 +1905,9 @@ main: {
cpx #$b cpx #$b
bne b2 bne b2
//SEG30 main::@4 //SEG30 main::@4
//SEG31 [15] *((word) 53280) ← ++ *((word) 53280) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 //SEG31 [15] *(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1
inc $d020 inc $d020
//SEG32 [16] *((word) 53248+(byte/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1 //SEG32 [16] *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) ← -- *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1
dec $d000+$21 dec $d000+$21
//SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 //SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1
inc BGCOL inc BGCOL
@ -1843,7 +1930,7 @@ FINAL SYMBOL TABLE
(label) main::@4 (label) main::@4
(label) main::@return (label) main::@return
(byte*) main::BGCOL (byte*) main::BGCOL
(const byte*) main::BGCOL#0 BGCOL = (word) 53280 (const byte*) main::BGCOL#0 BGCOL = ((byte*))(word) 53280
(byte) main::a (byte) main::a
(byte) main::a#0 reg byte a 20.0 (byte) main::a#0 reg byte a 20.0
(byte) main::i (byte) main::i
@ -1855,7 +1942,7 @@ FINAL SYMBOL TABLE
(byte*) main::sc2 (byte*) main::sc2
(const byte*) main::sc2#0 sc2 = (const byte*) main::screen#0+(byte/signed byte/word/signed word) 81 (const byte*) main::sc2#0 sc2 = (const byte*) main::screen#0+(byte/signed byte/word/signed word) 81
(byte*) main::screen (byte*) main::screen
(const byte*) main::screen#0 screen = (word/signed word) 1024 (const byte*) main::screen#0 screen = ((byte*))(word/signed word) 1024
reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::i#2 main::i#1 ]
reg byte x [ main::j#2 main::j#1 ] reg byte x [ main::j#2 main::j#1 ]
@ -1948,9 +2035,9 @@ main: {
cpx #$b cpx #$b
bne b2 bne b2
//SEG30 main::@4 //SEG30 main::@4
//SEG31 [15] *((word) 53280) ← ++ *((word) 53280) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 //SEG31 [15] *(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1
inc $d020 inc $d020
//SEG32 [16] *((word) 53248+(byte/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1 //SEG32 [16] *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) ← -- *(((byte*))(word) 53248+(byte/signed byte/word/signed word) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1
dec $d000+$21 dec $d000+$21
//SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1 //SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1
inc BGCOL inc BGCOL

View File

@ -11,7 +11,7 @@
(label) main::@4 (label) main::@4
(label) main::@return (label) main::@return
(byte*) main::BGCOL (byte*) main::BGCOL
(const byte*) main::BGCOL#0 BGCOL = (word) 53280 (const byte*) main::BGCOL#0 BGCOL = ((byte*))(word) 53280
(byte) main::a (byte) main::a
(byte) main::a#0 reg byte a 20.0 (byte) main::a#0 reg byte a 20.0
(byte) main::i (byte) main::i
@ -23,7 +23,7 @@
(byte*) main::sc2 (byte*) main::sc2
(const byte*) main::sc2#0 sc2 = (const byte*) main::screen#0+(byte/signed byte/word/signed word) 81 (const byte*) main::sc2#0 sc2 = (const byte*) main::screen#0+(byte/signed byte/word/signed word) 81
(byte*) main::screen (byte*) main::screen
(const byte*) main::screen#0 screen = (word/signed word) 1024 (const byte*) main::screen#0 screen = ((byte*))(word/signed word) 1024
reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::i#2 main::i#1 ]
reg byte x [ main::j#2 main::j#1 ] reg byte x [ main::j#2 main::j#1 ]

View File

@ -24,7 +24,7 @@ lvaluevar: scope:[lvaluevar] from main::@3
[7] phi() [ ] ( main:0::lvaluevar:5 [ ] ) [7] phi() [ ] ( main:0::lvaluevar:5 [ ] )
to:lvaluevar::@1 to:lvaluevar::@1
lvaluevar::@1: scope:[lvaluevar] from lvaluevar lvaluevar::@2 lvaluevar::@1: scope:[lvaluevar] from lvaluevar lvaluevar::@2
[8] (byte*) lvaluevar::screen#2 ← phi( lvaluevar/(word/signed word) 1024 lvaluevar::@2/(byte*) lvaluevar::screen#1 ) [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) [8] (byte*) lvaluevar::screen#2 ← phi( lvaluevar/((byte*))(word/signed word) 1024 lvaluevar::@2/(byte*) lvaluevar::screen#1 ) [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] )
[8] (byte) lvaluevar::i#2 ← phi( lvaluevar/(byte/signed byte/word/signed word) 2 lvaluevar::@2/(byte) lvaluevar::i#1 ) [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) [8] (byte) lvaluevar::i#2 ← phi( lvaluevar/(byte/signed byte/word/signed word) 2 lvaluevar::@2/(byte) lvaluevar::i#1 ) [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] )
[9] if((byte) lvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto lvaluevar::@2 [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) [9] if((byte) lvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto lvaluevar::@2 [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] )
to:lvaluevar::@return to:lvaluevar::@return
@ -40,7 +40,7 @@ rvaluevar: scope:[rvaluevar] from main::@2
[14] phi() [ ] ( main:0::rvaluevar:4 [ ] ) [14] phi() [ ] ( main:0::rvaluevar:4 [ ] )
to:rvaluevar::@1 to:rvaluevar::@1
rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2
[15] (byte*) rvaluevar::screen#2 ← phi( rvaluevar/(word/signed word) 1024 rvaluevar::@2/(byte*) rvaluevar::screen#1 ) [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) [15] (byte*) rvaluevar::screen#2 ← phi( rvaluevar/((byte*))(word/signed word) 1024 rvaluevar::@2/(byte*) rvaluevar::screen#1 ) [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] )
[15] (byte) rvaluevar::i#2 ← phi( rvaluevar/(byte/signed byte/word/signed word) 2 rvaluevar::@2/(byte) rvaluevar::i#1 ) [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) [15] (byte) rvaluevar::i#2 ← phi( rvaluevar/(byte/signed byte/word/signed word) 2 rvaluevar::@2/(byte) rvaluevar::i#1 ) [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] )
[16] if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto rvaluevar::@2 [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) [16] if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto rvaluevar::@2 [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] )
to:rvaluevar::@return to:rvaluevar::@return

View File

@ -218,7 +218,7 @@ main::@return: scope:[main] from main
@1: scope:[] from @begin @1: scope:[] from @begin
to:@2 to:@2
lvalue: scope:[lvalue] from lvalue: scope:[lvalue] from
(byte[1024]) lvalue::SCREEN ← (word/signed word) 1024 (byte[1024]) lvalue::SCREEN ← ((byte*)) (word/signed word) 1024
*((byte[1024]) lvalue::SCREEN) ← (byte/signed byte/word/signed word) 1 *((byte[1024]) lvalue::SCREEN) ← (byte/signed byte/word/signed word) 1
*((byte[1024]) lvalue::SCREEN + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2 *((byte[1024]) lvalue::SCREEN + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2
(byte) lvalue::i ← (byte/signed byte/word/signed word) 2 (byte) lvalue::i ← (byte/signed byte/word/signed word) 2
@ -245,7 +245,7 @@ lvalue::@return: scope:[lvalue] from lvalue::@3
@2: scope:[] from @1 @2: scope:[] from @1
to:@3 to:@3
rvalue: scope:[rvalue] from rvalue: scope:[rvalue] from
(byte[1024]) rvalue::SCREEN ← (word/signed word) 1024 (byte[1024]) rvalue::SCREEN ← ((byte*)) (word/signed word) 1024
(byte) rvalue::b ← *((byte[1024]) rvalue::SCREEN) (byte) rvalue::b ← *((byte[1024]) rvalue::SCREEN)
(byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN *idx (byte/signed byte/word/signed word) 1 (byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN *idx (byte/signed byte/word/signed word) 1
(byte) rvalue::b ← (byte~) rvalue::$0 (byte) rvalue::b ← (byte~) rvalue::$0
@ -274,7 +274,7 @@ rvalue::@return: scope:[rvalue] from rvalue::@3
@3: scope:[] from @2 @3: scope:[] from @2
to:@4 to:@4
lvaluevar: scope:[lvaluevar] from lvaluevar: scope:[lvaluevar] from
(byte*) lvaluevar::screen ← (word/signed word) 1024 (byte*) lvaluevar::screen ← ((byte*)) (word/signed word) 1024
(byte) lvaluevar::b ← (byte/signed byte/word/signed word) 4 (byte) lvaluevar::b ← (byte/signed byte/word/signed word) 4
(byte) lvaluevar::i ← (byte/signed byte/word/signed word) 2 (byte) lvaluevar::i ← (byte/signed byte/word/signed word) 2
to:lvaluevar::@1 to:lvaluevar::@1
@ -301,7 +301,7 @@ lvaluevar::@return: scope:[lvaluevar] from lvaluevar::@3
@4: scope:[] from @3 @4: scope:[] from @3
to:@5 to:@5
rvaluevar: scope:[rvaluevar] from rvaluevar: scope:[rvaluevar] from
(byte*) rvaluevar::screen ← (word/signed word) 1024 (byte*) rvaluevar::screen ← ((byte*)) (word/signed word) 1024
(byte) rvaluevar::i ← (byte/signed byte/word/signed word) 2 (byte) rvaluevar::i ← (byte/signed byte/word/signed word) 2
to:rvaluevar::@1 to:rvaluevar::@1
rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2
@ -362,7 +362,7 @@ main::@return: scope:[main] from main
return return
to:@return to:@return
lvalue: scope:[lvalue] from lvalue: scope:[lvalue] from
(byte[1024]) lvalue::SCREEN ← (word/signed word) 1024 (byte[1024]) lvalue::SCREEN ← ((byte*)) (word/signed word) 1024
*((byte[1024]) lvalue::SCREEN) ← (byte/signed byte/word/signed word) 1 *((byte[1024]) lvalue::SCREEN) ← (byte/signed byte/word/signed word) 1
*((byte[1024]) lvalue::SCREEN + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2 *((byte[1024]) lvalue::SCREEN + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2
(byte) lvalue::i ← (byte/signed byte/word/signed word) 2 (byte) lvalue::i ← (byte/signed byte/word/signed word) 2
@ -379,7 +379,7 @@ lvalue::@return: scope:[lvalue] from lvalue::@1
return return
to:@return to:@return
rvalue: scope:[rvalue] from rvalue: scope:[rvalue] from
(byte[1024]) rvalue::SCREEN ← (word/signed word) 1024 (byte[1024]) rvalue::SCREEN ← ((byte*)) (word/signed word) 1024
(byte) rvalue::b ← *((byte[1024]) rvalue::SCREEN) (byte) rvalue::b ← *((byte[1024]) rvalue::SCREEN)
(byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN *idx (byte/signed byte/word/signed word) 1 (byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN *idx (byte/signed byte/word/signed word) 1
(byte) rvalue::b ← (byte~) rvalue::$0 (byte) rvalue::b ← (byte~) rvalue::$0
@ -398,7 +398,7 @@ rvalue::@return: scope:[rvalue] from rvalue::@1
return return
to:@return to:@return
lvaluevar: scope:[lvaluevar] from lvaluevar: scope:[lvaluevar] from
(byte*) lvaluevar::screen ← (word/signed word) 1024 (byte*) lvaluevar::screen ← ((byte*)) (word/signed word) 1024
(byte) lvaluevar::b ← (byte/signed byte/word/signed word) 4 (byte) lvaluevar::b ← (byte/signed byte/word/signed word) 4
(byte) lvaluevar::i ← (byte/signed byte/word/signed word) 2 (byte) lvaluevar::i ← (byte/signed byte/word/signed word) 2
to:lvaluevar::@1 to:lvaluevar::@1
@ -415,7 +415,7 @@ lvaluevar::@return: scope:[lvaluevar] from lvaluevar::@1
return return
to:@return to:@return
rvaluevar: scope:[rvaluevar] from rvaluevar: scope:[rvaluevar] from
(byte*) rvaluevar::screen ← (word/signed word) 1024 (byte*) rvaluevar::screen ← ((byte*)) (word/signed word) 1024
(byte) rvaluevar::i ← (byte/signed byte/word/signed word) 2 (byte) rvaluevar::i ← (byte/signed byte/word/signed word) 2
to:rvaluevar::@1 to:rvaluevar::@1
rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2
@ -458,7 +458,7 @@ main::@return: scope:[main] from main::@4
return return
to:@return to:@return
lvalue: scope:[lvalue] from main lvalue: scope:[lvalue] from main
(byte[1024]) lvalue::SCREEN ← (word/signed word) 1024 (byte[1024]) lvalue::SCREEN ← ((byte*)) (word/signed word) 1024
*((byte[1024]) lvalue::SCREEN) ← (byte/signed byte/word/signed word) 1 *((byte[1024]) lvalue::SCREEN) ← (byte/signed byte/word/signed word) 1
*((byte[1024]) lvalue::SCREEN + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2 *((byte[1024]) lvalue::SCREEN + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2
(byte) lvalue::i ← (byte/signed byte/word/signed word) 2 (byte) lvalue::i ← (byte/signed byte/word/signed word) 2
@ -475,7 +475,7 @@ lvalue::@return: scope:[lvalue] from lvalue::@1
return return
to:@return to:@return
rvalue: scope:[rvalue] from main::@1 rvalue: scope:[rvalue] from main::@1
(byte[1024]) rvalue::SCREEN ← (word/signed word) 1024 (byte[1024]) rvalue::SCREEN ← ((byte*)) (word/signed word) 1024
(byte) rvalue::b ← *((byte[1024]) rvalue::SCREEN) (byte) rvalue::b ← *((byte[1024]) rvalue::SCREEN)
(byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN *idx (byte/signed byte/word/signed word) 1 (byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN *idx (byte/signed byte/word/signed word) 1
(byte) rvalue::b ← (byte~) rvalue::$0 (byte) rvalue::b ← (byte~) rvalue::$0
@ -494,7 +494,7 @@ rvalue::@return: scope:[rvalue] from rvalue::@1
return return
to:@return to:@return
lvaluevar: scope:[lvaluevar] from main::@3 lvaluevar: scope:[lvaluevar] from main::@3
(byte*) lvaluevar::screen ← (word/signed word) 1024 (byte*) lvaluevar::screen ← ((byte*)) (word/signed word) 1024
(byte) lvaluevar::b ← (byte/signed byte/word/signed word) 4 (byte) lvaluevar::b ← (byte/signed byte/word/signed word) 4
(byte) lvaluevar::i ← (byte/signed byte/word/signed word) 2 (byte) lvaluevar::i ← (byte/signed byte/word/signed word) 2
to:lvaluevar::@1 to:lvaluevar::@1
@ -511,7 +511,7 @@ lvaluevar::@return: scope:[lvaluevar] from lvaluevar::@1
return return
to:@return to:@return
rvaluevar: scope:[rvaluevar] from main::@2 rvaluevar: scope:[rvaluevar] from main::@2
(byte*) rvaluevar::screen ← (word/signed word) 1024 (byte*) rvaluevar::screen ← ((byte*)) (word/signed word) 1024
(byte) rvaluevar::i ← (byte/signed byte/word/signed word) 2 (byte) rvaluevar::i ← (byte/signed byte/word/signed word) 2
to:rvaluevar::@1 to:rvaluevar::@1
rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2
@ -556,7 +556,7 @@ main::@return: scope:[main] from main::@4
return return
to:@return to:@return
lvalue: scope:[lvalue] from main lvalue: scope:[lvalue] from main
(byte[1024]) lvalue::SCREEN#0 ← (word/signed word) 1024 (byte[1024]) lvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024
*((byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word) 1 *((byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word) 1
*((byte[1024]) lvalue::SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2 *((byte[1024]) lvalue::SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2
(byte) lvalue::i#0 ← (byte/signed byte/word/signed word) 2 (byte) lvalue::i#0 ← (byte/signed byte/word/signed word) 2
@ -577,7 +577,7 @@ lvalue::@return: scope:[lvalue] from lvalue::@1
return return
to:@return to:@return
rvalue: scope:[rvalue] from main::@1 rvalue: scope:[rvalue] from main::@1
(byte[1024]) rvalue::SCREEN#0 ← (word/signed word) 1024 (byte[1024]) rvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0) (byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0)
(byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte/signed byte/word/signed word) 1 (byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte/signed byte/word/signed word) 1
(byte) rvalue::b#1 ← (byte~) rvalue::$0 (byte) rvalue::b#1 ← (byte~) rvalue::$0
@ -600,7 +600,7 @@ rvalue::@return: scope:[rvalue] from rvalue::@1
return return
to:@return to:@return
lvaluevar: scope:[lvaluevar] from main::@3 lvaluevar: scope:[lvaluevar] from main::@3
(byte*) lvaluevar::screen#0 ← (word/signed word) 1024 (byte*) lvaluevar::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) lvaluevar::b#0 ← (byte/signed byte/word/signed word) 4 (byte) lvaluevar::b#0 ← (byte/signed byte/word/signed word) 4
(byte) lvaluevar::i#0 ← (byte/signed byte/word/signed word) 2 (byte) lvaluevar::i#0 ← (byte/signed byte/word/signed word) 2
to:lvaluevar::@1 to:lvaluevar::@1
@ -623,7 +623,7 @@ lvaluevar::@return: scope:[lvaluevar] from lvaluevar::@1
return return
to:@return to:@return
rvaluevar: scope:[rvaluevar] from main::@2 rvaluevar: scope:[rvaluevar] from main::@2
(byte*) rvaluevar::screen#0 ← (word/signed word) 1024 (byte*) rvaluevar::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) rvaluevar::i#0 ← (byte/signed byte/word/signed word) 2 (byte) rvaluevar::i#0 ← (byte/signed byte/word/signed word) 2
to:rvaluevar::@1 to:rvaluevar::@1
rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2
@ -670,7 +670,7 @@ main::@return: scope:[main] from main::@4
return return
to:@return to:@return
lvalue: scope:[lvalue] from main lvalue: scope:[lvalue] from main
(byte[1024]) lvalue::SCREEN#0 ← (word/signed word) 1024 (byte[1024]) lvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024
*((byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word) 1 *((byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word) 1
*((byte[1024]) lvalue::SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2 *((byte[1024]) lvalue::SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2
(byte) lvalue::i#0 ← (byte/signed byte/word/signed word) 2 (byte) lvalue::i#0 ← (byte/signed byte/word/signed word) 2
@ -691,7 +691,7 @@ lvalue::@return: scope:[lvalue] from lvalue::@1
return return
to:@return to:@return
rvalue: scope:[rvalue] from main::@1 rvalue: scope:[rvalue] from main::@1
(byte[1024]) rvalue::SCREEN#0 ← (word/signed word) 1024 (byte[1024]) rvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0) (byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0)
(byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte/signed byte/word/signed word) 1 (byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte/signed byte/word/signed word) 1
(byte) rvalue::b#1 ← (byte~) rvalue::$0 (byte) rvalue::b#1 ← (byte~) rvalue::$0
@ -714,7 +714,7 @@ rvalue::@return: scope:[rvalue] from rvalue::@1
return return
to:@return to:@return
lvaluevar: scope:[lvaluevar] from main::@3 lvaluevar: scope:[lvaluevar] from main::@3
(byte*) lvaluevar::screen#0 ← (word/signed word) 1024 (byte*) lvaluevar::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) lvaluevar::b#0 ← (byte/signed byte/word/signed word) 4 (byte) lvaluevar::b#0 ← (byte/signed byte/word/signed word) 4
(byte) lvaluevar::i#0 ← (byte/signed byte/word/signed word) 2 (byte) lvaluevar::i#0 ← (byte/signed byte/word/signed word) 2
to:lvaluevar::@1 to:lvaluevar::@1
@ -737,7 +737,7 @@ lvaluevar::@return: scope:[lvaluevar] from lvaluevar::@1
return return
to:@return to:@return
rvaluevar: scope:[rvaluevar] from main::@2 rvaluevar: scope:[rvaluevar] from main::@2
(byte*) rvaluevar::screen#0 ← (word/signed word) 1024 (byte*) rvaluevar::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) rvaluevar::i#0 ← (byte/signed byte/word/signed word) 2 (byte) rvaluevar::i#0 ← (byte/signed byte/word/signed word) 2
to:rvaluevar::@1 to:rvaluevar::@1
rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2
@ -867,7 +867,7 @@ main::@return: scope:[main] from main::@3
return return
to:@return to:@return
lvalue: scope:[lvalue] from main lvalue: scope:[lvalue] from main
(byte[1024]) lvalue::SCREEN#0 ← (word/signed word) 1024 (byte[1024]) lvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024
*((byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word) 1 *((byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word) 1
*((byte[1024]) lvalue::SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2 *((byte[1024]) lvalue::SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2
(byte) lvalue::i#0 ← (byte/signed byte/word/signed word) 2 (byte) lvalue::i#0 ← (byte/signed byte/word/signed word) 2
@ -888,7 +888,7 @@ lvalue::@return: scope:[lvalue] from lvalue::@1
return return
to:@return to:@return
rvalue: scope:[rvalue] from main::@1 rvalue: scope:[rvalue] from main::@1
(byte[1024]) rvalue::SCREEN#0 ← (word/signed word) 1024 (byte[1024]) rvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0) (byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0)
(byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte/signed byte/word/signed word) 1 (byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte/signed byte/word/signed word) 1
(byte) rvalue::b#1 ← (byte~) rvalue::$0 (byte) rvalue::b#1 ← (byte~) rvalue::$0
@ -911,7 +911,7 @@ rvalue::@return: scope:[rvalue] from rvalue::@1
return return
to:@return to:@return
lvaluevar: scope:[lvaluevar] from main::@3 lvaluevar: scope:[lvaluevar] from main::@3
(byte*) lvaluevar::screen#0 ← (word/signed word) 1024 (byte*) lvaluevar::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) lvaluevar::b#0 ← (byte/signed byte/word/signed word) 4 (byte) lvaluevar::b#0 ← (byte/signed byte/word/signed word) 4
(byte) lvaluevar::i#0 ← (byte/signed byte/word/signed word) 2 (byte) lvaluevar::i#0 ← (byte/signed byte/word/signed word) 2
to:lvaluevar::@1 to:lvaluevar::@1
@ -934,7 +934,7 @@ lvaluevar::@return: scope:[lvaluevar] from lvaluevar::@1
return return
to:@return to:@return
rvaluevar: scope:[rvaluevar] from main::@2 rvaluevar: scope:[rvaluevar] from main::@2
(byte*) rvaluevar::screen#0 ← (word/signed word) 1024 (byte*) rvaluevar::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) rvaluevar::i#0 ← (byte/signed byte/word/signed word) 2 (byte) rvaluevar::i#0 ← (byte/signed byte/word/signed word) 2
to:rvaluevar::@1 to:rvaluevar::@1
rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2
@ -989,7 +989,7 @@ main::@return: scope:[main] from main::@3
return return
to:@return to:@return
lvalue: scope:[lvalue] from main lvalue: scope:[lvalue] from main
(byte[1024]) lvalue::SCREEN#0 ← (word/signed word) 1024 (byte[1024]) lvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024
*((byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word) 1 *((byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word) 1
*((byte[1024]) lvalue::SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2 *((byte[1024]) lvalue::SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2
(byte) lvalue::i#0 ← (byte/signed byte/word/signed word) 2 (byte) lvalue::i#0 ← (byte/signed byte/word/signed word) 2
@ -1008,7 +1008,7 @@ lvalue::@return: scope:[lvalue] from lvalue::@1
return return
to:@return to:@return
rvalue: scope:[rvalue] from main::@1 rvalue: scope:[rvalue] from main::@1
(byte[1024]) rvalue::SCREEN#0 ← (word/signed word) 1024 (byte[1024]) rvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0) (byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0)
(byte) rvalue::b#1 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte/signed byte/word/signed word) 1 (byte) rvalue::b#1 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte/signed byte/word/signed word) 1
(byte) rvalue::i#0 ← (byte/signed byte/word/signed word) 2 (byte) rvalue::i#0 ← (byte/signed byte/word/signed word) 2
@ -1027,7 +1027,7 @@ rvalue::@return: scope:[rvalue] from rvalue::@1
return return
to:@return to:@return
lvaluevar: scope:[lvaluevar] from main::@3 lvaluevar: scope:[lvaluevar] from main::@3
(byte*) lvaluevar::screen#0 ← (word/signed word) 1024 (byte*) lvaluevar::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) lvaluevar::b#0 ← (byte/signed byte/word/signed word) 4 (byte) lvaluevar::b#0 ← (byte/signed byte/word/signed word) 4
(byte) lvaluevar::i#0 ← (byte/signed byte/word/signed word) 2 (byte) lvaluevar::i#0 ← (byte/signed byte/word/signed word) 2
to:lvaluevar::@1 to:lvaluevar::@1
@ -1047,7 +1047,7 @@ lvaluevar::@return: scope:[lvaluevar] from lvaluevar::@1
return return
to:@return to:@return
rvaluevar: scope:[rvaluevar] from main::@2 rvaluevar: scope:[rvaluevar] from main::@2
(byte*) rvaluevar::screen#0 ← (word/signed word) 1024 (byte*) rvaluevar::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) rvaluevar::i#0 ← (byte/signed byte/word/signed word) 2 (byte) rvaluevar::i#0 ← (byte/signed byte/word/signed word) 2
to:rvaluevar::@1 to:rvaluevar::@1
rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2
@ -1092,7 +1092,7 @@ main::@return: scope:[main] from main::@3
return return
to:@return to:@return
lvalue: scope:[lvalue] from main lvalue: scope:[lvalue] from main
(byte[1024]) lvalue::SCREEN#0 ← (word/signed word) 1024 (byte[1024]) lvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024
*((byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word) 1 *((byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word) 1
*((byte[1024]) lvalue::SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2 *((byte[1024]) lvalue::SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2
(byte) lvalue::i#0 ← (byte/signed byte/word/signed word) 2 (byte) lvalue::i#0 ← (byte/signed byte/word/signed word) 2
@ -1111,7 +1111,7 @@ lvalue::@return: scope:[lvalue] from lvalue::@1
return return
to:@return to:@return
rvalue: scope:[rvalue] from main::@1 rvalue: scope:[rvalue] from main::@1
(byte[1024]) rvalue::SCREEN#0 ← (word/signed word) 1024 (byte[1024]) rvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0) (byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0)
(byte) rvalue::b#1 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte/signed byte/word/signed word) 1 (byte) rvalue::b#1 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte/signed byte/word/signed word) 1
(byte) rvalue::i#0 ← (byte/signed byte/word/signed word) 2 (byte) rvalue::i#0 ← (byte/signed byte/word/signed word) 2
@ -1130,7 +1130,7 @@ rvalue::@return: scope:[rvalue] from rvalue::@1
return return
to:@return to:@return
lvaluevar: scope:[lvaluevar] from main::@3 lvaluevar: scope:[lvaluevar] from main::@3
(byte*) lvaluevar::screen#0 ← (word/signed word) 1024 (byte*) lvaluevar::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) lvaluevar::b#0 ← (byte/signed byte/word/signed word) 4 (byte) lvaluevar::b#0 ← (byte/signed byte/word/signed word) 4
(byte) lvaluevar::i#0 ← (byte/signed byte/word/signed word) 2 (byte) lvaluevar::i#0 ← (byte/signed byte/word/signed word) 2
to:lvaluevar::@1 to:lvaluevar::@1
@ -1150,7 +1150,7 @@ lvaluevar::@return: scope:[lvaluevar] from lvaluevar::@1
return return
to:@return to:@return
rvaluevar: scope:[rvaluevar] from main::@2 rvaluevar: scope:[rvaluevar] from main::@2
(byte*) rvaluevar::screen#0 ← (word/signed word) 1024 (byte*) rvaluevar::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) rvaluevar::i#0 ← (byte/signed byte/word/signed word) 2 (byte) rvaluevar::i#0 ← (byte/signed byte/word/signed word) 2
to:rvaluevar::@1 to:rvaluevar::@1
rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2
@ -1195,7 +1195,7 @@ main::@return: scope:[main] from main::@3
return return
to:@return to:@return
lvalue: scope:[lvalue] from main lvalue: scope:[lvalue] from main
(byte[1024]) lvalue::SCREEN#0 ← (word/signed word) 1024 (byte[1024]) lvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024
*((byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word) 1 *((byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word) 1
*((byte[1024]) lvalue::SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2 *((byte[1024]) lvalue::SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2
(byte) lvalue::i#0 ← (byte/signed byte/word/signed word) 2 (byte) lvalue::i#0 ← (byte/signed byte/word/signed word) 2
@ -1213,7 +1213,7 @@ lvalue::@return: scope:[lvalue] from lvalue::@1
return return
to:@return to:@return
rvalue: scope:[rvalue] from main::@1 rvalue: scope:[rvalue] from main::@1
(byte[1024]) rvalue::SCREEN#0 ← (word/signed word) 1024 (byte[1024]) rvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0) (byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0)
(byte) rvalue::b#1 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte/signed byte/word/signed word) 1 (byte) rvalue::b#1 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte/signed byte/word/signed word) 1
(byte) rvalue::i#0 ← (byte/signed byte/word/signed word) 2 (byte) rvalue::i#0 ← (byte/signed byte/word/signed word) 2
@ -1231,7 +1231,7 @@ rvalue::@return: scope:[rvalue] from rvalue::@1
return return
to:@return to:@return
lvaluevar: scope:[lvaluevar] from main::@3 lvaluevar: scope:[lvaluevar] from main::@3
(byte*) lvaluevar::screen#0 ← (word/signed word) 1024 (byte*) lvaluevar::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) lvaluevar::b#0 ← (byte/signed byte/word/signed word) 4 (byte) lvaluevar::b#0 ← (byte/signed byte/word/signed word) 4
(byte) lvaluevar::i#0 ← (byte/signed byte/word/signed word) 2 (byte) lvaluevar::i#0 ← (byte/signed byte/word/signed word) 2
to:lvaluevar::@1 to:lvaluevar::@1
@ -1250,7 +1250,7 @@ lvaluevar::@return: scope:[lvaluevar] from lvaluevar::@1
return return
to:@return to:@return
rvaluevar: scope:[rvaluevar] from main::@2 rvaluevar: scope:[rvaluevar] from main::@2
(byte*) rvaluevar::screen#0 ← (word/signed word) 1024 (byte*) rvaluevar::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) rvaluevar::i#0 ← (byte/signed byte/word/signed word) 2 (byte) rvaluevar::i#0 ← (byte/signed byte/word/signed word) 2
to:rvaluevar::@1 to:rvaluevar::@1
rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2
@ -1296,7 +1296,7 @@ main::@return: scope:[main] from main::@3
return return
to:@return to:@return
lvalue: scope:[lvalue] from main lvalue: scope:[lvalue] from main
(byte[1024]) lvalue::SCREEN#0 ← (word/signed word) 1024 (byte[1024]) lvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024
*((byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word) 1 *((byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word) 1
*((byte[1024]) lvalue::SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2 *((byte[1024]) lvalue::SCREEN#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 2
(byte) lvalue::i#0 ← (byte/signed byte/word/signed word) 2 (byte) lvalue::i#0 ← (byte/signed byte/word/signed word) 2
@ -1313,7 +1313,7 @@ lvalue::@return: scope:[lvalue] from lvalue::@1
return return
to:@return to:@return
rvalue: scope:[rvalue] from main::@1 rvalue: scope:[rvalue] from main::@1
(byte[1024]) rvalue::SCREEN#0 ← (word/signed word) 1024 (byte[1024]) rvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0) (byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0)
(byte) rvalue::b#1 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte/signed byte/word/signed word) 1 (byte) rvalue::b#1 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte/signed byte/word/signed word) 1
(byte) rvalue::i#0 ← (byte/signed byte/word/signed word) 2 (byte) rvalue::i#0 ← (byte/signed byte/word/signed word) 2
@ -1330,7 +1330,7 @@ rvalue::@return: scope:[rvalue] from rvalue::@1
return return
to:@return to:@return
lvaluevar: scope:[lvaluevar] from main::@3 lvaluevar: scope:[lvaluevar] from main::@3
(byte*) lvaluevar::screen#0 ← (word/signed word) 1024 (byte*) lvaluevar::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) lvaluevar::b#0 ← (byte/signed byte/word/signed word) 4 (byte) lvaluevar::b#0 ← (byte/signed byte/word/signed word) 4
(byte) lvaluevar::i#0 ← (byte/signed byte/word/signed word) 2 (byte) lvaluevar::i#0 ← (byte/signed byte/word/signed word) 2
to:lvaluevar::@1 to:lvaluevar::@1
@ -1348,7 +1348,7 @@ lvaluevar::@return: scope:[lvaluevar] from lvaluevar::@1
return return
to:@return to:@return
rvaluevar: scope:[rvaluevar] from main::@2 rvaluevar: scope:[rvaluevar] from main::@2
(byte*) rvaluevar::screen#0 ← (word/signed word) 1024 (byte*) rvaluevar::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) rvaluevar::i#0 ← (byte/signed byte/word/signed word) 2 (byte) rvaluevar::i#0 ← (byte/signed byte/word/signed word) 2
to:rvaluevar::@1 to:rvaluevar::@1
rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2
@ -1369,14 +1369,14 @@ rvaluevar::@return: scope:[rvaluevar] from rvaluevar::@1
to:@end to:@end
@end: scope:[] from @5 @end: scope:[] from @5
Constant (const byte[1024]) lvalue::SCREEN#0 = 1024 Constant (const byte[1024]) lvalue::SCREEN#0 = ((byte*))1024
Constant (const byte) lvalue::i#0 = 2 Constant (const byte) lvalue::i#0 = 2
Constant (const byte[1024]) rvalue::SCREEN#0 = 1024 Constant (const byte[1024]) rvalue::SCREEN#0 = ((byte*))1024
Constant (const byte) rvalue::i#0 = 2 Constant (const byte) rvalue::i#0 = 2
Constant (const byte*) lvaluevar::screen#0 = 1024 Constant (const byte*) lvaluevar::screen#0 = ((byte*))1024
Constant (const byte) lvaluevar::b#0 = 4 Constant (const byte) lvaluevar::b#0 = 4
Constant (const byte) lvaluevar::i#0 = 2 Constant (const byte) lvaluevar::i#0 = 2
Constant (const byte*) rvaluevar::screen#0 = 1024 Constant (const byte*) rvaluevar::screen#0 = ((byte*))1024
Constant (const byte) rvaluevar::i#0 = 2 Constant (const byte) rvaluevar::i#0 = 2
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@ -1564,10 +1564,10 @@ Inlining constant with var siblings (const byte*) rvaluevar::screen#0
Inlining constant with var siblings (const byte) rvaluevar::i#0 Inlining constant with var siblings (const byte) rvaluevar::i#0
Inlining constant with var siblings (const byte) rvaluevar::i#0 Inlining constant with var siblings (const byte) rvaluevar::i#0
Constant inlined lvalue::i#0 = (byte/signed byte/word/signed word) 2 Constant inlined lvalue::i#0 = (byte/signed byte/word/signed word) 2
Constant inlined rvaluevar::screen#0 = (word/signed word) 1024 Constant inlined rvaluevar::screen#0 = ((byte*))(word/signed word) 1024
Constant inlined rvalue::i#0 = (byte/signed byte/word/signed word) 2 Constant inlined rvalue::i#0 = (byte/signed byte/word/signed word) 2
Constant inlined lvaluevar::i#0 = (byte/signed byte/word/signed word) 2 Constant inlined lvaluevar::i#0 = (byte/signed byte/word/signed word) 2
Constant inlined lvaluevar::screen#0 = (word/signed word) 1024 Constant inlined lvaluevar::screen#0 = ((byte*))(word/signed word) 1024
Constant inlined rvaluevar::i#0 = (byte/signed byte/word/signed word) 2 Constant inlined rvaluevar::i#0 = (byte/signed byte/word/signed word) 2
Succesful SSA optimization Pass2ConstantInlining Succesful SSA optimization Pass2ConstantInlining
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@ -1621,7 +1621,7 @@ rvalue::@return: scope:[rvalue] from rvalue::@1
lvaluevar: scope:[lvaluevar] from main::@3 lvaluevar: scope:[lvaluevar] from main::@3
to:lvaluevar::@1 to:lvaluevar::@1
lvaluevar::@1: scope:[lvaluevar] from lvaluevar lvaluevar::@2 lvaluevar::@1: scope:[lvaluevar] from lvaluevar lvaluevar::@2
(byte*) lvaluevar::screen#2 ← phi( lvaluevar/(word/signed word) 1024 lvaluevar::@2/(byte*) lvaluevar::screen#1 ) (byte*) lvaluevar::screen#2 ← phi( lvaluevar/((byte*))(word/signed word) 1024 lvaluevar::@2/(byte*) lvaluevar::screen#1 )
(byte) lvaluevar::i#2 ← phi( lvaluevar/(byte/signed byte/word/signed word) 2 lvaluevar::@2/(byte) lvaluevar::i#1 ) (byte) lvaluevar::i#2 ← phi( lvaluevar/(byte/signed byte/word/signed word) 2 lvaluevar::@2/(byte) lvaluevar::i#1 )
if((byte) lvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto lvaluevar::@2 if((byte) lvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto lvaluevar::@2
to:lvaluevar::@return to:lvaluevar::@return
@ -1636,7 +1636,7 @@ lvaluevar::@return: scope:[lvaluevar] from lvaluevar::@1
rvaluevar: scope:[rvaluevar] from main::@2 rvaluevar: scope:[rvaluevar] from main::@2
to:rvaluevar::@1 to:rvaluevar::@1
rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2
(byte*) rvaluevar::screen#2 ← phi( rvaluevar/(word/signed word) 1024 rvaluevar::@2/(byte*) rvaluevar::screen#1 ) (byte*) rvaluevar::screen#2 ← phi( rvaluevar/((byte*))(word/signed word) 1024 rvaluevar::@2/(byte*) rvaluevar::screen#1 )
(byte) rvaluevar::i#2 ← phi( rvaluevar/(byte/signed byte/word/signed word) 2 rvaluevar::@2/(byte) rvaluevar::i#1 ) (byte) rvaluevar::i#2 ← phi( rvaluevar/(byte/signed byte/word/signed word) 2 rvaluevar::@2/(byte) rvaluevar::i#1 )
if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto rvaluevar::@2 if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto rvaluevar::@2
to:rvaluevar::@return to:rvaluevar::@return
@ -1662,7 +1662,7 @@ FINAL SYMBOL TABLE
(label) lvalue::@2 (label) lvalue::@2
(label) lvalue::@return (label) lvalue::@return
(byte[1024]) lvalue::SCREEN (byte[1024]) lvalue::SCREEN
(const byte[1024]) lvalue::SCREEN#0 = (word/signed word) 1024 (const byte[1024]) lvalue::SCREEN#0 = ((byte*))(word/signed word) 1024
(byte) lvalue::i (byte) lvalue::i
(byte) lvalue::i#1 (byte) lvalue::i#1
(byte) lvalue::i#2 (byte) lvalue::i#2
@ -1688,7 +1688,7 @@ FINAL SYMBOL TABLE
(label) rvalue::@2 (label) rvalue::@2
(label) rvalue::@return (label) rvalue::@return
(byte[1024]) rvalue::SCREEN (byte[1024]) rvalue::SCREEN
(const byte[1024]) rvalue::SCREEN#0 = (word/signed word) 1024 (const byte[1024]) rvalue::SCREEN#0 = ((byte*))(word/signed word) 1024
(byte) rvalue::b (byte) rvalue::b
(byte) rvalue::b#0 (byte) rvalue::b#0
(byte) rvalue::b#1 (byte) rvalue::b#1
@ -1736,7 +1736,7 @@ main::@return: scope:[main] from main::@3
lvaluevar: scope:[lvaluevar] from main::@3 lvaluevar: scope:[lvaluevar] from main::@3
to:lvaluevar::@1 to:lvaluevar::@1
lvaluevar::@1: scope:[lvaluevar] from lvaluevar lvaluevar::@2 lvaluevar::@1: scope:[lvaluevar] from lvaluevar lvaluevar::@2
(byte*) lvaluevar::screen#2 ← phi( lvaluevar/(word/signed word) 1024 lvaluevar::@2/(byte*~) lvaluevar::screen#4 ) (byte*) lvaluevar::screen#2 ← phi( lvaluevar/((byte*))(word/signed word) 1024 lvaluevar::@2/(byte*~) lvaluevar::screen#4 )
(byte) lvaluevar::i#2 ← phi( lvaluevar/(byte/signed byte/word/signed word) 2 lvaluevar::@2/(byte~) lvaluevar::i#4 ) (byte) lvaluevar::i#2 ← phi( lvaluevar/(byte/signed byte/word/signed word) 2 lvaluevar::@2/(byte~) lvaluevar::i#4 )
if((byte) lvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto lvaluevar::@2 if((byte) lvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto lvaluevar::@2
to:lvaluevar::@return to:lvaluevar::@return
@ -1753,7 +1753,7 @@ lvaluevar::@2: scope:[lvaluevar] from lvaluevar::@1
rvaluevar: scope:[rvaluevar] from main::@2 rvaluevar: scope:[rvaluevar] from main::@2
to:rvaluevar::@1 to:rvaluevar::@1
rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2
(byte*) rvaluevar::screen#2 ← phi( rvaluevar/(word/signed word) 1024 rvaluevar::@2/(byte*~) rvaluevar::screen#4 ) (byte*) rvaluevar::screen#2 ← phi( rvaluevar/((byte*))(word/signed word) 1024 rvaluevar::@2/(byte*~) rvaluevar::screen#4 )
(byte) rvaluevar::i#2 ← phi( rvaluevar/(byte/signed byte/word/signed word) 2 rvaluevar::@2/(byte~) rvaluevar::i#4 ) (byte) rvaluevar::i#2 ← phi( rvaluevar/(byte/signed byte/word/signed word) 2 rvaluevar::@2/(byte~) rvaluevar::i#4 )
if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto rvaluevar::@2 if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto rvaluevar::@2
to:rvaluevar::@return to:rvaluevar::@return
@ -1838,7 +1838,7 @@ lvaluevar: scope:[lvaluevar] from main::@3
[7] phi() [ ] [7] phi() [ ]
to:lvaluevar::@1 to:lvaluevar::@1
lvaluevar::@1: scope:[lvaluevar] from lvaluevar lvaluevar::@2 lvaluevar::@1: scope:[lvaluevar] from lvaluevar lvaluevar::@2
[8] (byte*) lvaluevar::screen#2 ← phi( lvaluevar/(word/signed word) 1024 lvaluevar::@2/(byte*~) lvaluevar::screen#4 ) [ lvaluevar::i#2 lvaluevar::screen#2 ] [8] (byte*) lvaluevar::screen#2 ← phi( lvaluevar/((byte*))(word/signed word) 1024 lvaluevar::@2/(byte*~) lvaluevar::screen#4 ) [ lvaluevar::i#2 lvaluevar::screen#2 ]
[8] (byte) lvaluevar::i#2 ← phi( lvaluevar/(byte/signed byte/word/signed word) 2 lvaluevar::@2/(byte~) lvaluevar::i#4 ) [ lvaluevar::i#2 lvaluevar::screen#2 ] [8] (byte) lvaluevar::i#2 ← phi( lvaluevar/(byte/signed byte/word/signed word) 2 lvaluevar::@2/(byte~) lvaluevar::i#4 ) [ lvaluevar::i#2 lvaluevar::screen#2 ]
[9] if((byte) lvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto lvaluevar::@2 [ lvaluevar::i#2 lvaluevar::screen#2 ] [9] if((byte) lvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto lvaluevar::@2 [ lvaluevar::i#2 lvaluevar::screen#2 ]
to:lvaluevar::@return to:lvaluevar::@return
@ -1856,7 +1856,7 @@ rvaluevar: scope:[rvaluevar] from main::@2
[16] phi() [ ] [16] phi() [ ]
to:rvaluevar::@1 to:rvaluevar::@1
rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2
[17] (byte*) rvaluevar::screen#2 ← phi( rvaluevar/(word/signed word) 1024 rvaluevar::@2/(byte*~) rvaluevar::screen#4 ) [ rvaluevar::i#2 rvaluevar::screen#2 ] [17] (byte*) rvaluevar::screen#2 ← phi( rvaluevar/((byte*))(word/signed word) 1024 rvaluevar::@2/(byte*~) rvaluevar::screen#4 ) [ rvaluevar::i#2 rvaluevar::screen#2 ]
[17] (byte) rvaluevar::i#2 ← phi( rvaluevar/(byte/signed byte/word/signed word) 2 rvaluevar::@2/(byte~) rvaluevar::i#4 ) [ rvaluevar::i#2 rvaluevar::screen#2 ] [17] (byte) rvaluevar::i#2 ← phi( rvaluevar/(byte/signed byte/word/signed word) 2 rvaluevar::@2/(byte~) rvaluevar::i#4 ) [ rvaluevar::i#2 rvaluevar::screen#2 ]
[18] if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto rvaluevar::@2 [ rvaluevar::i#2 rvaluevar::screen#2 ] [18] if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto rvaluevar::@2 [ rvaluevar::i#2 rvaluevar::screen#2 ]
to:rvaluevar::@return to:rvaluevar::@return
@ -1946,7 +1946,7 @@ lvaluevar: scope:[lvaluevar] from main::@3
[7] phi() [ ] [7] phi() [ ]
to:lvaluevar::@1 to:lvaluevar::@1
lvaluevar::@1: scope:[lvaluevar] from lvaluevar lvaluevar::@2 lvaluevar::@1: scope:[lvaluevar] from lvaluevar lvaluevar::@2
[8] (byte*) lvaluevar::screen#2 ← phi( lvaluevar/(word/signed word) 1024 lvaluevar::@2/(byte*) lvaluevar::screen#1 ) [ lvaluevar::i#2 lvaluevar::screen#2 ] [8] (byte*) lvaluevar::screen#2 ← phi( lvaluevar/((byte*))(word/signed word) 1024 lvaluevar::@2/(byte*) lvaluevar::screen#1 ) [ lvaluevar::i#2 lvaluevar::screen#2 ]
[8] (byte) lvaluevar::i#2 ← phi( lvaluevar/(byte/signed byte/word/signed word) 2 lvaluevar::@2/(byte) lvaluevar::i#1 ) [ lvaluevar::i#2 lvaluevar::screen#2 ] [8] (byte) lvaluevar::i#2 ← phi( lvaluevar/(byte/signed byte/word/signed word) 2 lvaluevar::@2/(byte) lvaluevar::i#1 ) [ lvaluevar::i#2 lvaluevar::screen#2 ]
[9] if((byte) lvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto lvaluevar::@2 [ lvaluevar::i#2 lvaluevar::screen#2 ] [9] if((byte) lvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto lvaluevar::@2 [ lvaluevar::i#2 lvaluevar::screen#2 ]
to:lvaluevar::@return to:lvaluevar::@return
@ -1962,7 +1962,7 @@ rvaluevar: scope:[rvaluevar] from main::@2
[14] phi() [ ] [14] phi() [ ]
to:rvaluevar::@1 to:rvaluevar::@1
rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2
[15] (byte*) rvaluevar::screen#2 ← phi( rvaluevar/(word/signed word) 1024 rvaluevar::@2/(byte*) rvaluevar::screen#1 ) [ rvaluevar::i#2 rvaluevar::screen#2 ] [15] (byte*) rvaluevar::screen#2 ← phi( rvaluevar/((byte*))(word/signed word) 1024 rvaluevar::@2/(byte*) rvaluevar::screen#1 ) [ rvaluevar::i#2 rvaluevar::screen#2 ]
[15] (byte) rvaluevar::i#2 ← phi( rvaluevar/(byte/signed byte/word/signed word) 2 rvaluevar::@2/(byte) rvaluevar::i#1 ) [ rvaluevar::i#2 rvaluevar::screen#2 ] [15] (byte) rvaluevar::i#2 ← phi( rvaluevar/(byte/signed byte/word/signed word) 2 rvaluevar::@2/(byte) rvaluevar::i#1 ) [ rvaluevar::i#2 rvaluevar::screen#2 ]
[16] if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto rvaluevar::@2 [ rvaluevar::i#2 rvaluevar::screen#2 ] [16] if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto rvaluevar::@2 [ rvaluevar::i#2 rvaluevar::screen#2 ]
to:rvaluevar::@return to:rvaluevar::@return
@ -2032,7 +2032,7 @@ lvaluevar: scope:[lvaluevar] from main::@3
[7] phi() [ ] ( main:0::lvaluevar:5 [ ] ) [7] phi() [ ] ( main:0::lvaluevar:5 [ ] )
to:lvaluevar::@1 to:lvaluevar::@1
lvaluevar::@1: scope:[lvaluevar] from lvaluevar lvaluevar::@2 lvaluevar::@1: scope:[lvaluevar] from lvaluevar lvaluevar::@2
[8] (byte*) lvaluevar::screen#2 ← phi( lvaluevar/(word/signed word) 1024 lvaluevar::@2/(byte*) lvaluevar::screen#1 ) [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) [8] (byte*) lvaluevar::screen#2 ← phi( lvaluevar/((byte*))(word/signed word) 1024 lvaluevar::@2/(byte*) lvaluevar::screen#1 ) [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] )
[8] (byte) lvaluevar::i#2 ← phi( lvaluevar/(byte/signed byte/word/signed word) 2 lvaluevar::@2/(byte) lvaluevar::i#1 ) [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) [8] (byte) lvaluevar::i#2 ← phi( lvaluevar/(byte/signed byte/word/signed word) 2 lvaluevar::@2/(byte) lvaluevar::i#1 ) [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] )
[9] if((byte) lvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto lvaluevar::@2 [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) [9] if((byte) lvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto lvaluevar::@2 [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] )
to:lvaluevar::@return to:lvaluevar::@return
@ -2048,7 +2048,7 @@ rvaluevar: scope:[rvaluevar] from main::@2
[14] phi() [ ] ( main:0::rvaluevar:4 [ ] ) [14] phi() [ ] ( main:0::rvaluevar:4 [ ] )
to:rvaluevar::@1 to:rvaluevar::@1
rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2
[15] (byte*) rvaluevar::screen#2 ← phi( rvaluevar/(word/signed word) 1024 rvaluevar::@2/(byte*) rvaluevar::screen#1 ) [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) [15] (byte*) rvaluevar::screen#2 ← phi( rvaluevar/((byte*))(word/signed word) 1024 rvaluevar::@2/(byte*) rvaluevar::screen#1 ) [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] )
[15] (byte) rvaluevar::i#2 ← phi( rvaluevar/(byte/signed byte/word/signed word) 2 rvaluevar::@2/(byte) rvaluevar::i#1 ) [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) [15] (byte) rvaluevar::i#2 ← phi( rvaluevar/(byte/signed byte/word/signed word) 2 rvaluevar::@2/(byte) rvaluevar::i#1 ) [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] )
[16] if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto rvaluevar::@2 [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) [16] if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto rvaluevar::@2 [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] )
to:rvaluevar::@return to:rvaluevar::@return
@ -2268,7 +2268,7 @@ lvaluevar: {
.label i = 2 .label i = 2
//SEG20 [8] phi from lvaluevar to lvaluevar::@1 [phi:lvaluevar->lvaluevar::@1] //SEG20 [8] phi from lvaluevar to lvaluevar::@1 [phi:lvaluevar->lvaluevar::@1]
b1_from_lvaluevar: b1_from_lvaluevar:
//SEG21 [8] phi (byte*) lvaluevar::screen#2 = (word/signed word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1 //SEG21 [8] phi (byte*) lvaluevar::screen#2 = ((byte*))(word/signed word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1
lda #<$400 lda #<$400
sta screen sta screen
lda #>$400 lda #>$400
@ -2314,7 +2314,7 @@ rvaluevar: {
.label i = 5 .label i = 5
//SEG35 [15] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1] //SEG35 [15] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1]
b1_from_rvaluevar: b1_from_rvaluevar:
//SEG36 [15] phi (byte*) rvaluevar::screen#2 = (word/signed word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1 //SEG36 [15] phi (byte*) rvaluevar::screen#2 = ((byte*))(word/signed word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1
lda #<$400 lda #<$400
sta screen sta screen
lda #>$400 lda #>$400
@ -2542,7 +2542,7 @@ lvaluevar: {
.label screen = 2 .label screen = 2
//SEG20 [8] phi from lvaluevar to lvaluevar::@1 [phi:lvaluevar->lvaluevar::@1] //SEG20 [8] phi from lvaluevar to lvaluevar::@1 [phi:lvaluevar->lvaluevar::@1]
b1_from_lvaluevar: b1_from_lvaluevar:
//SEG21 [8] phi (byte*) lvaluevar::screen#2 = (word/signed word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1 //SEG21 [8] phi (byte*) lvaluevar::screen#2 = ((byte*))(word/signed word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1
lda #<$400 lda #<$400
sta screen sta screen
lda #>$400 lda #>$400
@ -2582,7 +2582,7 @@ rvaluevar: {
.label screen = 2 .label screen = 2
//SEG35 [15] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1] //SEG35 [15] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1]
b1_from_rvaluevar: b1_from_rvaluevar:
//SEG36 [15] phi (byte*) rvaluevar::screen#2 = (word/signed word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1 //SEG36 [15] phi (byte*) rvaluevar::screen#2 = ((byte*))(word/signed word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1
lda #<$400 lda #<$400
sta screen sta screen
lda #>$400 lda #>$400
@ -2730,7 +2730,7 @@ lvaluevar: {
.label screen = 2 .label screen = 2
//SEG20 [8] phi from lvaluevar to lvaluevar::@1 [phi:lvaluevar->lvaluevar::@1] //SEG20 [8] phi from lvaluevar to lvaluevar::@1 [phi:lvaluevar->lvaluevar::@1]
b1_from_lvaluevar: b1_from_lvaluevar:
//SEG21 [8] phi (byte*) lvaluevar::screen#2 = (word/signed word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1 //SEG21 [8] phi (byte*) lvaluevar::screen#2 = ((byte*))(word/signed word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1
lda #<$400 lda #<$400
sta screen sta screen
lda #>$400 lda #>$400
@ -2770,7 +2770,7 @@ rvaluevar: {
.label screen = 2 .label screen = 2
//SEG35 [15] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1] //SEG35 [15] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1]
b1_from_rvaluevar: b1_from_rvaluevar:
//SEG36 [15] phi (byte*) rvaluevar::screen#2 = (word/signed word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1 //SEG36 [15] phi (byte*) rvaluevar::screen#2 = ((byte*))(word/signed word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1
lda #<$400 lda #<$400
sta screen sta screen
lda #>$400 lda #>$400
@ -2925,7 +2925,7 @@ lvaluevar: {
.const b = 4 .const b = 4
.label screen = 2 .label screen = 2
//SEG20 [8] phi from lvaluevar to lvaluevar::@1 [phi:lvaluevar->lvaluevar::@1] //SEG20 [8] phi from lvaluevar to lvaluevar::@1 [phi:lvaluevar->lvaluevar::@1]
//SEG21 [8] phi (byte*) lvaluevar::screen#2 = (word/signed word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1 //SEG21 [8] phi (byte*) lvaluevar::screen#2 = ((byte*))(word/signed word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1
lda #<$400 lda #<$400
sta screen sta screen
lda #>$400 lda #>$400
@ -2962,7 +2962,7 @@ lvaluevar: {
rvaluevar: { rvaluevar: {
.label screen = 2 .label screen = 2
//SEG35 [15] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1] //SEG35 [15] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1]
//SEG36 [15] phi (byte*) rvaluevar::screen#2 = (word/signed word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1 //SEG36 [15] phi (byte*) rvaluevar::screen#2 = ((byte*))(word/signed word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1
lda #<$400 lda #<$400
sta screen sta screen
lda #>$400 lda #>$400
@ -3064,7 +3064,7 @@ FINAL SYMBOL TABLE
(label) lvalue::@2 (label) lvalue::@2
(label) lvalue::@return (label) lvalue::@return
(byte[1024]) lvalue::SCREEN (byte[1024]) lvalue::SCREEN
(const byte[1024]) lvalue::SCREEN#0 SCREEN = (word/signed word) 1024 (const byte[1024]) lvalue::SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte) lvalue::i (byte) lvalue::i
(byte) lvalue::i#1 reg byte x 22.0 (byte) lvalue::i#1 reg byte x 22.0
(byte) lvalue::i#2 reg byte x 14.666666666666666 (byte) lvalue::i#2 reg byte x 14.666666666666666
@ -3090,7 +3090,7 @@ FINAL SYMBOL TABLE
(label) rvalue::@2 (label) rvalue::@2
(label) rvalue::@return (label) rvalue::@return
(byte[1024]) rvalue::SCREEN (byte[1024]) rvalue::SCREEN
(const byte[1024]) rvalue::SCREEN#0 SCREEN = (word/signed word) 1024 (const byte[1024]) rvalue::SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte) rvalue::b (byte) rvalue::b
(byte) rvalue::b#0 reg byte a 20.0 (byte) rvalue::b#0 reg byte a 20.0
(byte) rvalue::b#1 reg byte a 20.0 (byte) rvalue::b#1 reg byte a 20.0
@ -3157,7 +3157,7 @@ lvaluevar: {
.const b = 4 .const b = 4
.label screen = 2 .label screen = 2
//SEG20 [8] phi from lvaluevar to lvaluevar::@1 [phi:lvaluevar->lvaluevar::@1] //SEG20 [8] phi from lvaluevar to lvaluevar::@1 [phi:lvaluevar->lvaluevar::@1]
//SEG21 [8] phi (byte*) lvaluevar::screen#2 = (word/signed word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1 //SEG21 [8] phi (byte*) lvaluevar::screen#2 = ((byte*))(word/signed word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1
lda #<$400 lda #<$400
sta screen sta screen
lda #>$400 lda #>$400
@ -3194,7 +3194,7 @@ lvaluevar: {
rvaluevar: { rvaluevar: {
.label screen = 2 .label screen = 2
//SEG35 [15] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1] //SEG35 [15] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1]
//SEG36 [15] phi (byte*) rvaluevar::screen#2 = (word/signed word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1 //SEG36 [15] phi (byte*) rvaluevar::screen#2 = ((byte*))(word/signed word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1
lda #<$400 lda #<$400
sta screen sta screen
lda #>$400 lda #>$400

View File

@ -6,7 +6,7 @@
(label) lvalue::@2 (label) lvalue::@2
(label) lvalue::@return (label) lvalue::@return
(byte[1024]) lvalue::SCREEN (byte[1024]) lvalue::SCREEN
(const byte[1024]) lvalue::SCREEN#0 SCREEN = (word/signed word) 1024 (const byte[1024]) lvalue::SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte) lvalue::i (byte) lvalue::i
(byte) lvalue::i#1 reg byte x 22.0 (byte) lvalue::i#1 reg byte x 22.0
(byte) lvalue::i#2 reg byte x 14.666666666666666 (byte) lvalue::i#2 reg byte x 14.666666666666666
@ -32,7 +32,7 @@
(label) rvalue::@2 (label) rvalue::@2
(label) rvalue::@return (label) rvalue::@return
(byte[1024]) rvalue::SCREEN (byte[1024]) rvalue::SCREEN
(const byte[1024]) rvalue::SCREEN#0 SCREEN = (word/signed word) 1024 (const byte[1024]) rvalue::SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte) rvalue::b (byte) rvalue::b
(byte) rvalue::b#0 reg byte a 20.0 (byte) rvalue::b#0 reg byte a 20.0
(byte) rvalue::b#1 reg byte a 20.0 (byte) rvalue::b#1 reg byte a 20.0

View File

@ -51,7 +51,7 @@ INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(byte[1024]) main::SCREEN ← (word/signed word) 1024 (byte[1024]) main::SCREEN ← ((byte*)) (word/signed word) 1024
(byte) main::i ← (byte/signed byte/word/signed word) 2 (byte) main::i ← (byte/signed byte/word/signed word) 2
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@2 main::@1: scope:[main] from main main::@2
@ -87,7 +87,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(byte[1024]) main::SCREEN ← (word/signed word) 1024 (byte[1024]) main::SCREEN ← ((byte*)) (word/signed word) 1024
(byte) main::i ← (byte/signed byte/word/signed word) 2 (byte) main::i ← (byte/signed byte/word/signed word) 2
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@2 main::@1: scope:[main] from main main::@2
@ -113,7 +113,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte[1024]) main::SCREEN ← (word/signed word) 1024 (byte[1024]) main::SCREEN ← ((byte*)) (word/signed word) 1024
(byte) main::i ← (byte/signed byte/word/signed word) 2 (byte) main::i ← (byte/signed byte/word/signed word) 2
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@2 main::@1: scope:[main] from main main::@2
@ -141,7 +141,7 @@ CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte[1024]) main::SCREEN#0 ← (word/signed word) 1024 (byte[1024]) main::SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte) main::i#0 ← (byte/signed byte/word/signed word) 2 (byte) main::i#0 ← (byte/signed byte/word/signed word) 2
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@2 main::@1: scope:[main] from main main::@2
@ -171,7 +171,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte[1024]) main::SCREEN#0 ← (word/signed word) 1024 (byte[1024]) main::SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte) main::i#0 ← (byte/signed byte/word/signed word) 2 (byte) main::i#0 ← (byte/signed byte/word/signed word) 2
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@2 main::@1: scope:[main] from main main::@2
@ -226,7 +226,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte[1024]) main::SCREEN#0 ← (word/signed word) 1024 (byte[1024]) main::SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte) main::i#0 ← (byte/signed byte/word/signed word) 2 (byte) main::i#0 ← (byte/signed byte/word/signed word) 2
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@2 main::@1: scope:[main] from main main::@2
@ -258,7 +258,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte[1024]) main::SCREEN#0 ← (word/signed word) 1024 (byte[1024]) main::SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte) main::i#0 ← (byte/signed byte/word/signed word) 2 (byte) main::i#0 ← (byte/signed byte/word/signed word) 2
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@2 main::@1: scope:[main] from main main::@2
@ -285,7 +285,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte[1024]) main::SCREEN#0 ← (word/signed word) 1024 (byte[1024]) main::SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte) main::i#0 ← (byte/signed byte/word/signed word) 2 (byte) main::i#0 ← (byte/signed byte/word/signed word) 2
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@2 main::@1: scope:[main] from main main::@2
@ -312,7 +312,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte[1024]) main::SCREEN#0 ← (word/signed word) 1024 (byte[1024]) main::SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte) main::i#0 ← (byte/signed byte/word/signed word) 2 (byte) main::i#0 ← (byte/signed byte/word/signed word) 2
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@2 main::@1: scope:[main] from main main::@2
@ -338,7 +338,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte[1024]) main::SCREEN#0 ← (word/signed word) 1024 (byte[1024]) main::SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte) main::i#0 ← (byte/signed byte/word/signed word) 2 (byte) main::i#0 ← (byte/signed byte/word/signed word) 2
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@2 main::@1: scope:[main] from main main::@2
@ -357,7 +357,7 @@ main::@return: scope:[main] from main::@1
to:@end to:@end
@end: scope:[] from @1 @end: scope:[] from @1
Constant (const byte[1024]) main::SCREEN#0 = 1024 Constant (const byte[1024]) main::SCREEN#0 = ((byte*))1024
Constant (const byte) main::i#0 = 2 Constant (const byte) main::i#0 = 2
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@ -417,7 +417,7 @@ FINAL SYMBOL TABLE
(label) main::@2 (label) main::@2
(label) main::@return (label) main::@return
(byte[1024]) main::SCREEN (byte[1024]) main::SCREEN
(const byte[1024]) main::SCREEN#0 = (word/signed word) 1024 (const byte[1024]) main::SCREEN#0 = ((byte*))(word/signed word) 1024
(byte) main::b (byte) main::b
(byte) main::b#0 (byte) main::b#0
(byte) main::i (byte) main::i
@ -776,7 +776,7 @@ FINAL SYMBOL TABLE
(label) main::@2 (label) main::@2
(label) main::@return (label) main::@return
(byte[1024]) main::SCREEN (byte[1024]) main::SCREEN
(const byte[1024]) main::SCREEN#0 SCREEN = (word/signed word) 1024 (const byte[1024]) main::SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte) main::b (byte) main::b
(byte) main::b#0 reg byte a 110.0 (byte) main::b#0 reg byte a 110.0
(byte) main::i (byte) main::i

View File

@ -6,7 +6,7 @@
(label) main::@2 (label) main::@2
(label) main::@return (label) main::@return
(byte[1024]) main::SCREEN (byte[1024]) main::SCREEN
(const byte[1024]) main::SCREEN#0 SCREEN = (word/signed word) 1024 (const byte[1024]) main::SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte) main::b (byte) main::b
(byte) main::b#0 reg byte a 110.0 (byte) main::b#0 reg byte a 110.0
(byte) main::i (byte) main::i

View File

@ -58,8 +58,8 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte*) SCROLL ← (word) 53270 (byte*) SCROLL ← ((byte*)) (word) 53270
(byte[]) TEXT ← (string) "01234567@" (byte[]) TEXT ← (string) "01234567@"
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
@ -95,8 +95,8 @@ main::@return: scope:[main] from main::@4
Removing empty block main::@4 Removing empty block main::@4
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte*) SCROLL ← (word) 53270 (byte*) SCROLL ← ((byte*)) (word) 53270
(byte[]) TEXT ← (string) "01234567@" (byte[]) TEXT ← (string) "01234567@"
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
@ -131,8 +131,8 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte*) SCROLL ← (word) 53270 (byte*) SCROLL ← ((byte*)) (word) 53270
(byte[]) TEXT ← (string) "01234567@" (byte[]) TEXT ← (string) "01234567@"
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -171,8 +171,8 @@ Completing Phi functions...
Completing Phi functions... Completing Phi functions...
CONTROL FLOW GRAPH SSA CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) SCROLL#0 ← (word) 53270 (byte*) SCROLL#0 ← ((byte*)) (word) 53270
(byte[]) TEXT#0 ← (string) "01234567@" (byte[]) TEXT#0 ← (string) "01234567@"
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -223,8 +223,8 @@ main::@return: scope:[main] from main::@2
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) SCROLL#0 ← (word) 53270 (byte*) SCROLL#0 ← ((byte*)) (word) 53270
(byte[]) TEXT#0 ← (string) "01234567@" (byte[]) TEXT#0 ← (string) "01234567@"
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -322,8 +322,8 @@ Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) SCROLL#0 ← (word) 53270 (byte*) SCROLL#0 ← ((byte*)) (word) 53270
(byte[]) TEXT#0 ← (string) "01234567@" (byte[]) TEXT#0 ← (string) "01234567@"
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -374,8 +374,8 @@ Inversing boolean not (boolean~) main::$1 ← (byte) main::c#0 != (byte) '@' fro
Succesful SSA optimization Pass2UnaryNotSimplification Succesful SSA optimization Pass2UnaryNotSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) SCROLL#0 ← (word) 53270 (byte*) SCROLL#0 ← ((byte*)) (word) 53270
(byte[]) TEXT#0 ← (string) "01234567@" (byte[]) TEXT#0 ← (string) "01234567@"
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -431,8 +431,8 @@ Alias (byte*) SCREEN#2 = (byte*) SCREEN#3
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) SCROLL#0 ← (word) 53270 (byte*) SCROLL#0 ← ((byte*)) (word) 53270
(byte[]) TEXT#0 ← (string) "01234567@" (byte[]) TEXT#0 ← (string) "01234567@"
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -479,8 +479,8 @@ Alias (byte[]) TEXT#2 = (byte[]) TEXT#5
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) SCROLL#0 ← (word) 53270 (byte*) SCROLL#0 ← ((byte*)) (word) 53270
(byte[]) TEXT#0 ← (string) "01234567@" (byte[]) TEXT#0 ← (string) "01234567@"
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -523,8 +523,8 @@ Self Phi Eliminated (byte[]) TEXT#2
Succesful SSA optimization Pass2SelfPhiElimination Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) SCROLL#0 ← (word) 53270 (byte*) SCROLL#0 ← ((byte*)) (word) 53270
(byte[]) TEXT#0 ← (string) "01234567@" (byte[]) TEXT#0 ← (string) "01234567@"
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -565,8 +565,8 @@ Redundant Phi (byte[]) TEXT#2 (byte[]) TEXT#0
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) SCROLL#0 ← (word) 53270 (byte*) SCROLL#0 ← ((byte*)) (word) 53270
(byte[]) TEXT#0 ← (string) "01234567@" (byte[]) TEXT#0 ← (string) "01234567@"
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -604,8 +604,8 @@ Simple Condition (boolean~) main::$1 if((byte) main::c#0!=(byte) '@') goto main:
Succesful SSA optimization Pass2ConditionalJumpSimplification Succesful SSA optimization Pass2ConditionalJumpSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) SCROLL#0 ← (word) 53270 (byte*) SCROLL#0 ← ((byte*)) (word) 53270
(byte[]) TEXT#0 ← (string) "01234567@" (byte[]) TEXT#0 ← (string) "01234567@"
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
@ -638,8 +638,8 @@ main::@return: scope:[main] from main::@2
to:@end to:@end
@end: scope:[] from @1 @end: scope:[] from @1
Constant (const byte*) SCREEN#0 = 1024 Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte*) SCROLL#0 = 53270 Constant (const byte*) SCROLL#0 = ((byte*))53270
Constant (const byte[]) TEXT#0 = "01234567@" Constant (const byte[]) TEXT#0 = "01234567@"
Constant (const byte) main::i#0 = 0 Constant (const byte) main::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
@ -755,9 +755,9 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024 (const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(byte*) SCROLL (byte*) SCROLL
(const byte*) SCROLL#0 = (word) 53270 (const byte*) SCROLL#0 = ((byte*))(word) 53270
(byte[]) TEXT (byte[]) TEXT
(const byte[]) TEXT#0 = (string) "01234567@" (const byte[]) TEXT#0 = (string) "01234567@"
(void()) main() (void()) main()
@ -1439,9 +1439,9 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte*) SCROLL (byte*) SCROLL
(const byte*) SCROLL#0 SCROLL = (word) 53270 (const byte*) SCROLL#0 SCROLL = ((byte*))(word) 53270
(byte[]) TEXT (byte[]) TEXT
(const byte[]) TEXT#0 TEXT = (string) "01234567@" (const byte[]) TEXT#0 TEXT = (string) "01234567@"
(void()) main() (void()) main()

View File

@ -2,9 +2,9 @@
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte*) SCROLL (byte*) SCROLL
(const byte*) SCROLL#0 SCROLL = (word) 53270 (const byte*) SCROLL#0 SCROLL = ((byte*))(word) 53270
(byte[]) TEXT (byte[]) TEXT
(const byte[]) TEXT#0 TEXT = (string) "01234567@" (const byte[]) TEXT#0 TEXT = (string) "01234567@"
(void()) main() (void()) main()

View File

@ -149,10 +149,10 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte*) RASTER ← (word) 53266 (byte*) RASTER ← ((byte*)) (word) 53266
(byte*) BGCOL ← (word) 53280 (byte*) BGCOL ← ((byte*)) (word) 53280
(byte*) SCROLL ← (word) 53270 (byte*) SCROLL ← ((byte*)) (word) 53270
(byte*) TEXT ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" (byte*) TEXT ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @"
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
@ -245,10 +245,10 @@ Removing empty block @1
Removing empty block fillscreen::@2 Removing empty block fillscreen::@2
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte*) RASTER ← (word) 53266 (byte*) RASTER ← ((byte*)) (word) 53266
(byte*) BGCOL ← (word) 53280 (byte*) BGCOL ← ((byte*)) (word) 53280
(byte*) SCROLL ← (word) 53270 (byte*) SCROLL ← ((byte*)) (word) 53270
(byte*) TEXT ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" (byte*) TEXT ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @"
to:@2 to:@2
main: scope:[main] from main: scope:[main] from
@ -331,10 +331,10 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte*) RASTER ← (word) 53266 (byte*) RASTER ← ((byte*)) (word) 53266
(byte*) BGCOL ← (word) 53280 (byte*) BGCOL ← ((byte*)) (word) 53280
(byte*) SCROLL ← (word) 53270 (byte*) SCROLL ← ((byte*)) (word) 53270
(byte*) TEXT ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" (byte*) TEXT ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @"
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
@ -431,10 +431,10 @@ Completing Phi functions...
Completing Phi functions... Completing Phi functions...
CONTROL FLOW GRAPH SSA CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) RASTER#0 ← (word) 53266 (byte*) RASTER#0 ← ((byte*)) (word) 53266
(byte*) BGCOL#0 ← (word) 53280 (byte*) BGCOL#0 ← ((byte*)) (word) 53280
(byte*) SCROLL#0 ← (word) 53270 (byte*) SCROLL#0 ← ((byte*)) (word) 53270
(byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" (byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @"
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
@ -611,10 +611,10 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) RASTER#0 ← (word) 53266 (byte*) RASTER#0 ← ((byte*)) (word) 53266
(byte*) BGCOL#0 ← (word) 53280 (byte*) BGCOL#0 ← ((byte*)) (word) 53280
(byte*) SCROLL#0 ← (word) 53270 (byte*) SCROLL#0 ← ((byte*)) (word) 53270
(byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" (byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @"
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
@ -950,10 +950,10 @@ Culled Empty Block (label) @3
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) RASTER#0 ← (word) 53266 (byte*) RASTER#0 ← ((byte*)) (word) 53266
(byte*) BGCOL#0 ← (word) 53280 (byte*) BGCOL#0 ← ((byte*)) (word) 53280
(byte*) SCROLL#0 ← (word) 53270 (byte*) SCROLL#0 ← ((byte*)) (word) 53270
(byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" (byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @"
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
@ -1131,10 +1131,10 @@ Inversing boolean not (boolean~) main::$10 ← (byte) main::c#0 != (byte) '@' fr
Succesful SSA optimization Pass2UnaryNotSimplification Succesful SSA optimization Pass2UnaryNotSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) RASTER#0 ← (word) 53266 (byte*) RASTER#0 ← ((byte*)) (word) 53266
(byte*) BGCOL#0 ← (word) 53280 (byte*) BGCOL#0 ← ((byte*)) (word) 53280
(byte*) SCROLL#0 ← (word) 53270 (byte*) SCROLL#0 ← ((byte*)) (word) 53270
(byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" (byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @"
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
@ -1347,10 +1347,10 @@ Alias (byte) fillscreen::fill#0 = (byte) fillscreen::fill#2
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) RASTER#0 ← (word) 53266 (byte*) RASTER#0 ← ((byte*)) (word) 53266
(byte*) BGCOL#0 ← (word) 53280 (byte*) BGCOL#0 ← ((byte*)) (word) 53280
(byte*) SCROLL#0 ← (word) 53270 (byte*) SCROLL#0 ← ((byte*)) (word) 53270
(byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" (byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @"
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
@ -1488,10 +1488,10 @@ Alias (byte*) TEXT#13 = (byte*) TEXT#2
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) RASTER#0 ← (word) 53266 (byte*) RASTER#0 ← ((byte*)) (word) 53266
(byte*) BGCOL#0 ← (word) 53280 (byte*) BGCOL#0 ← ((byte*)) (word) 53280
(byte*) SCROLL#0 ← (word) 53270 (byte*) SCROLL#0 ← ((byte*)) (word) 53270
(byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" (byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @"
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
@ -1640,10 +1640,10 @@ Self Phi Eliminated (byte*) fillscreen::screen#2
Succesful SSA optimization Pass2SelfPhiElimination Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) RASTER#0 ← (word) 53266 (byte*) RASTER#0 ← ((byte*)) (word) 53266
(byte*) BGCOL#0 ← (word) 53280 (byte*) BGCOL#0 ← ((byte*)) (word) 53280
(byte*) SCROLL#0 ← (word) 53270 (byte*) SCROLL#0 ← ((byte*)) (word) 53270
(byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" (byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @"
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
@ -1775,10 +1775,10 @@ Redundant Phi (byte*) fillscreen::screen#2 (byte*) fillscreen::cursor#0
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) RASTER#0 ← (word) 53266 (byte*) RASTER#0 ← ((byte*)) (word) 53266
(byte*) BGCOL#0 ← (word) 53280 (byte*) BGCOL#0 ← ((byte*)) (word) 53280
(byte*) SCROLL#0 ← (word) 53270 (byte*) SCROLL#0 ← ((byte*)) (word) 53270
(byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" (byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @"
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
@ -1883,10 +1883,10 @@ Redundant Phi (byte*) TEXT#11 (byte*) TEXT#10
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) RASTER#0 ← (word) 53266 (byte*) RASTER#0 ← ((byte*)) (word) 53266
(byte*) BGCOL#0 ← (word) 53280 (byte*) BGCOL#0 ← ((byte*)) (word) 53280
(byte*) SCROLL#0 ← (word) 53270 (byte*) SCROLL#0 ← ((byte*)) (word) 53270
(byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" (byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @"
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
@ -1987,10 +1987,10 @@ Simple Condition (boolean~) fillscreen::$1 if((byte*) fillscreen::cursor#1<(byte
Succesful SSA optimization Pass2ConditionalJumpSimplification Succesful SSA optimization Pass2ConditionalJumpSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) RASTER#0 ← (word) 53266 (byte*) RASTER#0 ← ((byte*)) (word) 53266
(byte*) BGCOL#0 ← (word) 53280 (byte*) BGCOL#0 ← ((byte*)) (word) 53280
(byte*) SCROLL#0 ← (word) 53270 (byte*) SCROLL#0 ← ((byte*)) (word) 53270
(byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" (byte*) TEXT#0 ← (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @"
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
@ -2076,10 +2076,10 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1
to:@end to:@end
@end: scope:[] from @2 @end: scope:[] from @2
Constant (const byte*) SCREEN#0 = 1024 Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte*) RASTER#0 = 53266 Constant (const byte*) RASTER#0 = ((byte*))53266
Constant (const byte*) BGCOL#0 = 53280 Constant (const byte*) BGCOL#0 = ((byte*))53280
Constant (const byte*) SCROLL#0 = 53270 Constant (const byte*) SCROLL#0 = ((byte*))53270
Constant (const byte*) TEXT#0 = "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" Constant (const byte*) TEXT#0 = "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @"
Constant (const byte) fillscreen::fill#0 = 32 Constant (const byte) fillscreen::fill#0 = 32
Constant (const byte) main::scroll#0 = 7 Constant (const byte) main::scroll#0 = 7
@ -2872,13 +2872,13 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) BGCOL (byte*) BGCOL
(const byte*) BGCOL#0 = (word) 53280 (const byte*) BGCOL#0 = ((byte*))(word) 53280
(byte*) RASTER (byte*) RASTER
(const byte*) RASTER#0 = (word) 53266 (const byte*) RASTER#0 = ((byte*))(word) 53266
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024 (const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(byte*) SCROLL (byte*) SCROLL
(const byte*) SCROLL#0 = (word) 53270 (const byte*) SCROLL#0 = ((byte*))(word) 53270
(byte*) TEXT (byte*) TEXT
(const byte*) TEXT#0 = (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" (const byte*) TEXT#0 = (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @"
(void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill) (void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill)
@ -4684,13 +4684,13 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) BGCOL (byte*) BGCOL
(const byte*) BGCOL#0 BGCOL = (word) 53280 (const byte*) BGCOL#0 BGCOL = ((byte*))(word) 53280
(byte*) RASTER (byte*) RASTER
(const byte*) RASTER#0 RASTER = (word) 53266 (const byte*) RASTER#0 RASTER = ((byte*))(word) 53266
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte*) SCROLL (byte*) SCROLL
(const byte*) SCROLL#0 SCROLL = (word) 53270 (const byte*) SCROLL#0 SCROLL = ((byte*))(word) 53270
(byte*) TEXT (byte*) TEXT
(const byte*) TEXT#0 TEXT = (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" (const byte*) TEXT#0 TEXT = (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @"
(void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill) (void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill)

View File

@ -2,13 +2,13 @@
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) BGCOL (byte*) BGCOL
(const byte*) BGCOL#0 BGCOL = (word) 53280 (const byte*) BGCOL#0 BGCOL = ((byte*))(word) 53280
(byte*) RASTER (byte*) RASTER
(const byte*) RASTER#0 RASTER = (word) 53266 (const byte*) RASTER#0 RASTER = ((byte*))(word) 53266
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte*) SCROLL (byte*) SCROLL
(const byte*) SCROLL#0 SCROLL = (word) 53270 (const byte*) SCROLL#0 SCROLL = ((byte*))(word) 53270
(byte*) TEXT (byte*) TEXT
(const byte*) TEXT#0 TEXT = (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" (const byte*) TEXT#0 TEXT = (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @"
(void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill) (void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill)

View File

@ -55,95 +55,96 @@ scroll_bit::@4: scope:[scroll_bit] from scroll_bit
[20] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] ) [20] call next_char param-assignment [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ next_char::c#2 nxt#15 ] )
to:scroll_bit::@8 to:scroll_bit::@8
scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4 scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4
[21] (word) scroll_bit::c#0 ← (byte) next_char::c#2 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] ) [21] (byte~) scroll_bit::$3 ← (byte) next_char::c#2 [ scroll_bit::$3 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$3 nxt#15 ] )
[22] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] ) [22] (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$3 [ scroll_bit::c#0 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::c#0 nxt#15 ] )
[23] (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ scroll_bit::$5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$5 nxt#15 ] ) [23] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 [ scroll_bit::$4 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$4 nxt#15 ] )
[24] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] ) [24] (byte*~) scroll_bit::$5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ scroll_bit::$5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ scroll_bit::$5 nxt#15 ] )
[25] (byte*) current_chargen#5 ← (byte*~) scroll_bit::$5 [ current_chargen#5 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_chargen#5 nxt#15 ] )
to:scroll_bit::@1 to:scroll_bit::@1
scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8 scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8
[25] (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) [26] (byte*) nxt#36 ← phi( scroll_bit/(byte*) nxt#31 scroll_bit::@8/(byte*) nxt#15 ) [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] )
[25] (byte) current_bit#21 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(byte/word/signed word) 128 ) [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) [26] (byte) current_bit#21 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(byte/word/signed word) 128 ) [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] )
[25] (byte*) current_chargen#19 ← phi( scroll_bit/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) [26] (byte*) current_chargen#19 ← phi( scroll_bit/(byte*) current_chargen#27 scroll_bit::@8/(byte*) current_chargen#5 ) [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] )
[26] call scroll_hard param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) [27] call scroll_hard param-assignment [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] )
to:scroll_bit::@7 to:scroll_bit::@7
scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1 scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1
asm { sei } asm { sei }
[28] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) [29] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] )
to:scroll_bit::@2 to:scroll_bit::@2
scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7 scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7
[29] (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 39 ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) [30] (byte*) scroll_bit::sc#2 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40+(byte/signed byte/word/signed word) 39 ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] )
[29] (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(byte/signed byte/word/signed word) 0 ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) [30] (byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(byte/signed byte/word/signed word) 0 ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] )
[30] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) [31] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] )
[31] (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) [32] (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] )
[32] if((byte~) scroll_bit::$10==(byte/signed byte/word/signed word) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) [33] if((byte~) scroll_bit::$10==(byte/signed byte/word/signed word) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] )
to:scroll_bit::@5 to:scroll_bit::@5
scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2
to:scroll_bit::@3 to:scroll_bit::@3
scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5 scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5
[33] (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) ' ' scroll_bit::@5/(byte/word/signed word) 128+(byte) ' ' ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::b#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::b#2 ] ) [34] (byte) scroll_bit::b#2 ← phi( scroll_bit::@2/(byte) ' ' scroll_bit::@5/(byte/word/signed word) 128+(byte) ' ' ) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::b#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::b#2 ] )
[34] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) [35] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] )
[35] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) [36] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] )
[36] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) [37] (byte) scroll_bit::r#1 ← ++ (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] )
[37] if((byte) scroll_bit::r#1!=(byte/signed byte/word/signed word) 8) goto scroll_bit::@2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ) [38] if((byte) scroll_bit::r#1!=(byte/signed byte/word/signed word) 8) goto scroll_bit::@2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#1 scroll_bit::sc#1 ] )
to:scroll_bit::@6 to:scroll_bit::@6
scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3
[38] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) [39] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] )
asm { cli } asm { cli }
to:scroll_bit::@return to:scroll_bit::@return
scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6 scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6
[40] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] ) [41] return [ current_bit#21 nxt#36 current_chargen#19 ] ( main:0::scroll_soft:7::scroll_bit:13 [ current_bit#21 nxt#36 current_chargen#19 ] )
to:@return to:@return
scroll_hard: scope:[scroll_hard] from scroll_bit::@1 scroll_hard: scope:[scroll_hard] from scroll_bit::@1
[41] phi() [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 ] ) [42] phi() [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 ] )
to:scroll_hard::@1 to:scroll_hard::@1
scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1 scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1
[42] (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte/signed byte/word/signed word) 0 scroll_hard::@1/(byte) scroll_hard::i#1 ) [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) [43] (byte) scroll_hard::i#2 ← phi( scroll_hard/(byte/signed byte/word/signed word) 0 scroll_hard::@1/(byte) scroll_hard::i#1 ) [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] )
[43] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) [44] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] )
[44] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) [45] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] )
[45] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) [46] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] )
[46] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) [47] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] )
[47] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) [48] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] )
[48] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) [49] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] )
[49] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) [50] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] )
[50] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) [51] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] )
[51] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) [52] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] )
[52] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) [53] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] )
[53] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) [54] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] )
[54] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) [55] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] )
[55] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) [56] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] )
[56] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) [57] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] )
[57] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) [58] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] )
[58] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) [59] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] )
[59] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) [60] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] )
[60] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) [61] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] )
to:scroll_hard::@return to:scroll_hard::@return
scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1 scroll_hard::@return: scope:[scroll_hard] from scroll_hard::@1
[61] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:26 [ current_bit#21 nxt#36 current_chargen#19 ] ) [62] return [ ] ( main:0::scroll_soft:7::scroll_bit:13::scroll_hard:27 [ current_bit#21 nxt#36 current_chargen#19 ] )
to:@return to:@return
next_char: scope:[next_char] from scroll_bit::@4 next_char: scope:[next_char] from scroll_bit::@4
[62] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) [63] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] )
[63] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] ) [64] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ nxt#31 next_char::c#0 ] )
to:next_char::@2 to:next_char::@2
next_char::@2: scope:[next_char] from next_char next_char::@2: scope:[next_char] from next_char
[64] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] ) [65] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#1 ] )
to:next_char::@1 to:next_char::@1
next_char::@1: scope:[next_char] from next_char next_char::@2 next_char::@1: scope:[next_char] from next_char next_char::@2
[65] (byte) next_char::c#2 ← phi( next_char/(byte) next_char::c#0 next_char::@2/(byte) next_char::c#1 ) [ next_char::c#2 nxt#18 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#18 ] ) [66] (byte) next_char::c#2 ← phi( next_char/(byte) next_char::c#0 next_char::@2/(byte) next_char::c#1 ) [ next_char::c#2 nxt#18 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#18 ] )
[65] (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(const byte*) TEXT#0 ) [ next_char::c#2 nxt#18 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#18 ] ) [66] (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(const byte*) TEXT#0 ) [ next_char::c#2 nxt#18 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#18 ] )
[66] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) [67] (byte*) nxt#15 ← ++ (byte*) nxt#18 [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] )
to:next_char::@return to:next_char::@return
next_char::@return: scope:[next_char] from next_char::@1 next_char::@return: scope:[next_char] from next_char::@1
[67] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] ) [68] return [ next_char::c#2 nxt#15 ] ( main:0::scroll_soft:7::scroll_bit:13::next_char:20 [ next_char::c#2 nxt#15 ] )
to:@return to:@return
fillscreen: scope:[fillscreen] from main fillscreen: scope:[fillscreen] from main
[68] phi() [ ] ( main:0::fillscreen:2 [ ] ) [69] phi() [ ] ( main:0::fillscreen:2 [ ] )
to:fillscreen::@1 to:fillscreen::@1
fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@1 fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@1
[69] (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) SCREEN#0 fillscreen::@1/(byte*) fillscreen::cursor#1 ) [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) [70] (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) SCREEN#0 fillscreen::@1/(byte*) fillscreen::cursor#1 ) [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] )
[70] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] ) [71] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] )
[71] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) [72] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] )
[72] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] ) [73] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] )
to:fillscreen::@return to:fillscreen::@return
fillscreen::@return: scope:[fillscreen] from fillscreen::@1 fillscreen::@return: scope:[fillscreen] from fillscreen::@1
[73] return [ ] ( main:0::fillscreen:2 [ ] ) [74] return [ ] ( main:0::fillscreen:2 [ ] )
to:@return to:@return

File diff suppressed because it is too large Load Diff

View File

@ -2,17 +2,17 @@
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) BGCOL (byte*) BGCOL
(const byte*) BGCOL#0 BGCOL = (word) 53280 (const byte*) BGCOL#0 BGCOL = ((byte*))(word) 53280
(byte*) CHARGEN (byte*) CHARGEN
(const byte*) CHARGEN#0 CHARGEN = (word) 53248 (const byte*) CHARGEN#0 CHARGEN = ((byte*))(word) 53248
(byte*) PROCPORT (byte*) PROCPORT
(const byte*) PROCPORT#0 PROCPORT = (byte/signed byte/word/signed word) 1 (const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word) 1
(byte*) RASTER (byte*) RASTER
(const byte*) RASTER#0 RASTER = (word) 53266 (const byte*) RASTER#0 RASTER = ((byte*))(word) 53266
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte*) SCROLL (byte*) SCROLL
(const byte*) SCROLL#0 SCROLL = (word) 53270 (const byte*) SCROLL#0 SCROLL = ((byte*))(word) 53270
(byte*) TEXT (byte*) TEXT
(const byte*) TEXT#0 TEXT = (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" (const byte*) TEXT#0 TEXT = (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @"
(byte) current_bit (byte) current_bit
@ -51,7 +51,7 @@
(byte) next_char::return (byte) next_char::return
(byte*) nxt (byte*) nxt
(byte*) nxt#0 nxt zp ZP_PTR_BYTE:7 2.5 (byte*) nxt#0 nxt zp ZP_PTR_BYTE:7 2.5
(byte*) nxt#15 nxt zp ZP_PTR_BYTE:7 0.5714285714285714 (byte*) nxt#15 nxt zp ZP_PTR_BYTE:7 0.5
(byte*) nxt#18 nxt zp ZP_PTR_BYTE:7 4.0 (byte*) nxt#18 nxt zp ZP_PTR_BYTE:7 4.0
(byte*) nxt#31 nxt zp ZP_PTR_BYTE:7 1.5454545454545456 (byte*) nxt#31 nxt zp ZP_PTR_BYTE:7 1.5454545454545456
(byte*) nxt#36 nxt zp ZP_PTR_BYTE:7 0.3529411764705882 (byte*) nxt#36 nxt zp ZP_PTR_BYTE:7 0.3529411764705882
@ -62,6 +62,7 @@
(void()) scroll_bit() (void()) scroll_bit()
(byte~) scroll_bit::$0 reg byte a 4.0 (byte~) scroll_bit::$0 reg byte a 4.0
(byte~) scroll_bit::$10 reg byte a 22.0 (byte~) scroll_bit::$10 reg byte a 22.0
(byte~) scroll_bit::$3 reg byte a 4.0
(word~) scroll_bit::$4 $4 zp ZP_WORD:9 4.0 (word~) scroll_bit::$4 $4 zp ZP_WORD:9 4.0
(byte*~) scroll_bit::$5 $5 zp ZP_PTR_BYTE:3 4.0 (byte*~) scroll_bit::$5 $5 zp ZP_PTR_BYTE:3 4.0
(label) scroll_bit::@1 (label) scroll_bit::@1
@ -130,6 +131,7 @@ reg byte x [ scroll_hard::i#2 scroll_hard::i#1 ]
zp ZP_PTR_BYTE:7 [ nxt#18 nxt#31 nxt#0 nxt#36 nxt#15 ] zp ZP_PTR_BYTE:7 [ nxt#18 nxt#31 nxt#0 nxt#36 nxt#15 ]
reg byte a [ next_char::c#2 next_char::c#0 next_char::c#1 ] reg byte a [ next_char::c#2 next_char::c#0 next_char::c#1 ]
reg byte a [ scroll_bit::$0 ] reg byte a [ scroll_bit::$0 ]
reg byte a [ scroll_bit::$3 ]
zp ZP_WORD:9 [ scroll_bit::c#0 scroll_bit::$4 ] zp ZP_WORD:9 [ scroll_bit::c#0 scroll_bit::$4 ]
reg byte a [ scroll_bit::bits#0 ] reg byte a [ scroll_bit::bits#0 ]
reg byte a [ scroll_bit::$10 ] reg byte a [ scroll_bit::$10 ]

View File

@ -16,7 +16,8 @@ main::@return: scope:[main] from main::@1
[4] return [ ] ( main:0 [ ] ) [4] return [ ] ( main:0 [ ] )
to:@return to:@return
main::@2: scope:[main] from main::@1 main::@2: scope:[main] from main::@1
[5] *((const byte[]) main::screen#0 + (byte) main::j#2) ← (signed byte) main::i#2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) [5] (byte~) main::$2 ← ((byte)) (signed byte) main::i#2 [ main::i#2 main::j#2 main::$2 ] ( main:0 [ main::i#2 main::j#2 main::$2 ] )
[6] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ] ( main:0 [ main::j#2 main::i#1 ] ) [6] *((const byte[]) main::screen#0 + (byte) main::j#2) ← (byte~) main::$2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] )
[7] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] ( main:0 [ main::i#1 main::j#1 ] ) [7] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ] ( main:0 [ main::j#2 main::i#1 ] )
[8] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] ( main:0 [ main::i#1 main::j#1 ] )
to:main::@1 to:main::@1

View File

@ -4,7 +4,7 @@ void main() {
byte j = 0; byte j = 0;
signed byte i = -127; signed byte i = -127;
while(i<127) { while(i<127) {
screen[j] = i; screen[j] = (byte)i;
i++; i++;
j++; j++;
} }
@ -23,7 +23,8 @@ main::@1:
if((boolean~) main::$1) goto main::@2 if((boolean~) main::$1) goto main::@2
goto main::@3 goto main::@3
main::@2: main::@2:
*((byte[]) main::screen + (byte) main::j) ← (signed byte) main::i (byte~) main::$2 ← ((byte)) (signed byte) main::i
*((byte[]) main::screen + (byte) main::j) ← (byte~) main::$2
(signed byte) main::i ← ++ (signed byte) main::i (signed byte) main::i ← ++ (signed byte) main::i
(byte) main::j ← ++ (byte) main::j (byte) main::j ← ++ (byte) main::j
goto main::@1 goto main::@1
@ -37,6 +38,7 @@ SYMBOLS
(void()) main() (void()) main()
(signed byte/signed word~) main::$0 (signed byte/signed word~) main::$0
(boolean~) main::$1 (boolean~) main::$1
(byte~) main::$2
(label) main::@1 (label) main::@1
(label) main::@2 (label) main::@2
(label) main::@3 (label) main::@3
@ -49,7 +51,7 @@ INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(byte[]) main::screen ← (word/signed word) 1024 (byte[]) main::screen ← ((byte*)) (word/signed word) 1024
(byte) main::j ← (byte/signed byte/word/signed word) 0 (byte) main::j ← (byte/signed byte/word/signed word) 0
(signed byte/signed word~) main::$0 ← - (byte/signed byte/word/signed word) 127 (signed byte/signed word~) main::$0 ← - (byte/signed byte/word/signed word) 127
(signed byte) main::i ← (signed byte/signed word~) main::$0 (signed byte) main::i ← (signed byte/signed word~) main::$0
@ -59,7 +61,8 @@ main::@1: scope:[main] from main main::@2
if((boolean~) main::$1) goto main::@2 if((boolean~) main::$1) goto main::@2
to:main::@4 to:main::@4
main::@2: scope:[main] from main::@1 main::@5 main::@2: scope:[main] from main::@1 main::@5
*((byte[]) main::screen + (byte) main::j) ← (signed byte) main::i (byte~) main::$2 ← ((byte)) (signed byte) main::i
*((byte[]) main::screen + (byte) main::j) ← (byte~) main::$2
(signed byte) main::i ← ++ (signed byte) main::i (signed byte) main::i ← ++ (signed byte) main::i
(byte) main::j ← ++ (byte) main::j (byte) main::j ← ++ (byte) main::j
to:main::@1 to:main::@1
@ -87,7 +90,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(byte[]) main::screen ← (word/signed word) 1024 (byte[]) main::screen ← ((byte*)) (word/signed word) 1024
(byte) main::j ← (byte/signed byte/word/signed word) 0 (byte) main::j ← (byte/signed byte/word/signed word) 0
(signed byte/signed word~) main::$0 ← - (byte/signed byte/word/signed word) 127 (signed byte/signed word~) main::$0 ← - (byte/signed byte/word/signed word) 127
(signed byte) main::i ← (signed byte/signed word~) main::$0 (signed byte) main::i ← (signed byte/signed word~) main::$0
@ -97,7 +100,8 @@ main::@1: scope:[main] from main main::@2
if((boolean~) main::$1) goto main::@2 if((boolean~) main::$1) goto main::@2
to:main::@return to:main::@return
main::@2: scope:[main] from main::@1 main::@2: scope:[main] from main::@1
*((byte[]) main::screen + (byte) main::j) ← (signed byte) main::i (byte~) main::$2 ← ((byte)) (signed byte) main::i
*((byte[]) main::screen + (byte) main::j) ← (byte~) main::$2
(signed byte) main::i ← ++ (signed byte) main::i (signed byte) main::i ← ++ (signed byte) main::i
(byte) main::j ← ++ (byte) main::j (byte) main::j ← ++ (byte) main::j
to:main::@1 to:main::@1
@ -115,7 +119,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte[]) main::screen ← (word/signed word) 1024 (byte[]) main::screen ← ((byte*)) (word/signed word) 1024
(byte) main::j ← (byte/signed byte/word/signed word) 0 (byte) main::j ← (byte/signed byte/word/signed word) 0
(signed byte/signed word~) main::$0 ← - (byte/signed byte/word/signed word) 127 (signed byte/signed word~) main::$0 ← - (byte/signed byte/word/signed word) 127
(signed byte) main::i ← (signed byte/signed word~) main::$0 (signed byte) main::i ← (signed byte/signed word~) main::$0
@ -125,7 +129,8 @@ main::@1: scope:[main] from main main::@2
if((boolean~) main::$1) goto main::@2 if((boolean~) main::$1) goto main::@2
to:main::@return to:main::@return
main::@2: scope:[main] from main::@1 main::@2: scope:[main] from main::@1
*((byte[]) main::screen + (byte) main::j) ← (signed byte) main::i (byte~) main::$2 ← ((byte)) (signed byte) main::i
*((byte[]) main::screen + (byte) main::j) ← (byte~) main::$2
(signed byte) main::i ← ++ (signed byte) main::i (signed byte) main::i ← ++ (signed byte) main::i
(byte) main::j ← ++ (byte) main::j (byte) main::j ← ++ (byte) main::j
to:main::@1 to:main::@1
@ -145,7 +150,7 @@ CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte[]) main::screen#0 ← (word/signed word) 1024 (byte[]) main::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) main::j#0 ← (byte/signed byte/word/signed word) 0 (byte) main::j#0 ← (byte/signed byte/word/signed word) 0
(signed byte/signed word~) main::$0 ← - (byte/signed byte/word/signed word) 127 (signed byte/signed word~) main::$0 ← - (byte/signed byte/word/signed word) 127
(signed byte) main::i#0 ← (signed byte/signed word~) main::$0 (signed byte) main::i#0 ← (signed byte/signed word~) main::$0
@ -161,7 +166,8 @@ main::@2: scope:[main] from main::@1
(byte) main::j#2 ← phi( main::@1/(byte) main::j#3 ) (byte) main::j#2 ← phi( main::@1/(byte) main::j#3 )
(byte[]) main::screen#1 ← phi( main::@1/(byte[]) main::screen#2 ) (byte[]) main::screen#1 ← phi( main::@1/(byte[]) main::screen#2 )
(signed byte) main::i#3 ← phi( main::@1/(signed byte) main::i#2 ) (signed byte) main::i#3 ← phi( main::@1/(signed byte) main::i#2 )
*((byte[]) main::screen#1 + (byte) main::j#2) ← (signed byte) main::i#3 (byte~) main::$2 ← ((byte)) (signed byte) main::i#3
*((byte[]) main::screen#1 + (byte) main::j#2) ← (byte~) main::$2
(signed byte) main::i#1 ← ++ (signed byte) main::i#3 (signed byte) main::i#1 ← ++ (signed byte) main::i#3
(byte) main::j#1 ← ++ (byte) main::j#2 (byte) main::j#1 ← ++ (byte) main::j#2
to:main::@1 to:main::@1
@ -179,7 +185,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte[]) main::screen#0 ← (word/signed word) 1024 (byte[]) main::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) main::j#0 ← (byte/signed byte/word/signed word) 0 (byte) main::j#0 ← (byte/signed byte/word/signed word) 0
(signed byte/signed word~) main::$0 ← - (byte/signed byte/word/signed word) 127 (signed byte/signed word~) main::$0 ← - (byte/signed byte/word/signed word) 127
(signed byte) main::i#0 ← (signed byte/signed word~) main::$0 (signed byte) main::i#0 ← (signed byte/signed word~) main::$0
@ -195,7 +201,8 @@ main::@2: scope:[main] from main::@1
(byte) main::j#2 ← phi( main::@1/(byte) main::j#3 ) (byte) main::j#2 ← phi( main::@1/(byte) main::j#3 )
(byte[]) main::screen#1 ← phi( main::@1/(byte[]) main::screen#2 ) (byte[]) main::screen#1 ← phi( main::@1/(byte[]) main::screen#2 )
(signed byte) main::i#3 ← phi( main::@1/(signed byte) main::i#2 ) (signed byte) main::i#3 ← phi( main::@1/(signed byte) main::i#2 )
*((byte[]) main::screen#1 + (byte) main::j#2) ← (signed byte) main::i#3 (byte~) main::$2 ← ((byte)) (signed byte) main::i#3
*((byte[]) main::screen#1 + (byte) main::j#2) ← (byte~) main::$2
(signed byte) main::i#1 ← ++ (signed byte) main::i#3 (signed byte) main::i#1 ← ++ (signed byte) main::i#3
(byte) main::j#1 ← ++ (byte) main::j#2 (byte) main::j#1 ← ++ (byte) main::j#2
to:main::@1 to:main::@1
@ -217,6 +224,7 @@ INITIAL SSA SYMBOL TABLE
(void()) main() (void()) main()
(signed byte/signed word~) main::$0 (signed byte/signed word~) main::$0
(boolean~) main::$1 (boolean~) main::$1
(byte~) main::$2
(label) main::@1 (label) main::@1
(label) main::@2 (label) main::@2
(label) main::@return (label) main::@return
@ -241,7 +249,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte[]) main::screen#0 ← (word/signed word) 1024 (byte[]) main::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) main::j#0 ← (byte/signed byte/word/signed word) 0 (byte) main::j#0 ← (byte/signed byte/word/signed word) 0
(signed byte/signed word~) main::$0 ← - (byte/signed byte/word/signed word) 127 (signed byte/signed word~) main::$0 ← - (byte/signed byte/word/signed word) 127
(signed byte) main::i#0 ← (signed byte/signed word~) main::$0 (signed byte) main::i#0 ← (signed byte/signed word~) main::$0
@ -257,7 +265,8 @@ main::@2: scope:[main] from main::@1
(byte) main::j#2 ← phi( main::@1/(byte) main::j#3 ) (byte) main::j#2 ← phi( main::@1/(byte) main::j#3 )
(byte[]) main::screen#1 ← phi( main::@1/(byte[]) main::screen#2 ) (byte[]) main::screen#1 ← phi( main::@1/(byte[]) main::screen#2 )
(signed byte) main::i#3 ← phi( main::@1/(signed byte) main::i#2 ) (signed byte) main::i#3 ← phi( main::@1/(signed byte) main::i#2 )
*((byte[]) main::screen#1 + (byte) main::j#2) ← (signed byte) main::i#3 (byte~) main::$2 ← ((byte)) (signed byte) main::i#3
*((byte[]) main::screen#1 + (byte) main::j#2) ← (byte~) main::$2
(signed byte) main::i#1 ← ++ (signed byte) main::i#3 (signed byte) main::i#1 ← ++ (signed byte) main::i#3
(byte) main::j#1 ← ++ (byte) main::j#2 (byte) main::j#1 ← ++ (byte) main::j#2
to:main::@1 to:main::@1
@ -278,7 +287,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte[]) main::screen#0 ← (word/signed word) 1024 (byte[]) main::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) main::j#0 ← (byte/signed byte/word/signed word) 0 (byte) main::j#0 ← (byte/signed byte/word/signed word) 0
(signed byte) main::i#0 ← - (byte/signed byte/word/signed word) 127 (signed byte) main::i#0 ← - (byte/signed byte/word/signed word) 127
to:main::@1 to:main::@1
@ -290,7 +299,8 @@ main::@1: scope:[main] from main main::@2
if((boolean~) main::$1) goto main::@2 if((boolean~) main::$1) goto main::@2
to:main::@return to:main::@return
main::@2: scope:[main] from main::@1 main::@2: scope:[main] from main::@1
*((byte[]) main::screen#1 + (byte) main::j#2) ← (signed byte) main::i#2 (byte~) main::$2 ← ((byte)) (signed byte) main::i#2
*((byte[]) main::screen#1 + (byte) main::j#2) ← (byte~) main::$2
(signed byte) main::i#1 ← ++ (signed byte) main::i#2 (signed byte) main::i#1 ← ++ (signed byte) main::i#2
(byte) main::j#1 ← ++ (byte) main::j#2 (byte) main::j#1 ← ++ (byte) main::j#2
to:main::@1 to:main::@1
@ -308,7 +318,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte[]) main::screen#0 ← (word/signed word) 1024 (byte[]) main::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) main::j#0 ← (byte/signed byte/word/signed word) 0 (byte) main::j#0 ← (byte/signed byte/word/signed word) 0
(signed byte) main::i#0 ← - (byte/signed byte/word/signed word) 127 (signed byte) main::i#0 ← - (byte/signed byte/word/signed word) 127
to:main::@1 to:main::@1
@ -320,7 +330,8 @@ main::@1: scope:[main] from main main::@2
if((boolean~) main::$1) goto main::@2 if((boolean~) main::$1) goto main::@2
to:main::@return to:main::@return
main::@2: scope:[main] from main::@1 main::@2: scope:[main] from main::@1
*((byte[]) main::screen#1 + (byte) main::j#2) ← (signed byte) main::i#2 (byte~) main::$2 ← ((byte)) (signed byte) main::i#2
*((byte[]) main::screen#1 + (byte) main::j#2) ← (byte~) main::$2
(signed byte) main::i#1 ← ++ (signed byte) main::i#2 (signed byte) main::i#1 ← ++ (signed byte) main::i#2
(byte) main::j#1 ← ++ (byte) main::j#2 (byte) main::j#1 ← ++ (byte) main::j#2
to:main::@1 to:main::@1
@ -338,7 +349,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte[]) main::screen#0 ← (word/signed word) 1024 (byte[]) main::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) main::j#0 ← (byte/signed byte/word/signed word) 0 (byte) main::j#0 ← (byte/signed byte/word/signed word) 0
(signed byte) main::i#0 ← - (byte/signed byte/word/signed word) 127 (signed byte) main::i#0 ← - (byte/signed byte/word/signed word) 127
to:main::@1 to:main::@1
@ -349,7 +360,8 @@ main::@1: scope:[main] from main main::@2
if((boolean~) main::$1) goto main::@2 if((boolean~) main::$1) goto main::@2
to:main::@return to:main::@return
main::@2: scope:[main] from main::@1 main::@2: scope:[main] from main::@1
*((byte[]) main::screen#0 + (byte) main::j#2) ← (signed byte) main::i#2 (byte~) main::$2 ← ((byte)) (signed byte) main::i#2
*((byte[]) main::screen#0 + (byte) main::j#2) ← (byte~) main::$2
(signed byte) main::i#1 ← ++ (signed byte) main::i#2 (signed byte) main::i#1 ← ++ (signed byte) main::i#2
(byte) main::j#1 ← ++ (byte) main::j#2 (byte) main::j#1 ← ++ (byte) main::j#2
to:main::@1 to:main::@1
@ -367,7 +379,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte[]) main::screen#0 ← (word/signed word) 1024 (byte[]) main::screen#0 ← ((byte*)) (word/signed word) 1024
(byte) main::j#0 ← (byte/signed byte/word/signed word) 0 (byte) main::j#0 ← (byte/signed byte/word/signed word) 0
(signed byte) main::i#0 ← - (byte/signed byte/word/signed word) 127 (signed byte) main::i#0 ← - (byte/signed byte/word/signed word) 127
to:main::@1 to:main::@1
@ -377,7 +389,8 @@ main::@1: scope:[main] from main main::@2
if((signed byte) main::i#2<(byte/signed byte/word/signed word) 127) goto main::@2 if((signed byte) main::i#2<(byte/signed byte/word/signed word) 127) goto main::@2
to:main::@return to:main::@return
main::@2: scope:[main] from main::@1 main::@2: scope:[main] from main::@1
*((byte[]) main::screen#0 + (byte) main::j#2) ← (signed byte) main::i#2 (byte~) main::$2 ← ((byte)) (signed byte) main::i#2
*((byte[]) main::screen#0 + (byte) main::j#2) ← (byte~) main::$2
(signed byte) main::i#1 ← ++ (signed byte) main::i#2 (signed byte) main::i#1 ← ++ (signed byte) main::i#2
(byte) main::j#1 ← ++ (byte) main::j#2 (byte) main::j#1 ← ++ (byte) main::j#2
to:main::@1 to:main::@1
@ -389,7 +402,7 @@ main::@return: scope:[main] from main::@1
to:@end to:@end
@end: scope:[] from @1 @end: scope:[] from @1
Constant (const byte[]) main::screen#0 = 1024 Constant (const byte[]) main::screen#0 = ((byte*))1024
Constant (const byte) main::j#0 = 0 Constant (const byte) main::j#0 = 0
Constant (const signed byte) main::i#0 = -127 Constant (const signed byte) main::i#0 = -127
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
@ -404,7 +417,8 @@ main::@1: scope:[main] from main main::@2
if((signed byte) main::i#2<(byte/signed byte/word/signed word) 127) goto main::@2 if((signed byte) main::i#2<(byte/signed byte/word/signed word) 127) goto main::@2
to:main::@return to:main::@return
main::@2: scope:[main] from main::@1 main::@2: scope:[main] from main::@1
*((const byte[]) main::screen#0 + (byte) main::j#2) ← (signed byte) main::i#2 (byte~) main::$2 ← ((byte)) (signed byte) main::i#2
*((const byte[]) main::screen#0 + (byte) main::j#2) ← (byte~) main::$2
(signed byte) main::i#1 ← ++ (signed byte) main::i#2 (signed byte) main::i#1 ← ++ (signed byte) main::i#2
(byte) main::j#1 ← ++ (byte) main::j#2 (byte) main::j#1 ← ++ (byte) main::j#2
to:main::@1 to:main::@1
@ -434,7 +448,8 @@ main::@1: scope:[main] from main main::@2
if((signed byte) main::i#2<(byte/signed byte/word/signed word) 127) goto main::@2 if((signed byte) main::i#2<(byte/signed byte/word/signed word) 127) goto main::@2
to:main::@return to:main::@return
main::@2: scope:[main] from main::@1 main::@2: scope:[main] from main::@1
*((const byte[]) main::screen#0 + (byte) main::j#2) ← (signed byte) main::i#2 (byte~) main::$2 ← ((byte)) (signed byte) main::i#2
*((const byte[]) main::screen#0 + (byte) main::j#2) ← (byte~) main::$2
(signed byte) main::i#1 ← ++ (signed byte) main::i#2 (signed byte) main::i#1 ← ++ (signed byte) main::i#2
(byte) main::j#1 ← ++ (byte) main::j#2 (byte) main::j#1 ← ++ (byte) main::j#2
to:main::@1 to:main::@1
@ -451,6 +466,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(void()) main() (void()) main()
(byte~) main::$2
(label) main::@1 (label) main::@1
(label) main::@2 (label) main::@2
(label) main::@return (label) main::@return
@ -461,7 +477,7 @@ FINAL SYMBOL TABLE
(byte) main::j#1 (byte) main::j#1
(byte) main::j#2 (byte) main::j#2
(byte[]) main::screen (byte[]) main::screen
(const byte[]) main::screen#0 = (word/signed word) 1024 (const byte[]) main::screen#0 = ((byte*))(word/signed word) 1024
Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@2 Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@2
Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@2 Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@2
@ -483,7 +499,8 @@ main::@return: scope:[main] from main::@1
return return
to:@return to:@return
main::@2: scope:[main] from main::@1 main::@2: scope:[main] from main::@1
*((const byte[]) main::screen#0 + (byte) main::j#2) ← (signed byte) main::i#2 (byte~) main::$2 ← ((byte)) (signed byte) main::i#2
*((const byte[]) main::screen#0 + (byte) main::j#2) ← (byte~) main::$2
(signed byte) main::i#1 ← ++ (signed byte) main::i#2 (signed byte) main::i#1 ← ++ (signed byte) main::i#2
(byte) main::j#1 ← ++ (byte) main::j#2 (byte) main::j#1 ← ++ (byte) main::j#2
(signed byte~) main::i#4 ← (signed byte) main::i#1 (signed byte~) main::i#4 ← (signed byte) main::i#1
@ -497,6 +514,7 @@ Calls in [] to main:0
Propagating live ranges... Propagating live ranges...
Propagating live ranges... Propagating live ranges...
Propagating live ranges... Propagating live ranges...
Propagating live ranges...
CONTROL FLOW GRAPH - LIVE RANGES FOUND CONTROL FLOW GRAPH - LIVE RANGES FOUND
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
@ -516,22 +534,24 @@ main::@return: scope:[main] from main::@1
[4] return [ ] [4] return [ ]
to:@return to:@return
main::@2: scope:[main] from main::@1 main::@2: scope:[main] from main::@1
[5] *((const byte[]) main::screen#0 + (byte) main::j#2) ← (signed byte) main::i#2 [ main::i#2 main::j#2 ] [5] (byte~) main::$2 ← ((byte)) (signed byte) main::i#2 [ main::i#2 main::j#2 main::$2 ]
[6] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ] [6] *((const byte[]) main::screen#0 + (byte) main::j#2) ← (byte~) main::$2 [ main::i#2 main::j#2 ]
[7] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] [7] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ]
[8] (signed byte~) main::i#4 ← (signed byte) main::i#1 [ main::i#4 main::j#1 ] [8] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ]
[9] (byte~) main::j#4 ← (byte) main::j#1 [ main::i#4 main::j#4 ] [9] (signed byte~) main::i#4 ← (signed byte) main::i#1 [ main::i#4 main::j#1 ]
[10] (byte~) main::j#4 ← (byte) main::j#1 [ main::i#4 main::j#4 ]
to:main::@1 to:main::@1
Created 2 initial phi equivalence classes Created 2 initial phi equivalence classes
Coalesced [8] main::i#4 ← main::i#1 Coalesced [9] main::i#4 ← main::i#1
Coalesced [9] main::j#4 ← main::j#1 Coalesced [10] main::j#4 ← main::j#1
Coalesced down to 2 phi equivalence classes Coalesced down to 2 phi equivalence classes
Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@2 Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@2
Adding NOP phi() at start of main Adding NOP phi() at start of main
Propagating live ranges... Propagating live ranges...
Propagating live ranges... Propagating live ranges...
Propagating live ranges... Propagating live ranges...
Propagating live ranges...
CONTROL FLOW GRAPH - BEFORE EFFECTIVE LIVE RANGES CONTROL FLOW GRAPH - BEFORE EFFECTIVE LIVE RANGES
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
@ -551,9 +571,10 @@ main::@return: scope:[main] from main::@1
[4] return [ ] [4] return [ ]
to:@return to:@return
main::@2: scope:[main] from main::@1 main::@2: scope:[main] from main::@1
[5] *((const byte[]) main::screen#0 + (byte) main::j#2) ← (signed byte) main::i#2 [ main::i#2 main::j#2 ] [5] (byte~) main::$2 ← ((byte)) (signed byte) main::i#2 [ main::i#2 main::j#2 main::$2 ]
[6] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ] [6] *((const byte[]) main::screen#0 + (byte) main::j#2) ← (byte~) main::$2 [ main::i#2 main::j#2 ]
[7] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] [7] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ]
[8] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ]
to:main::@1 to:main::@1
CONTROL FLOW GRAPH - PHI MEM COALESCED CONTROL FLOW GRAPH - PHI MEM COALESCED
@ -575,9 +596,10 @@ main::@return: scope:[main] from main::@1
[4] return [ ] ( main:0 [ ] ) [4] return [ ] ( main:0 [ ] )
to:@return to:@return
main::@2: scope:[main] from main::@1 main::@2: scope:[main] from main::@1
[5] *((const byte[]) main::screen#0 + (byte) main::j#2) ← (signed byte) main::i#2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) [5] (byte~) main::$2 ← ((byte)) (signed byte) main::i#2 [ main::i#2 main::j#2 main::$2 ] ( main:0 [ main::i#2 main::j#2 main::$2 ] )
[6] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ] ( main:0 [ main::j#2 main::i#1 ] ) [6] *((const byte[]) main::screen#0 + (byte) main::j#2) ← (byte~) main::$2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] )
[7] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] ( main:0 [ main::i#1 main::j#1 ] ) [7] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ] ( main:0 [ main::j#2 main::i#1 ] )
[8] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] ( main:0 [ main::i#1 main::j#1 ] )
to:main::@1 to:main::@1
DOMINATORS DOMINATORS
@ -603,22 +625,26 @@ Loop head: main::@1 tails: main::@2 blocks: main::@2 main::@1 depth: 1
VARIABLE REGISTER WEIGHTS VARIABLE REGISTER WEIGHTS
(void()) main() (void()) main()
(byte~) main::$2 22.0
(signed byte) main::i (signed byte) main::i
(signed byte) main::i#1 11.0 (signed byte) main::i#1 11.0
(signed byte) main::i#2 14.666666666666666 (signed byte) main::i#2 11.0
(byte) main::j (byte) main::j
(byte) main::j#1 22.0 (byte) main::j#1 22.0
(byte) main::j#2 8.25 (byte) main::j#2 6.6000000000000005
(byte[]) main::screen (byte[]) main::screen
Initial phi equivalence classes Initial phi equivalence classes
[ main::i#2 main::i#1 ] [ main::i#2 main::i#1 ]
[ main::j#2 main::j#1 ] [ main::j#2 main::j#1 ]
Added variable main::$2 to zero page equivalence class [ main::$2 ]
Complete equivalence classes Complete equivalence classes
[ main::i#2 main::i#1 ] [ main::i#2 main::i#1 ]
[ main::j#2 main::j#1 ] [ main::j#2 main::j#1 ]
[ main::$2 ]
Allocated zp ZP_SBYTE:2 [ main::i#2 main::i#1 ] Allocated zp ZP_SBYTE:2 [ main::i#2 main::i#1 ]
Allocated zp ZP_BYTE:3 [ main::j#2 main::j#1 ] Allocated zp ZP_BYTE:3 [ main::j#2 main::j#1 ]
Allocated zp ZP_BYTE:4 [ main::$2 ]
INITIAL ASM INITIAL ASM
//SEG0 Basic Upstart //SEG0 Basic Upstart
.pc = $801 "Basic" .pc = $801 "Basic"
@ -640,6 +666,7 @@ bend:
//SEG7 main //SEG7 main
main: { main: {
.const screen = $400 .const screen = $400
.label _2 = 4
.label i = 2 .label i = 2
.label j = 3 .label j = 3
//SEG8 [2] phi from main to main::@1 [phi:main->main::@1] //SEG8 [2] phi from main to main::@1 [phi:main->main::@1]
@ -668,18 +695,21 @@ main: {
rts rts
//SEG15 main::@2 //SEG15 main::@2
b2: b2:
//SEG16 [5] *((const byte[]) main::screen#0 + (byte) main::j#2) ← (signed byte) main::i#2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) -- cowo1_derefidx_zpby1=zpsby1 //SEG16 [5] (byte~) main::$2 ← ((byte)) (signed byte) main::i#2 [ main::i#2 main::j#2 main::$2 ] ( main:0 [ main::i#2 main::j#2 main::$2 ] ) -- zpby1=_byte_zpsby1
lda i lda i
sta _2
//SEG17 [6] *((const byte[]) main::screen#0 + (byte) main::j#2) ← (byte~) main::$2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) -- cowo1_derefidx_zpby1=zpby2
lda _2
ldx j ldx j
sta screen,x sta screen,x
//SEG17 [6] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ] ( main:0 [ main::j#2 main::i#1 ] ) -- zpsby1=_inc_zpsby1 //SEG18 [7] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ] ( main:0 [ main::j#2 main::i#1 ] ) -- zpsby1=_inc_zpsby1
inc i inc i
//SEG18 [7] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] ( main:0 [ main::i#1 main::j#1 ] ) -- zpby1=_inc_zpby1 //SEG19 [8] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] ( main:0 [ main::i#1 main::j#1 ] ) -- zpby1=_inc_zpby1
inc j inc j
//SEG19 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] //SEG20 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
b1_from_b2: b1_from_b2:
//SEG20 [2] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- register_copy //SEG21 [2] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- register_copy
//SEG21 [2] phi (signed byte) main::i#2 = (signed byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy //SEG22 [2] phi (signed byte) main::i#2 = (signed byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy
jmp b1 jmp b1
} }
@ -699,17 +729,16 @@ MISSING FRAGMENTS
Statement [3] if((signed byte) main::i#2<(byte/signed byte/word/signed word) 127) goto main::@2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) always clobbers reg byte a Statement [3] if((signed byte) main::i#2<(byte/signed byte/word/signed word) 127) goto main::@2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) always clobbers reg byte a
Potential registers zp ZP_SBYTE:2 [ main::i#2 main::i#1 ] : zp ZP_SBYTE:2 , reg sbyte a , reg sbyte x , reg sbyte y , Potential registers zp ZP_SBYTE:2 [ main::i#2 main::i#1 ] : zp ZP_SBYTE:2 , reg sbyte a , reg sbyte x , reg sbyte y ,
Potential registers zp ZP_BYTE:3 [ main::j#2 main::j#1 ] : zp ZP_BYTE:3 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:3 [ main::j#2 main::j#1 ] : zp ZP_BYTE:3 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:4 [ main::$2 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y ,
REGISTER UPLIFT SCOPES REGISTER UPLIFT SCOPES
Uplift Scope [main] 30.25: zp ZP_BYTE:3 [ main::j#2 main::j#1 ] 25.67: zp ZP_SBYTE:2 [ main::i#2 main::i#1 ] Uplift Scope [main] 28.6: zp ZP_BYTE:3 [ main::j#2 main::j#1 ] 22: zp ZP_SBYTE:2 [ main::i#2 main::i#1 ] 22: zp ZP_BYTE:4 [ main::$2 ]
Uplift Scope [] Uplift Scope []
Uplifting [main] best 495 combination reg byte x [ main::j#2 main::j#1 ] zp ZP_SBYTE:2 [ main::i#2 main::i#1 ] Uplifting [main] best 495 combination reg byte x [ main::j#2 main::j#1 ] zp ZP_SBYTE:2 [ main::i#2 main::i#1 ] reg byte a [ main::$2 ]
Uplifting [] best 495 combination Uplifting [] best 495 combination
MISSING FRAGMENTS MISSING FRAGMENTS
asby=_inc_asby asby=_inc_asby
cowo1_derefidx_xby=asby
cowo1_derefidx_yby=asby
xsby_lt_coby1_then_la1 xsby_lt_coby1_then_la1
ysby_lt_coby1_then_la1 ysby_lt_coby1_then_la1
Removing instruction jmp b1 Removing instruction jmp b1
@ -760,17 +789,18 @@ main: {
rts rts
//SEG15 main::@2 //SEG15 main::@2
b2: b2:
//SEG16 [5] *((const byte[]) main::screen#0 + (byte) main::j#2) ← (signed byte) main::i#2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) -- cowo1_derefidx_xby=zpsby1 //SEG16 [5] (byte~) main::$2 ← ((byte)) (signed byte) main::i#2 [ main::i#2 main::j#2 main::$2 ] ( main:0 [ main::i#2 main::j#2 main::$2 ] ) -- aby=_byte_zpsby1
lda i lda i
//SEG17 [6] *((const byte[]) main::screen#0 + (byte) main::j#2) ← (byte~) main::$2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) -- cowo1_derefidx_xby=aby
sta screen,x sta screen,x
//SEG17 [6] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ] ( main:0 [ main::j#2 main::i#1 ] ) -- zpsby1=_inc_zpsby1 //SEG18 [7] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ] ( main:0 [ main::j#2 main::i#1 ] ) -- zpsby1=_inc_zpsby1
inc i inc i
//SEG18 [7] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] ( main:0 [ main::i#1 main::j#1 ] ) -- xby=_inc_xby //SEG19 [8] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] ( main:0 [ main::i#1 main::j#1 ] ) -- xby=_inc_xby
inx inx
//SEG19 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] //SEG20 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
b1_from_b2: b1_from_b2:
//SEG20 [2] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- register_copy //SEG21 [2] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- register_copy
//SEG21 [2] phi (signed byte) main::i#2 = (signed byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy //SEG22 [2] phi (signed byte) main::i#2 = (signed byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy
jmp b1 jmp b1
} }
@ -818,17 +848,18 @@ main: {
rts rts
//SEG15 main::@2 //SEG15 main::@2
b2: b2:
//SEG16 [5] *((const byte[]) main::screen#0 + (byte) main::j#2) ← (signed byte) main::i#2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) -- cowo1_derefidx_xby=zpsby1 //SEG16 [5] (byte~) main::$2 ← ((byte)) (signed byte) main::i#2 [ main::i#2 main::j#2 main::$2 ] ( main:0 [ main::i#2 main::j#2 main::$2 ] ) -- aby=_byte_zpsby1
lda i lda i
//SEG17 [6] *((const byte[]) main::screen#0 + (byte) main::j#2) ← (byte~) main::$2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) -- cowo1_derefidx_xby=aby
sta screen,x sta screen,x
//SEG17 [6] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ] ( main:0 [ main::j#2 main::i#1 ] ) -- zpsby1=_inc_zpsby1 //SEG18 [7] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ] ( main:0 [ main::j#2 main::i#1 ] ) -- zpsby1=_inc_zpsby1
inc i inc i
//SEG18 [7] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] ( main:0 [ main::i#1 main::j#1 ] ) -- xby=_inc_xby //SEG19 [8] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] ( main:0 [ main::i#1 main::j#1 ] ) -- xby=_inc_xby
inx inx
//SEG19 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] //SEG20 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
b1_from_b2: b1_from_b2:
//SEG20 [2] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- register_copy //SEG21 [2] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- register_copy
//SEG21 [2] phi (signed byte) main::i#2 = (signed byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy //SEG22 [2] phi (signed byte) main::i#2 = (signed byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy
jmp b1 jmp b1
} }
@ -875,16 +906,17 @@ main: {
rts rts
//SEG15 main::@2 //SEG15 main::@2
b2: b2:
//SEG16 [5] *((const byte[]) main::screen#0 + (byte) main::j#2) ← (signed byte) main::i#2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) -- cowo1_derefidx_xby=zpsby1 //SEG16 [5] (byte~) main::$2 ← ((byte)) (signed byte) main::i#2 [ main::i#2 main::j#2 main::$2 ] ( main:0 [ main::i#2 main::j#2 main::$2 ] ) -- aby=_byte_zpsby1
lda i lda i
//SEG17 [6] *((const byte[]) main::screen#0 + (byte) main::j#2) ← (byte~) main::$2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) -- cowo1_derefidx_xby=aby
sta screen,x sta screen,x
//SEG17 [6] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ] ( main:0 [ main::j#2 main::i#1 ] ) -- zpsby1=_inc_zpsby1 //SEG18 [7] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ] ( main:0 [ main::j#2 main::i#1 ] ) -- zpsby1=_inc_zpsby1
inc i inc i
//SEG18 [7] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] ( main:0 [ main::i#1 main::j#1 ] ) -- xby=_inc_xby //SEG19 [8] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] ( main:0 [ main::i#1 main::j#1 ] ) -- xby=_inc_xby
inx inx
//SEG19 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] //SEG20 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
//SEG20 [2] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- register_copy //SEG21 [2] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- register_copy
//SEG21 [2] phi (signed byte) main::i#2 = (signed byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy //SEG22 [2] phi (signed byte) main::i#2 = (signed byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy
jmp b1 jmp b1
} }
@ -893,20 +925,22 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(void()) main() (void()) main()
(byte~) main::$2 reg byte a 22.0
(label) main::@1 (label) main::@1
(label) main::@2 (label) main::@2
(label) main::@return (label) main::@return
(signed byte) main::i (signed byte) main::i
(signed byte) main::i#1 i zp ZP_SBYTE:2 11.0 (signed byte) main::i#1 i zp ZP_SBYTE:2 11.0
(signed byte) main::i#2 i zp ZP_SBYTE:2 14.666666666666666 (signed byte) main::i#2 i zp ZP_SBYTE:2 11.0
(byte) main::j (byte) main::j
(byte) main::j#1 reg byte x 22.0 (byte) main::j#1 reg byte x 22.0
(byte) main::j#2 reg byte x 8.25 (byte) main::j#2 reg byte x 6.6000000000000005
(byte[]) main::screen (byte[]) main::screen
(const byte[]) main::screen#0 screen = (word/signed word) 1024 (const byte[]) main::screen#0 screen = ((byte*))(word/signed word) 1024
zp ZP_SBYTE:2 [ main::i#2 main::i#1 ] zp ZP_SBYTE:2 [ main::i#2 main::i#1 ]
reg byte x [ main::j#2 main::j#1 ] reg byte x [ main::j#2 main::j#1 ]
reg byte a [ main::$2 ]
FINAL CODE FINAL CODE
//SEG0 Basic Upstart //SEG0 Basic Upstart
@ -945,16 +979,17 @@ main: {
rts rts
//SEG15 main::@2 //SEG15 main::@2
b2: b2:
//SEG16 [5] *((const byte[]) main::screen#0 + (byte) main::j#2) ← (signed byte) main::i#2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) -- cowo1_derefidx_xby=zpsby1 //SEG16 [5] (byte~) main::$2 ← ((byte)) (signed byte) main::i#2 [ main::i#2 main::j#2 main::$2 ] ( main:0 [ main::i#2 main::j#2 main::$2 ] ) -- aby=_byte_zpsby1
lda i lda i
//SEG17 [6] *((const byte[]) main::screen#0 + (byte) main::j#2) ← (byte~) main::$2 [ main::i#2 main::j#2 ] ( main:0 [ main::i#2 main::j#2 ] ) -- cowo1_derefidx_xby=aby
sta screen,x sta screen,x
//SEG17 [6] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ] ( main:0 [ main::j#2 main::i#1 ] ) -- zpsby1=_inc_zpsby1 //SEG18 [7] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ] ( main:0 [ main::j#2 main::i#1 ] ) -- zpsby1=_inc_zpsby1
inc i inc i
//SEG18 [7] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] ( main:0 [ main::i#1 main::j#1 ] ) -- xby=_inc_xby //SEG19 [8] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] ( main:0 [ main::i#1 main::j#1 ] ) -- xby=_inc_xby
inx inx
//SEG19 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] //SEG20 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
//SEG20 [2] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- register_copy //SEG21 [2] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- register_copy
//SEG21 [2] phi (signed byte) main::i#2 = (signed byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy //SEG22 [2] phi (signed byte) main::i#2 = (signed byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy
jmp b1 jmp b1
} }

View File

@ -2,17 +2,19 @@
(label) @begin (label) @begin
(label) @end (label) @end
(void()) main() (void()) main()
(byte~) main::$2 reg byte a 22.0
(label) main::@1 (label) main::@1
(label) main::@2 (label) main::@2
(label) main::@return (label) main::@return
(signed byte) main::i (signed byte) main::i
(signed byte) main::i#1 i zp ZP_SBYTE:2 11.0 (signed byte) main::i#1 i zp ZP_SBYTE:2 11.0
(signed byte) main::i#2 i zp ZP_SBYTE:2 14.666666666666666 (signed byte) main::i#2 i zp ZP_SBYTE:2 11.0
(byte) main::j (byte) main::j
(byte) main::j#1 reg byte x 22.0 (byte) main::j#1 reg byte x 22.0
(byte) main::j#2 reg byte x 8.25 (byte) main::j#2 reg byte x 6.6000000000000005
(byte[]) main::screen (byte[]) main::screen
(const byte[]) main::screen#0 screen = (word/signed word) 1024 (const byte[]) main::screen#0 screen = ((byte*))(word/signed word) 1024
zp ZP_SBYTE:2 [ main::i#2 main::i#1 ] zp ZP_SBYTE:2 [ main::i#2 main::i#1 ]
reg byte x [ main::j#2 main::j#1 ] reg byte x [ main::j#2 main::j#1 ]
reg byte a [ main::$2 ]

View File

@ -19,7 +19,7 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
*((byte*) SCREEN) ← (byte/signed byte/word/signed word) 1 *((byte*) SCREEN) ← (byte/signed byte/word/signed word) 1
@ -36,7 +36,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
*((byte*) SCREEN) ← (byte/signed byte/word/signed word) 1 *((byte*) SCREEN) ← (byte/signed byte/word/signed word) 1
@ -55,7 +55,7 @@ Completing Phi functions...
Completing Phi functions... Completing Phi functions...
CONTROL FLOW GRAPH SSA CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 ) (byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 )
@ -74,7 +74,7 @@ main::@return: scope:[main] from main
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 ) (byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 )
@ -107,7 +107,7 @@ Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 ) (byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 )
@ -126,7 +126,7 @@ Alias (byte*) SCREEN#0 = (byte*) SCREEN#1 (byte*) SCREEN#2
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
*((byte*) SCREEN#0) ← (byte/signed byte/word/signed word) 1 *((byte*) SCREEN#0) ← (byte/signed byte/word/signed word) 1
@ -139,7 +139,7 @@ main::@return: scope:[main] from main
to:@end to:@end
@end: scope:[] from @1 @end: scope:[] from @1
Constant (const byte*) SCREEN#0 = 1024 Constant (const byte*) SCREEN#0 = ((byte*))1024
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
@ -160,7 +160,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024 (const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(void()) main() (void()) main()
(label) main::@return (label) main::@return
@ -376,7 +376,7 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) main() (void()) main()
(label) main::@return (label) main::@return

View File

@ -2,7 +2,7 @@
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) main() (void()) main()
(label) main::@return (label) main::@return

View File

@ -379,8 +379,8 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte*) COLORS ← (word) 55296 (byte*) COLORS ← ((byte*)) (word) 55296
(byte) FILL ← (byte/word/signed word) 230 (byte) FILL ← (byte/word/signed word) 230
(byte) numpoints ← (byte/signed byte/word/signed word) 6 (byte) numpoints ← (byte/signed byte/word/signed word) 6
(byte[]) XPOS ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } (byte[]) XPOS ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 }
@ -629,8 +629,8 @@ Removing empty block findcol::@15
Removing empty block findcol::@18 Removing empty block findcol::@18
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte*) COLORS ← (word) 55296 (byte*) COLORS ← ((byte*)) (word) 55296
(byte) FILL ← (byte/word/signed word) 230 (byte) FILL ← (byte/word/signed word) 230
(byte) numpoints ← (byte/signed byte/word/signed word) 6 (byte) numpoints ← (byte/signed byte/word/signed word) 6
(byte[]) XPOS ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } (byte[]) XPOS ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 }
@ -848,8 +848,8 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte*) COLORS ← (word) 55296 (byte*) COLORS ← ((byte*)) (word) 55296
(byte) FILL ← (byte/word/signed word) 230 (byte) FILL ← (byte/word/signed word) 230
(byte) numpoints ← (byte/signed byte/word/signed word) 6 (byte) numpoints ← (byte/signed byte/word/signed word) 6
(byte[]) XPOS ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } (byte[]) XPOS ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 }
@ -1093,8 +1093,8 @@ Completing Phi functions...
Completing Phi functions... Completing Phi functions...
CONTROL FLOW GRAPH SSA CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) COLORS#0 ← (word) 55296 (byte*) COLORS#0 ← ((byte*)) (word) 55296
(byte) FILL#0 ← (byte/word/signed word) 230 (byte) FILL#0 ← (byte/word/signed word) 230
(byte) numpoints#0 ← (byte/signed byte/word/signed word) 6 (byte) numpoints#0 ← (byte/signed byte/word/signed word) 6
(byte[]) XPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } (byte[]) XPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 }
@ -1547,8 +1547,8 @@ findcol::@17: scope:[findcol] from findcol::@8
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) COLORS#0 ← (word) 55296 (byte*) COLORS#0 ← ((byte*)) (word) 55296
(byte) FILL#0 ← (byte/word/signed word) 230 (byte) FILL#0 ← (byte/word/signed word) 230
(byte) numpoints#0 ← (byte/signed byte/word/signed word) 6 (byte) numpoints#0 ← (byte/signed byte/word/signed word) 6
(byte[]) XPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } (byte[]) XPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 }
@ -2394,8 +2394,8 @@ Culled Empty Block (label) @6
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) COLORS#0 ← (word) 55296 (byte*) COLORS#0 ← ((byte*)) (word) 55296
(byte) FILL#0 ← (byte/word/signed word) 230 (byte) FILL#0 ← (byte/word/signed word) 230
(byte) numpoints#0 ← (byte/signed byte/word/signed word) 6 (byte) numpoints#0 ← (byte/signed byte/word/signed word) 6
(byte[]) XPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } (byte[]) XPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 }
@ -2855,8 +2855,8 @@ Inversing boolean not (boolean~) findcol::$17 ← (byte) findcol::diff#6 >= (byt
Succesful SSA optimization Pass2UnaryNotSimplification Succesful SSA optimization Pass2UnaryNotSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) COLORS#0 ← (word) 55296 (byte*) COLORS#0 ← ((byte*)) (word) 55296
(byte) FILL#0 ← (byte/word/signed word) 230 (byte) FILL#0 ← (byte/word/signed word) 230
(byte) numpoints#0 ← (byte/signed byte/word/signed word) 6 (byte) numpoints#0 ← (byte/signed byte/word/signed word) 6
(byte[]) XPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } (byte[]) XPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 }
@ -3378,8 +3378,8 @@ Alias (byte) findcol::mincol#2 = (byte) findcol::mincol#3 (byte) findcol::return
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) COLORS#0 ← (word) 55296 (byte*) COLORS#0 ← ((byte*)) (word) 55296
(byte) FILL#0 ← (byte/word/signed word) 230 (byte) FILL#0 ← (byte/word/signed word) 230
(byte) numpoints#0 ← (byte/signed byte/word/signed word) 6 (byte) numpoints#0 ← (byte/signed byte/word/signed word) 6
(byte[]) XPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } (byte[]) XPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 }
@ -3678,8 +3678,8 @@ Alias (byte) findcol::mincol#10 = (byte) findcol::mincol#11 (byte) findcol::minc
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) COLORS#0 ← (word) 55296 (byte*) COLORS#0 ← ((byte*)) (word) 55296
(byte) FILL#0 ← (byte/word/signed word) 230 (byte) FILL#0 ← (byte/word/signed word) 230
(byte) numpoints#0 ← (byte/signed byte/word/signed word) 6 (byte) numpoints#0 ← (byte/signed byte/word/signed word) 6
(byte[]) XPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } (byte[]) XPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 }
@ -3939,8 +3939,8 @@ Self Phi Eliminated (byte[]) COLS#1
Succesful SSA optimization Pass2SelfPhiElimination Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) COLORS#0 ← (word) 55296 (byte*) COLORS#0 ← ((byte*)) (word) 55296
(byte) FILL#0 ← (byte/word/signed word) 230 (byte) FILL#0 ← (byte/word/signed word) 230
(byte) numpoints#0 ← (byte/signed byte/word/signed word) 6 (byte) numpoints#0 ← (byte/signed byte/word/signed word) 6
(byte[]) XPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } (byte[]) XPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 }
@ -4195,8 +4195,8 @@ Redundant Phi (byte[]) COLS#1 (byte[]) COLS#11
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) COLORS#0 ← (word) 55296 (byte*) COLORS#0 ← ((byte*)) (word) 55296
(byte) FILL#0 ← (byte/word/signed word) 230 (byte) FILL#0 ← (byte/word/signed word) 230
(byte) numpoints#0 ← (byte/signed byte/word/signed word) 6 (byte) numpoints#0 ← (byte/signed byte/word/signed word) 6
(byte[]) XPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } (byte[]) XPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 }
@ -4428,8 +4428,8 @@ Simple Condition (boolean~) findcol::$19 if((byte) findcol::i#1<(byte) numpoints
Succesful SSA optimization Pass2ConditionalJumpSimplification Succesful SSA optimization Pass2ConditionalJumpSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) COLORS#0 ← (word) 55296 (byte*) COLORS#0 ← ((byte*)) (word) 55296
(byte) FILL#0 ← (byte/word/signed word) 230 (byte) FILL#0 ← (byte/word/signed word) 230
(byte) numpoints#0 ← (byte/signed byte/word/signed word) 6 (byte) numpoints#0 ← (byte/signed byte/word/signed word) 6
(byte[]) XPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } (byte[]) XPOS#0 ← { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 }
@ -4628,8 +4628,8 @@ findcol::@17: scope:[findcol] from findcol::@8
to:@end to:@end
@end: scope:[] from @5 @end: scope:[] from @5
Constant (const byte*) SCREEN#0 = 1024 Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte*) COLORS#0 = 55296 Constant (const byte*) COLORS#0 = ((byte*))55296
Constant (const byte) FILL#0 = 230 Constant (const byte) FILL#0 = 230
Constant (const byte) numpoints#0 = 6 Constant (const byte) numpoints#0 = 6
Constant (const byte[]) XPOS#0 = { 5, 15, 6, 34, 21, 31 } Constant (const byte[]) XPOS#0 = { 5, 15, 6, 34, 21, 31 }
@ -5995,13 +5995,13 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) COLORS (byte*) COLORS
(const byte*) COLORS#0 = (word) 55296 (const byte*) COLORS#0 = ((byte*))(word) 55296
(byte[]) COLS (byte[]) COLS
(const byte[]) COLS#0 = { (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 7 } (const byte[]) COLS#0 = { (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 7 }
(byte) FILL (byte) FILL
(const byte) FILL#0 = (byte/word/signed word) 230 (const byte) FILL#0 = (byte/word/signed word) 230
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024 (const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(byte[]) XPOS (byte[]) XPOS
(const byte[]) XPOS#0 = { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } (const byte[]) XPOS#0 = { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 }
(byte[]) YPOS (byte[]) YPOS
@ -10402,13 +10402,13 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) COLORS (byte*) COLORS
(const byte*) COLORS#0 COLORS = (word) 55296 (const byte*) COLORS#0 COLORS = ((byte*))(word) 55296
(byte[]) COLS (byte[]) COLS
(const byte[]) COLS#0 COLS = { (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 7 } (const byte[]) COLS#0 COLS = { (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 7 }
(byte) FILL (byte) FILL
(const byte) FILL#0 FILL = (byte/word/signed word) 230 (const byte) FILL#0 FILL = (byte/word/signed word) 230
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte[]) XPOS (byte[]) XPOS
(const byte[]) XPOS#0 XPOS = { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } (const byte[]) XPOS#0 XPOS = { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 }
(byte[]) YPOS (byte[]) YPOS

View File

@ -2,13 +2,13 @@
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) COLORS (byte*) COLORS
(const byte*) COLORS#0 COLORS = (word) 55296 (const byte*) COLORS#0 COLORS = ((byte*))(word) 55296
(byte[]) COLS (byte[]) COLS
(const byte[]) COLS#0 COLS = { (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 7 } (const byte[]) COLS#0 COLS = { (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 7 }
(byte) FILL (byte) FILL
(const byte) FILL#0 FILL = (byte/word/signed word) 230 (const byte) FILL#0 FILL = (byte/word/signed word) 230
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte[]) XPOS (byte[]) XPOS
(const byte[]) XPOS#0 XPOS = { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 } (const byte[]) XPOS#0 XPOS = { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 6, (byte/signed byte/word/signed word) 34, (byte/signed byte/word/signed word) 21, (byte/signed byte/word/signed word) 31 }
(byte[]) YPOS (byte[]) YPOS

View File

@ -91,9 +91,9 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(word/signed word~) $0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40 (word/signed word~) $0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40
(byte*) SCREEN2 ← (word/signed word~) $0 (byte*) SCREEN2 ← ((byte*)) (word/signed word~) $0
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 0 (byte) main::i ← (byte/signed byte/word/signed word) 0
@ -154,9 +154,9 @@ Removing empty block @2
Removing empty block sum2::@1 Removing empty block sum2::@1
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(word/signed word~) $0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40 (word/signed word~) $0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40
(byte*) SCREEN2 ← (word/signed word~) $0 (byte*) SCREEN2 ← ((byte*)) (word/signed word~) $0
to:@3 to:@3
main: scope:[main] from main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 0 (byte) main::i ← (byte/signed byte/word/signed word) 0
@ -204,9 +204,9 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024 (byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(word/signed word~) $0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40 (word/signed word~) $0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40
(byte*) SCREEN2 ← (word/signed word~) $0 (byte*) SCREEN2 ← ((byte*)) (word/signed word~) $0
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte) main::i ← (byte/signed byte/word/signed word) 0 (byte) main::i ← (byte/signed byte/word/signed word) 0
@ -271,9 +271,9 @@ Completing Phi functions...
Completing Phi functions... Completing Phi functions...
CONTROL FLOW GRAPH SSA CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(word/signed word~) $0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40 (word/signed word~) $0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40
(byte*) SCREEN2#0 ← (word/signed word~) $0 (byte*) SCREEN2#0 ← ((byte*)) (word/signed word~) $0
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte*) SCREEN2#4 ← phi( @3/(byte*) SCREEN2#5 ) (byte*) SCREEN2#4 ← phi( @3/(byte*) SCREEN2#5 )
@ -356,9 +356,9 @@ sum2::@return: scope:[sum2] from sum2
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(word/signed word~) $0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40 (word/signed word~) $0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40
(byte*) SCREEN2#0 ← (word/signed word~) $0 (byte*) SCREEN2#0 ← ((byte*)) (word/signed word~) $0
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte*) SCREEN2#4 ← phi( @3/(byte*) SCREEN2#5 ) (byte*) SCREEN2#4 ← phi( @3/(byte*) SCREEN2#5 )
@ -522,9 +522,9 @@ Culled Empty Block (label) @4
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(word/signed word~) $0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40 (word/signed word~) $0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40
(byte*) SCREEN2#0 ← (word/signed word~) $0 (byte*) SCREEN2#0 ← ((byte*)) (word/signed word~) $0
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte*) SCREEN2#4 ← phi( @3/(byte*) SCREEN2#5 ) (byte*) SCREEN2#4 ← phi( @3/(byte*) SCREEN2#5 )
@ -614,7 +614,7 @@ Not aliassing across scopes: sum2::b#0 main::$3
Not aliassing across scopes: sum2::c#0 main::$4 Not aliassing across scopes: sum2::c#0 main::$4
Not aliassing across scopes: main::$5 sum2::return#3 Not aliassing across scopes: main::$5 sum2::return#3
Alias (byte*) SCREEN#0 = (byte*) SCREEN#3 (byte*) SCREEN#5 Alias (byte*) SCREEN#0 = (byte*) SCREEN#3 (byte*) SCREEN#5
Alias (byte*) SCREEN2#0 = (byte*) SCREEN2#4 (byte*) SCREEN2#5 (word/signed word~) $0 Alias (byte*) SCREEN2#0 = (byte*) SCREEN2#4 (byte*) SCREEN2#5
Alias (byte) sum::return#0 = (byte) sum::return#2 (byte) sum::return#3 (byte) sum::return#1 (byte~) sum::$1 (byte) sum::return#4 Alias (byte) sum::return#0 = (byte) sum::return#2 (byte) sum::return#3 (byte) sum::return#1 (byte~) sum::$1 (byte) sum::return#4
Alias (byte*) SCREEN#1 = (byte*) SCREEN#2 (byte*) SCREEN#4 Alias (byte*) SCREEN#1 = (byte*) SCREEN#2 (byte*) SCREEN#4
Alias (byte) main::i#2 = (byte) main::i#3 (byte) main::i#4 Alias (byte) main::i#2 = (byte) main::i#3 (byte) main::i#4
@ -629,8 +629,9 @@ Alias (byte) sum2::c#0 = (byte) sum2::c#1
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN2#0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40 (word/signed word~) $0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40
(byte*) SCREEN2#0 ← ((byte*)) (word/signed word~) $0
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -698,8 +699,9 @@ Self Phi Eliminated (byte*) SCREEN2#1
Succesful SSA optimization Pass2SelfPhiElimination Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN2#0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40 (word/signed word~) $0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40
(byte*) SCREEN2#0 ← ((byte*)) (word/signed word~) $0
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -759,8 +761,9 @@ Redundant Phi (byte*) SCREEN2#1 (byte*) SCREEN2#0
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN2#0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40 (word/signed word~) $0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40
(byte*) SCREEN2#0 ← ((byte*)) (word/signed word~) $0
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -817,8 +820,9 @@ Simple Condition (boolean~) main::$6 if((byte) main::i#1!=(byte/signed byte/word
Succesful SSA optimization Pass2ConditionalJumpSimplification Succesful SSA optimization Pass2ConditionalJumpSimplification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024 (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN2#0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40 (word/signed word~) $0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40
(byte*) SCREEN2#0 ← ((byte*)) (word/signed word~) $0
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0 (byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -870,11 +874,66 @@ sum2::@return: scope:[sum2] from sum2
to:@end to:@end
@end: scope:[] from @3 @end: scope:[] from @3
Constant (const byte*) SCREEN#0 = 1024 Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte*) SCREEN2#0 = 1024+40 Constant (const word/signed word) $0 = 1024+40
Constant (const byte) main::i#0 = 0 Constant (const byte) main::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN2#0 ← ((byte*)) (const word/signed word) $0
to:@3
main: scope:[main] from @3
to:main::@1
main::@1: scope:[main] from main main::@4
(byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@4/(byte) main::i#1 )
(byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1
(byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2
(byte) sum::a#0 ← (byte) main::i#2
(byte) sum::b#0 ← (byte~) main::$0
(byte) sum::c#0 ← (byte~) main::$1
call sum param-assignment
to:main::@3
main::@3: scope:[main] from main::@1
(byte~) main::$2 ← (byte) sum::return#0
*((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$2
(byte~) main::$3 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1
(byte~) main::$4 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2
(byte) sum2::a#0 ← (byte) main::i#2
(byte) sum2::b#0 ← (byte~) main::$3
(byte) sum2::c#0 ← (byte~) main::$4
call sum2 param-assignment
to:main::@4
main::@4: scope:[main] from main::@3
(byte~) main::$5 ← (byte) sum2::return#0
*((byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$5
(byte) main::i#1 ← ++ (byte) main::i#2
if((byte) main::i#1!=(byte/signed byte/word/signed word) 11) goto main::@1
to:main::@return
main::@return: scope:[main] from main::@4
return
to:@return
sum: scope:[sum] from main::@1
(byte~) sum::$0 ← (byte) sum::a#0 + (byte) sum::b#0
(byte) sum::return#0 ← (byte~) sum::$0 + (byte) sum::c#0
to:sum::@return
sum::@return: scope:[sum] from sum
return
to:@return
sum2: scope:[sum2] from main::@3
(byte~) sum2::$0 ← (byte) sum2::a#0 + (byte) sum2::b#0
(byte) sum2::return#0 ← (byte~) sum2::$0 + (byte) sum2::c#0
to:sum2::@return
sum2::@return: scope:[sum2] from sum2
return
to:@return
@3: scope:[] from @begin
call main param-assignment
to:@end
@end: scope:[] from @3
Constant (const byte*) SCREEN2#0 = ((byte*))$0
Succesful SSA optimization Pass2ConstantIdentification
CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@3 to:@3
main: scope:[main] from @3 main: scope:[main] from @3
@ -948,6 +1007,7 @@ Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0
Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0
Constant inlined $0 = (word/signed word) 1024+(byte/signed byte/word/signed word) 40
Constant inlined main::i#0 = (byte/signed byte/word/signed word) 0 Constant inlined main::i#0 = (byte/signed byte/word/signed word) 0
Succesful SSA optimization Pass2ConstantInlining Succesful SSA optimization Pass2ConstantInlining
CONTROL FLOW GRAPH CONTROL FLOW GRAPH
@ -1007,9 +1067,9 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024 (const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(byte*) SCREEN2 (byte*) SCREEN2
(const byte*) SCREEN2#0 = (word/signed word) 1024+(byte/signed byte/word/signed word) 40 (const byte*) SCREEN2#0 = ((byte*))(word/signed word) 1024+(byte/signed byte/word/signed word) 40
(void()) main() (void()) main()
(byte~) main::$0 (byte~) main::$0
(byte~) main::$1 (byte~) main::$1
@ -2081,9 +2141,9 @@ FINAL SYMBOL TABLE
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte*) SCREEN2 (byte*) SCREEN2
(const byte*) SCREEN2#0 SCREEN2 = (word/signed word) 1024+(byte/signed byte/word/signed word) 40 (const byte*) SCREEN2#0 SCREEN2 = ((byte*))(word/signed word) 1024+(byte/signed byte/word/signed word) 40
(void()) main() (void()) main()
(byte~) main::$0 reg byte x 7.333333333333333 (byte~) main::$0 reg byte x 7.333333333333333
(byte~) main::$1 reg byte a 7.333333333333333 (byte~) main::$1 reg byte a 7.333333333333333

View File

@ -2,9 +2,9 @@
(label) @begin (label) @begin
(label) @end (label) @end
(byte*) SCREEN (byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024 (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte*) SCREEN2 (byte*) SCREEN2
(const byte*) SCREEN2#0 SCREEN2 = (word/signed word) 1024+(byte/signed byte/word/signed word) 40 (const byte*) SCREEN2#0 SCREEN2 = ((byte*))(word/signed word) 1024+(byte/signed byte/word/signed word) 40
(void()) main() (void()) main()
(byte~) main::$0 reg byte x 7.333333333333333 (byte~) main::$0 reg byte x 7.333333333333333
(byte~) main::$1 reg byte a 7.333333333333333 (byte~) main::$1 reg byte a 7.333333333333333

View File

@ -16,7 +16,7 @@ main::@2: scope:[main] from main::@1 main::@4
main::@3: scope:[main] from main::@2 main::@3 main::@3: scope:[main] from main::@2 main::@3
[4] (byte) main::k#2 ← phi( main::@2/(byte/signed byte/word/signed word) 0 main::@3/(byte) main::k#1 ) [ main::j#6 main::i#4 main::k#2 ] ( main:0 [ main::j#6 main::i#4 main::k#2 ] ) [4] (byte) main::k#2 ← phi( main::@2/(byte/signed byte/word/signed word) 0 main::@3/(byte) main::k#1 ) [ main::j#6 main::i#4 main::k#2 ] ( main:0 [ main::j#6 main::i#4 main::k#2 ] )
[5] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ) [5] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] )
[6] (word) main::w#0 ← _word_ (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) [6] (word) main::w#0 ← ((word)) (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] )
[7] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ) [7] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] )
[8] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ] ( main:0 [ main::j#6 main::i#4 main::k#2 ] ) [8] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ] ( main:0 [ main::j#6 main::i#4 main::k#2 ] )
[9] (byte) main::k#1 ← ++ (byte) main::k#2 [ main::j#6 main::i#4 main::k#1 ] ( main:0 [ main::j#6 main::i#4 main::k#1 ] ) [9] (byte) main::k#1 ← ++ (byte) main::k#2 [ main::j#6 main::i#4 main::k#1 ] ( main:0 [ main::j#6 main::i#4 main::k#1 ] )

View File

@ -23,7 +23,7 @@ main::@2:
main::@3: main::@3:
(byte*~) main::$0 ← (byte*) main::zpptr + (byte) main::i (byte*~) main::$0 ← (byte*) main::zpptr + (byte) main::i
(byte*) main::zpptr2 ← (byte*~) main::$0 (byte*) main::zpptr2 ← (byte*~) main::$0
(word~) main::$1 ← _word_ (byte) main::j (word~) main::$1 ← ((word)) (byte) main::j
(word) main::w ← (word~) main::$1 (word) main::w ← (word~) main::$1
(byte*~) main::$2 ← (byte*) main::zpptr2 + (word) main::w (byte*~) main::$2 ← (byte*) main::zpptr2 + (word) main::w
(byte*) main::zpptr2 ← (byte*~) main::$2 (byte*) main::zpptr2 ← (byte*~) main::$2
@ -65,7 +65,7 @@ INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(byte*) main::zpptr ← (word/signed word) 4096 (byte*) main::zpptr ← ((byte*)) (word/signed word) 4096
(byte) main::j ← (byte/signed byte/word/signed word) 0 (byte) main::j ← (byte/signed byte/word/signed word) 0
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@5 main::@1: scope:[main] from main main::@5
@ -77,7 +77,7 @@ main::@2: scope:[main] from main::@1 main::@4
main::@3: scope:[main] from main::@2 main::@3 main::@3: scope:[main] from main::@2 main::@3
(byte*~) main::$0 ← (byte*) main::zpptr + (byte) main::i (byte*~) main::$0 ← (byte*) main::zpptr + (byte) main::i
(byte*) main::zpptr2 ← (byte*~) main::$0 (byte*) main::zpptr2 ← (byte*~) main::$0
(word~) main::$1 ← _word_ (byte) main::j (word~) main::$1 ← ((word)) (byte) main::j
(word) main::w ← (word~) main::$1 (word) main::w ← (word~) main::$1
(byte*~) main::$2 ← (byte*) main::zpptr2 + (word) main::w (byte*~) main::$2 ← (byte*) main::zpptr2 + (word) main::w
(byte*) main::zpptr2 ← (byte*~) main::$2 (byte*) main::zpptr2 ← (byte*~) main::$2
@ -111,7 +111,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(byte*) main::zpptr ← (word/signed word) 4096 (byte*) main::zpptr ← ((byte*)) (word/signed word) 4096
(byte) main::j ← (byte/signed byte/word/signed word) 0 (byte) main::j ← (byte/signed byte/word/signed word) 0
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@5 main::@1: scope:[main] from main main::@5
@ -123,7 +123,7 @@ main::@2: scope:[main] from main::@1 main::@4
main::@3: scope:[main] from main::@2 main::@3 main::@3: scope:[main] from main::@2 main::@3
(byte*~) main::$0 ← (byte*) main::zpptr + (byte) main::i (byte*~) main::$0 ← (byte*) main::zpptr + (byte) main::i
(byte*) main::zpptr2 ← (byte*~) main::$0 (byte*) main::zpptr2 ← (byte*~) main::$0
(word~) main::$1 ← _word_ (byte) main::j (word~) main::$1 ← ((word)) (byte) main::j
(word) main::w ← (word~) main::$1 (word) main::w ← (word~) main::$1
(byte*~) main::$2 ← (byte*) main::zpptr2 + (word) main::w (byte*~) main::$2 ← (byte*) main::zpptr2 + (word) main::w
(byte*) main::zpptr2 ← (byte*~) main::$2 (byte*) main::zpptr2 ← (byte*~) main::$2
@ -156,7 +156,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) main::zpptr ← (word/signed word) 4096 (byte*) main::zpptr ← ((byte*)) (word/signed word) 4096
(byte) main::j ← (byte/signed byte/word/signed word) 0 (byte) main::j ← (byte/signed byte/word/signed word) 0
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@5 main::@1: scope:[main] from main main::@5
@ -168,7 +168,7 @@ main::@2: scope:[main] from main::@1 main::@4
main::@3: scope:[main] from main::@2 main::@3 main::@3: scope:[main] from main::@2 main::@3
(byte*~) main::$0 ← (byte*) main::zpptr + (byte) main::i (byte*~) main::$0 ← (byte*) main::zpptr + (byte) main::i
(byte*) main::zpptr2 ← (byte*~) main::$0 (byte*) main::zpptr2 ← (byte*~) main::$0
(word~) main::$1 ← _word_ (byte) main::j (word~) main::$1 ← ((word)) (byte) main::j
(word) main::w ← (word~) main::$1 (word) main::w ← (word~) main::$1
(byte*~) main::$2 ← (byte*) main::zpptr2 + (word) main::w (byte*~) main::$2 ← (byte*) main::zpptr2 + (word) main::w
(byte*) main::zpptr2 ← (byte*~) main::$2 (byte*) main::zpptr2 ← (byte*~) main::$2
@ -205,7 +205,7 @@ CONTROL FLOW GRAPH SSA
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) main::zpptr#0 ← (word/signed word) 4096 (byte*) main::zpptr#0 ← ((byte*)) (word/signed word) 4096
(byte) main::j#0 ← (byte/signed byte/word/signed word) 0 (byte) main::j#0 ← (byte/signed byte/word/signed word) 0
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@5 main::@1: scope:[main] from main main::@5
@ -226,7 +226,7 @@ main::@3: scope:[main] from main::@2 main::@3
(byte*) main::zpptr#1 ← phi( main::@2/(byte*) main::zpptr#2 main::@3/(byte*) main::zpptr#1 ) (byte*) main::zpptr#1 ← phi( main::@2/(byte*) main::zpptr#2 main::@3/(byte*) main::zpptr#1 )
(byte*~) main::$0 ← (byte*) main::zpptr#1 + (byte) main::i#2 (byte*~) main::$0 ← (byte*) main::zpptr#1 + (byte) main::i#2
(byte*) main::zpptr2#0 ← (byte*~) main::$0 (byte*) main::zpptr2#0 ← (byte*~) main::$0
(word~) main::$1 ← _word_ (byte) main::j#2 (word~) main::$1 ← ((word)) (byte) main::j#2
(word) main::w#0 ← (word~) main::$1 (word) main::w#0 ← (word~) main::$1
(byte*~) main::$2 ← (byte*) main::zpptr2#0 + (word) main::w#0 (byte*~) main::$2 ← (byte*) main::zpptr2#0 + (word) main::w#0
(byte*) main::zpptr2#1 ← (byte*~) main::$2 (byte*) main::zpptr2#1 ← (byte*~) main::$2
@ -264,7 +264,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) main::zpptr#0 ← (word/signed word) 4096 (byte*) main::zpptr#0 ← ((byte*)) (word/signed word) 4096
(byte) main::j#0 ← (byte/signed byte/word/signed word) 0 (byte) main::j#0 ← (byte/signed byte/word/signed word) 0
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@5 main::@1: scope:[main] from main main::@5
@ -285,7 +285,7 @@ main::@3: scope:[main] from main::@2 main::@3
(byte*) main::zpptr#1 ← phi( main::@2/(byte*) main::zpptr#2 main::@3/(byte*) main::zpptr#1 ) (byte*) main::zpptr#1 ← phi( main::@2/(byte*) main::zpptr#2 main::@3/(byte*) main::zpptr#1 )
(byte*~) main::$0 ← (byte*) main::zpptr#1 + (byte) main::i#2 (byte*~) main::$0 ← (byte*) main::zpptr#1 + (byte) main::i#2
(byte*) main::zpptr2#0 ← (byte*~) main::$0 (byte*) main::zpptr2#0 ← (byte*~) main::$0
(word~) main::$1 ← _word_ (byte) main::j#2 (word~) main::$1 ← ((word)) (byte) main::j#2
(word) main::w#0 ← (word~) main::$1 (word) main::w#0 ← (word~) main::$1
(byte*~) main::$2 ← (byte*) main::zpptr2#0 + (word) main::w#0 (byte*~) main::$2 ← (byte*) main::zpptr2#0 + (word) main::w#0
(byte*) main::zpptr2#1 ← (byte*~) main::$2 (byte*) main::zpptr2#1 ← (byte*~) main::$2
@ -374,7 +374,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) main::zpptr#0 ← (word/signed word) 4096 (byte*) main::zpptr#0 ← ((byte*)) (word/signed word) 4096
(byte) main::j#0 ← (byte/signed byte/word/signed word) 0 (byte) main::j#0 ← (byte/signed byte/word/signed word) 0
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@5 main::@1: scope:[main] from main main::@5
@ -395,7 +395,7 @@ main::@3: scope:[main] from main::@2 main::@3
(byte*) main::zpptr#1 ← phi( main::@2/(byte*) main::zpptr#2 main::@3/(byte*) main::zpptr#1 ) (byte*) main::zpptr#1 ← phi( main::@2/(byte*) main::zpptr#2 main::@3/(byte*) main::zpptr#1 )
(byte*~) main::$0 ← (byte*) main::zpptr#1 + (byte) main::i#2 (byte*~) main::$0 ← (byte*) main::zpptr#1 + (byte) main::i#2
(byte*) main::zpptr2#0 ← (byte*~) main::$0 (byte*) main::zpptr2#0 ← (byte*~) main::$0
(word~) main::$1 ← _word_ (byte) main::j#2 (word~) main::$1 ← ((word)) (byte) main::j#2
(word) main::w#0 ← (word~) main::$1 (word) main::w#0 ← (word~) main::$1
(byte*~) main::$2 ← (byte*) main::zpptr2#0 + (word) main::w#0 (byte*~) main::$2 ← (byte*) main::zpptr2#0 + (word) main::w#0
(byte*) main::zpptr2#1 ← (byte*~) main::$2 (byte*) main::zpptr2#1 ← (byte*~) main::$2
@ -438,7 +438,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) main::zpptr#0 ← (word/signed word) 4096 (byte*) main::zpptr#0 ← ((byte*)) (word/signed word) 4096
(byte) main::j#0 ← (byte/signed byte/word/signed word) 0 (byte) main::j#0 ← (byte/signed byte/word/signed word) 0
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@5 main::@1: scope:[main] from main main::@5
@ -458,7 +458,7 @@ main::@3: scope:[main] from main::@2 main::@3
(byte) main::i#2 ← phi( main::@2/(byte) main::i#4 main::@3/(byte) main::i#2 ) (byte) main::i#2 ← phi( main::@2/(byte) main::i#4 main::@3/(byte) main::i#2 )
(byte*) main::zpptr#1 ← phi( main::@2/(byte*) main::zpptr#2 main::@3/(byte*) main::zpptr#1 ) (byte*) main::zpptr#1 ← phi( main::@2/(byte*) main::zpptr#2 main::@3/(byte*) main::zpptr#1 )
(byte*) main::zpptr2#0 ← (byte*) main::zpptr#1 + (byte) main::i#2 (byte*) main::zpptr2#0 ← (byte*) main::zpptr#1 + (byte) main::i#2
(word) main::w#0 ← _word_ (byte) main::j#2 (word) main::w#0 ← ((word)) (byte) main::j#2
(byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0
*((byte*) main::zpptr2#1) ← (byte) main::k#2 *((byte*) main::zpptr2#1) ← (byte) main::k#2
(byte) main::k#1 ← ++ (byte) main::k#2 (byte) main::k#1 ← ++ (byte) main::k#2
@ -491,7 +491,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) main::zpptr#0 ← (word/signed word) 4096 (byte*) main::zpptr#0 ← ((byte*)) (word/signed word) 4096
(byte) main::j#0 ← (byte/signed byte/word/signed word) 0 (byte) main::j#0 ← (byte/signed byte/word/signed word) 0
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@5 main::@1: scope:[main] from main main::@5
@ -511,7 +511,7 @@ main::@3: scope:[main] from main::@2 main::@3
(byte) main::i#2 ← phi( main::@2/(byte) main::i#4 ) (byte) main::i#2 ← phi( main::@2/(byte) main::i#4 )
(byte*) main::zpptr#1 ← phi( main::@2/(byte*) main::zpptr#2 ) (byte*) main::zpptr#1 ← phi( main::@2/(byte*) main::zpptr#2 )
(byte*) main::zpptr2#0 ← (byte*) main::zpptr#1 + (byte) main::i#2 (byte*) main::zpptr2#0 ← (byte*) main::zpptr#1 + (byte) main::i#2
(word) main::w#0 ← _word_ (byte) main::j#2 (word) main::w#0 ← ((word)) (byte) main::j#2
(byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0
*((byte*) main::zpptr2#1) ← (byte) main::k#2 *((byte*) main::zpptr2#1) ← (byte) main::k#2
(byte) main::k#1 ← ++ (byte) main::k#2 (byte) main::k#1 ← ++ (byte) main::k#2
@ -544,7 +544,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) main::zpptr#0 ← (word/signed word) 4096 (byte*) main::zpptr#0 ← ((byte*)) (word/signed word) 4096
(byte) main::j#0 ← (byte/signed byte/word/signed word) 0 (byte) main::j#0 ← (byte/signed byte/word/signed word) 0
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@5 main::@1: scope:[main] from main main::@5
@ -561,7 +561,7 @@ main::@2: scope:[main] from main::@1 main::@4
main::@3: scope:[main] from main::@2 main::@3 main::@3: scope:[main] from main::@2 main::@3
(byte) main::k#2 ← phi( main::@2/(byte) main::k#0 main::@3/(byte) main::k#1 ) (byte) main::k#2 ← phi( main::@2/(byte) main::k#0 main::@3/(byte) main::k#1 )
(byte*) main::zpptr2#0 ← (byte*) main::zpptr#2 + (byte) main::i#4 (byte*) main::zpptr2#0 ← (byte*) main::zpptr#2 + (byte) main::i#4
(word) main::w#0 ← _word_ (byte) main::j#4 (word) main::w#0 ← ((word)) (byte) main::j#4
(byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0
*((byte*) main::zpptr2#1) ← (byte) main::k#2 *((byte*) main::zpptr2#1) ← (byte) main::k#2
(byte) main::k#1 ← ++ (byte) main::k#2 (byte) main::k#1 ← ++ (byte) main::k#2
@ -594,7 +594,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
to:@1 to:@1
main: scope:[main] from @1 main: scope:[main] from @1
(byte*) main::zpptr#0 ← (word/signed word) 4096 (byte*) main::zpptr#0 ← ((byte*)) (word/signed word) 4096
(byte) main::j#0 ← (byte/signed byte/word/signed word) 0 (byte) main::j#0 ← (byte/signed byte/word/signed word) 0
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@5 main::@1: scope:[main] from main main::@5
@ -611,7 +611,7 @@ main::@2: scope:[main] from main::@1 main::@4
main::@3: scope:[main] from main::@2 main::@3 main::@3: scope:[main] from main::@2 main::@3
(byte) main::k#2 ← phi( main::@2/(byte) main::k#0 main::@3/(byte) main::k#1 ) (byte) main::k#2 ← phi( main::@2/(byte) main::k#0 main::@3/(byte) main::k#1 )
(byte*) main::zpptr2#0 ← (byte*) main::zpptr#2 + (byte) main::i#4 (byte*) main::zpptr2#0 ← (byte*) main::zpptr#2 + (byte) main::i#4
(word) main::w#0 ← _word_ (byte) main::j#4 (word) main::w#0 ← ((word)) (byte) main::j#4
(byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0
*((byte*) main::zpptr2#1) ← (byte) main::k#2 *((byte*) main::zpptr2#1) ← (byte) main::k#2
(byte) main::k#1 ← ++ (byte) main::k#2 (byte) main::k#1 ← ++ (byte) main::k#2
@ -633,7 +633,7 @@ main::@return: scope:[main] from main::@5
to:@end to:@end
@end: scope:[] from @1 @end: scope:[] from @1
Constant (const byte*) main::zpptr#0 = 4096 Constant (const byte*) main::zpptr#0 = ((byte*))4096
Constant (const byte) main::j#0 = 0 Constant (const byte) main::j#0 = 0
Constant (const byte) main::i#0 = 0 Constant (const byte) main::i#0 = 0
Constant (const byte) main::k#0 = 0 Constant (const byte) main::k#0 = 0
@ -655,7 +655,7 @@ main::@2: scope:[main] from main::@1 main::@4
main::@3: scope:[main] from main::@2 main::@3 main::@3: scope:[main] from main::@2 main::@3
(byte) main::k#2 ← phi( main::@2/(const byte) main::k#0 main::@3/(byte) main::k#1 ) (byte) main::k#2 ← phi( main::@2/(const byte) main::k#0 main::@3/(byte) main::k#1 )
(byte*) main::zpptr2#0 ← (byte*) main::zpptr#2 + (byte) main::i#4 (byte*) main::zpptr2#0 ← (byte*) main::zpptr#2 + (byte) main::i#4
(word) main::w#0 ← _word_ (byte) main::j#4 (word) main::w#0 ← ((word)) (byte) main::j#4
(byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0
*((byte*) main::zpptr2#1) ← (byte) main::k#2 *((byte*) main::zpptr2#1) ← (byte) main::k#2
(byte) main::k#1 ← ++ (byte) main::k#2 (byte) main::k#1 ← ++ (byte) main::k#2
@ -697,7 +697,7 @@ main::@2: scope:[main] from main::@1 main::@4
main::@3: scope:[main] from main::@2 main::@3 main::@3: scope:[main] from main::@2 main::@3
(byte) main::k#2 ← phi( main::@2/(const byte) main::k#0 main::@3/(byte) main::k#1 ) (byte) main::k#2 ← phi( main::@2/(const byte) main::k#0 main::@3/(byte) main::k#1 )
(byte*) main::zpptr2#0 ← (byte*) main::zpptr#2 + (byte) main::i#4 (byte*) main::zpptr2#0 ← (byte*) main::zpptr#2 + (byte) main::i#4
(word) main::w#0 ← _word_ (byte) main::j#4 (word) main::w#0 ← ((word)) (byte) main::j#4
(byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0
*((byte*) main::zpptr2#1) ← (byte) main::k#2 *((byte*) main::zpptr2#1) ← (byte) main::k#2
(byte) main::k#1 ← ++ (byte) main::k#2 (byte) main::k#1 ← ++ (byte) main::k#2
@ -737,7 +737,7 @@ main::@2: scope:[main] from main::@1 main::@4
main::@3: scope:[main] from main::@2 main::@3 main::@3: scope:[main] from main::@2 main::@3
(byte) main::k#2 ← phi( main::@2/(const byte) main::k#0 main::@3/(byte) main::k#1 ) (byte) main::k#2 ← phi( main::@2/(const byte) main::k#0 main::@3/(byte) main::k#1 )
(byte*) main::zpptr2#0 ← (byte*) main::zpptr#3 + (byte) main::i#4 (byte*) main::zpptr2#0 ← (byte*) main::zpptr#3 + (byte) main::i#4
(word) main::w#0 ← _word_ (byte) main::j#6 (word) main::w#0 ← ((word)) (byte) main::j#6
(byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0
*((byte*) main::zpptr2#1) ← (byte) main::k#2 *((byte*) main::zpptr2#1) ← (byte) main::k#2
(byte) main::k#1 ← ++ (byte) main::k#2 (byte) main::k#1 ← ++ (byte) main::k#2
@ -776,7 +776,7 @@ main::@2: scope:[main] from main::@1 main::@4
main::@3: scope:[main] from main::@2 main::@3 main::@3: scope:[main] from main::@2 main::@3
(byte) main::k#2 ← phi( main::@2/(const byte) main::k#0 main::@3/(byte) main::k#1 ) (byte) main::k#2 ← phi( main::@2/(const byte) main::k#0 main::@3/(byte) main::k#1 )
(byte*) main::zpptr2#0 ← (byte*) main::zpptr#3 + (byte) main::i#4 (byte*) main::zpptr2#0 ← (byte*) main::zpptr#3 + (byte) main::i#4
(word) main::w#0 ← _word_ (byte) main::j#6 (word) main::w#0 ← ((word)) (byte) main::j#6
(byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0
*((byte*) main::zpptr2#1) ← (byte) main::k#2 *((byte*) main::zpptr2#1) ← (byte) main::k#2
(byte) main::k#1 ← ++ (byte) main::k#2 (byte) main::k#1 ← ++ (byte) main::k#2
@ -814,7 +814,7 @@ main::@2: scope:[main] from main::@1 main::@4
main::@3: scope:[main] from main::@2 main::@3 main::@3: scope:[main] from main::@2 main::@3
(byte) main::k#2 ← phi( main::@2/(const byte) main::k#0 main::@3/(byte) main::k#1 ) (byte) main::k#2 ← phi( main::@2/(const byte) main::k#0 main::@3/(byte) main::k#1 )
(byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4
(word) main::w#0 ← _word_ (byte) main::j#6 (word) main::w#0 ← ((word)) (byte) main::j#6
(byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0
*((byte*) main::zpptr2#1) ← (byte) main::k#2 *((byte*) main::zpptr2#1) ← (byte) main::k#2
(byte) main::k#1 ← ++ (byte) main::k#2 (byte) main::k#1 ← ++ (byte) main::k#2
@ -862,7 +862,7 @@ main::@2: scope:[main] from main::@1 main::@4
main::@3: scope:[main] from main::@2 main::@3 main::@3: scope:[main] from main::@2 main::@3
(byte) main::k#2 ← phi( main::@2/(byte/signed byte/word/signed word) 0 main::@3/(byte) main::k#1 ) (byte) main::k#2 ← phi( main::@2/(byte/signed byte/word/signed word) 0 main::@3/(byte) main::k#1 )
(byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4
(word) main::w#0 ← _word_ (byte) main::j#6 (word) main::w#0 ← ((word)) (byte) main::j#6
(byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0
*((byte*) main::zpptr2#1) ← (byte) main::k#2 *((byte*) main::zpptr2#1) ← (byte) main::k#2
(byte) main::k#1 ← ++ (byte) main::k#2 (byte) main::k#1 ← ++ (byte) main::k#2
@ -907,7 +907,7 @@ FINAL SYMBOL TABLE
(word) main::w (word) main::w
(word) main::w#0 (word) main::w#0
(byte*) main::zpptr (byte*) main::zpptr
(const byte*) main::zpptr#0 = (word/signed word) 4096 (const byte*) main::zpptr#0 = ((byte*))(word/signed word) 4096
(byte*) main::zpptr2 (byte*) main::zpptr2
(byte*) main::zpptr2#0 (byte*) main::zpptr2#0
(byte*) main::zpptr2#1 (byte*) main::zpptr2#1
@ -935,7 +935,7 @@ main::@2: scope:[main] from main::@1 main::@8
main::@3: scope:[main] from main::@2 main::@9 main::@3: scope:[main] from main::@2 main::@9
(byte) main::k#2 ← phi( main::@2/(byte/signed byte/word/signed word) 0 main::@9/(byte~) main::k#3 ) (byte) main::k#2 ← phi( main::@2/(byte/signed byte/word/signed word) 0 main::@9/(byte~) main::k#3 )
(byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4
(word) main::w#0 ← _word_ (byte) main::j#6 (word) main::w#0 ← ((word)) (byte) main::j#6
(byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0
*((byte*) main::zpptr2#1) ← (byte) main::k#2 *((byte*) main::zpptr2#1) ← (byte) main::k#2
(byte) main::k#1 ← ++ (byte) main::k#2 (byte) main::k#1 ← ++ (byte) main::k#2
@ -993,7 +993,7 @@ main::@2: scope:[main] from main::@1 main::@8
main::@3: scope:[main] from main::@2 main::@9 main::@3: scope:[main] from main::@2 main::@9
[4] (byte) main::k#2 ← phi( main::@2/(byte/signed byte/word/signed word) 0 main::@9/(byte~) main::k#3 ) [ main::j#6 main::i#4 main::k#2 ] [4] (byte) main::k#2 ← phi( main::@2/(byte/signed byte/word/signed word) 0 main::@9/(byte~) main::k#3 ) [ main::j#6 main::i#4 main::k#2 ]
[5] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] [5] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ]
[6] (word) main::w#0 ← _word_ (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] [6] (word) main::w#0 ← ((word)) (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ]
[7] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] [7] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ]
[8] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ] [8] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ]
[9] (byte) main::k#1 ← ++ (byte) main::k#2 [ main::j#6 main::i#4 main::k#1 ] [9] (byte) main::k#1 ← ++ (byte) main::k#2 [ main::j#6 main::i#4 main::k#1 ]
@ -1056,7 +1056,7 @@ main::@2: scope:[main] from main::@1 main::@4
main::@3: scope:[main] from main::@2 main::@3 main::@3: scope:[main] from main::@2 main::@3
[4] (byte) main::k#2 ← phi( main::@2/(byte/signed byte/word/signed word) 0 main::@3/(byte) main::k#1 ) [ main::j#6 main::i#4 main::k#2 ] [4] (byte) main::k#2 ← phi( main::@2/(byte/signed byte/word/signed word) 0 main::@3/(byte) main::k#1 ) [ main::j#6 main::i#4 main::k#2 ]
[5] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] [5] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ]
[6] (word) main::w#0 ← _word_ (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] [6] (word) main::w#0 ← ((word)) (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ]
[7] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] [7] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ]
[8] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ] [8] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ]
[9] (byte) main::k#1 ← ++ (byte) main::k#2 [ main::j#6 main::i#4 main::k#1 ] [9] (byte) main::k#1 ← ++ (byte) main::k#2 [ main::j#6 main::i#4 main::k#1 ]
@ -1093,7 +1093,7 @@ main::@2: scope:[main] from main::@1 main::@4
main::@3: scope:[main] from main::@2 main::@3 main::@3: scope:[main] from main::@2 main::@3
[4] (byte) main::k#2 ← phi( main::@2/(byte/signed byte/word/signed word) 0 main::@3/(byte) main::k#1 ) [ main::j#6 main::i#4 main::k#2 ] ( main:0 [ main::j#6 main::i#4 main::k#2 ] ) [4] (byte) main::k#2 ← phi( main::@2/(byte/signed byte/word/signed word) 0 main::@3/(byte) main::k#1 ) [ main::j#6 main::i#4 main::k#2 ] ( main:0 [ main::j#6 main::i#4 main::k#2 ] )
[5] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ) [5] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] )
[6] (word) main::w#0 ← _word_ (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) [6] (word) main::w#0 ← ((word)) (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] )
[7] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ) [7] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] )
[8] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ] ( main:0 [ main::j#6 main::i#4 main::k#2 ] ) [8] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ] ( main:0 [ main::j#6 main::i#4 main::k#2 ] )
[9] (byte) main::k#1 ← ++ (byte) main::k#2 [ main::j#6 main::i#4 main::k#1 ] ( main:0 [ main::j#6 main::i#4 main::k#1 ] ) [9] (byte) main::k#1 ← ++ (byte) main::k#2 [ main::j#6 main::i#4 main::k#1 ] ( main:0 [ main::j#6 main::i#4 main::k#1 ] )
@ -1254,7 +1254,7 @@ main: {
lda #>zpptr lda #>zpptr
adc #0 adc #0
sta zpptr2+1 sta zpptr2+1
//SEG24 [6] (word) main::w#0 ← _word_ (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) -- zpwo1=_word_zpby1 //SEG24 [6] (word) main::w#0 ← ((word)) (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) -- zpwo1=_word_zpby1
lda j lda j
sta w sta w
lda #0 lda #0
@ -1307,14 +1307,14 @@ Statement [5] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) ma
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::j#6 main::j#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::j#6 main::j#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ main::i#4 main::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ main::i#4 main::i#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ main::k#2 main::k#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ main::k#2 main::k#1 ]
Statement [6] (word) main::w#0 ← _word_ (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) always clobbers reg byte a Statement [6] (word) main::w#0 ← ((word)) (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) always clobbers reg byte a
Statement [7] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ) always clobbers reg byte a Statement [7] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ) always clobbers reg byte a
Statement [8] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ] ( main:0 [ main::j#6 main::i#4 main::k#2 ] ) always clobbers reg byte a reg byte y Statement [8] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ] ( main:0 [ main::j#6 main::i#4 main::k#2 ] ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::j#6 main::j#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::j#6 main::j#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ main::i#4 main::i#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ main::i#4 main::i#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:4 [ main::k#2 main::k#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:4 [ main::k#2 main::k#1 ]
Statement [5] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ) always clobbers reg byte a Statement [5] (byte*) main::zpptr2#0 ← (const byte*) main::zpptr#0 + (byte) main::i#4 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 ] ) always clobbers reg byte a
Statement [6] (word) main::w#0 ← _word_ (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) always clobbers reg byte a Statement [6] (word) main::w#0 ← ((word)) (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) always clobbers reg byte a
Statement [7] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ) always clobbers reg byte a Statement [7] (byte*) main::zpptr2#1 ← (byte*) main::zpptr2#0 + (word) main::w#0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#1 ] ) always clobbers reg byte a
Statement [8] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ] ( main:0 [ main::j#6 main::i#4 main::k#2 ] ) always clobbers reg byte a reg byte y Statement [8] *((byte*) main::zpptr2#1) ← (byte) main::k#2 [ main::j#6 main::i#4 main::k#2 ] ( main:0 [ main::j#6 main::i#4 main::k#2 ] ) always clobbers reg byte a reg byte y
Potential registers zp ZP_BYTE:2 [ main::j#6 main::j#1 ] : zp ZP_BYTE:2 , reg byte x , Potential registers zp ZP_BYTE:2 [ main::j#6 main::j#1 ] : zp ZP_BYTE:2 , reg byte x ,
@ -1409,7 +1409,7 @@ main: {
lda #>zpptr lda #>zpptr
adc #0 adc #0
sta zpptr2+1 sta zpptr2+1
//SEG24 [6] (word) main::w#0 ← _word_ (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) -- zpwo1=_word_zpby1 //SEG24 [6] (word) main::w#0 ← ((word)) (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) -- zpwo1=_word_zpby1
lda j lda j
sta w sta w
lda #0 lda #0
@ -1520,7 +1520,7 @@ main: {
lda #>zpptr lda #>zpptr
adc #0 adc #0
sta zpptr2+1 sta zpptr2+1
//SEG24 [6] (word) main::w#0 ← _word_ (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) -- zpwo1=_word_zpby1 //SEG24 [6] (word) main::w#0 ← ((word)) (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) -- zpwo1=_word_zpby1
lda j lda j
sta w sta w
lda #0 lda #0
@ -1624,7 +1624,7 @@ main: {
lda #>zpptr lda #>zpptr
adc #0 adc #0
sta zpptr2+1 sta zpptr2+1
//SEG24 [6] (word) main::w#0 ← _word_ (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) -- zpwo1=_word_zpby1 //SEG24 [6] (word) main::w#0 ← ((word)) (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) -- zpwo1=_word_zpby1
lda j lda j
sta w sta w
lda #0 lda #0
@ -1719,7 +1719,7 @@ main: {
lda #>zpptr lda #>zpptr
adc #0 adc #0
sta zpptr2+1 sta zpptr2+1
//SEG24 [6] (word) main::w#0 ← _word_ (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) -- zpwo1=_word_zpby1 //SEG24 [6] (word) main::w#0 ← ((word)) (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) -- zpwo1=_word_zpby1
lda j lda j
sta w sta w
lda #0 lda #0
@ -1783,7 +1783,7 @@ FINAL SYMBOL TABLE
(word) main::w (word) main::w
(word) main::w#0 w zp ZP_WORD:6 2002.0 (word) main::w#0 w zp ZP_WORD:6 2002.0
(byte*) main::zpptr (byte*) main::zpptr
(const byte*) main::zpptr#0 zpptr = (word/signed word) 4096 (const byte*) main::zpptr#0 zpptr = ((byte*))(word/signed word) 4096
(byte*) main::zpptr2 (byte*) main::zpptr2
(byte*) main::zpptr2#0 zpptr2 zp ZP_PTR_BYTE:4 1001.0 (byte*) main::zpptr2#0 zpptr2 zp ZP_PTR_BYTE:4 1001.0
(byte*) main::zpptr2#1 zpptr2 zp ZP_PTR_BYTE:4 2002.0 (byte*) main::zpptr2#1 zpptr2 zp ZP_PTR_BYTE:4 2002.0
@ -1844,7 +1844,7 @@ main: {
lda #>zpptr lda #>zpptr
adc #0 adc #0
sta zpptr2+1 sta zpptr2+1
//SEG24 [6] (word) main::w#0 ← _word_ (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) -- zpwo1=_word_zpby1 //SEG24 [6] (word) main::w#0 ← ((word)) (byte) main::j#6 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ( main:0 [ main::j#6 main::i#4 main::k#2 main::zpptr2#0 main::w#0 ] ) -- zpwo1=_word_zpby1
lda j lda j
sta w sta w
lda #0 lda #0

Some files were not shown because too many files have changed in this diff Show More