1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-08-03 01:29:04 +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);
new Pass1AddTypePromotions(program).addPromotions();
log.append("INITIAL CONTROL FLOW GRAPH");
log.append(program.getGraph().toString(program));
@ -122,6 +124,7 @@ public class Compiler {
public void pass2AssertSSA(Program program) {
List<Pass2SsaAssertion> assertions = new ArrayList<>();
assertions.add(new Pass2AssertTypeMatch(program));
assertions.add(new Pass2AssertSymbols(program));
assertions.add(new Pass2AssertBlocks(program));
assertions.add(new Pass2AssertNoCallParameters(program));

View File

@ -151,7 +151,7 @@ public class AsmFragment {
} else {
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);
if(SymbolType.isWord(operandType) || SymbolType.isSWord(operandType)) {
// 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;
} else if (SymbolType.SWORD.equals(castType)) {
return CAST_SWORD;
} else if (castType instanceof SymbolTypePointer && SymbolType.BYTE.equals(((SymbolTypePointer) castType).getElementType())) {
return CAST_PTRBY;
} else {
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 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 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_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_BYTE = new Operator("((byte))", "_byte_", 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_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 DIVIDE = new Operator("/", "_div_", Type.BINARY, 3);
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 */
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
*/
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) {
ConstantValue value = ConstantValueCalculator.calcValue(programScope, operator, (ConstantValue) rValue);
if (value != null) {
@ -72,13 +83,16 @@ public class SymbolTypeInference {
public static SymbolType inferType(SymbolType type1, Operator operator, SymbolType type2) {
if (operator.equals(Operator.PLUS)) {
if (Operator.PLUS.equals(operator)) {
return inferPlus(type1, type2);
} else if (operator.equals(Operator.MINUS)) {
} else if (Operator.MINUS.equals(operator)) {
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();
switch (op) {
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;
if (rValue instanceof VariableRef) {
Variable variable = programScope.getVariable((VariableRef) rValue);
Variable variable = symbols.getVariable((VariableRef) rValue);
type = variable.getType();
} else if (rValue instanceof ConstantRef) {
ConstantVar constVar = programScope.getConstant((ConstantRef) rValue);
ConstantVar constVar = symbols.getConstant((ConstantRef) rValue);
type = constVar.getType();
} else if (rValue instanceof Symbol) {
Symbol rSymbol = (Symbol) rValue;
type = rSymbol.getType();
} else if (rValue instanceof ConstantInteger) {
ConstantInteger rInt = (ConstantInteger) rValue;
return rInt.getType(programScope);
return rInt.getType(symbols);
} else if (rValue instanceof ConstantString) {
type = SymbolType.STRING;
} else if (rValue instanceof ConstantChar) {
@ -265,12 +279,14 @@ public class SymbolTypeInference {
type = SymbolType.BOOLEAN;
} else if (rValue instanceof ConstantUnary) {
ConstantUnary constUnary = (ConstantUnary) rValue;
return inferType(programScope, constUnary.getOperator(), constUnary.getOperand());
return inferType(symbols, constUnary.getOperator(), constUnary.getOperand());
} else if (rValue instanceof ConstantBinary) {
ConstantBinary constBin = (ConstantBinary) rValue;
return inferType(programScope, constBin.getLeft(), constBin.getOperator(), constBin.getRight());
} else if (rValue instanceof PointerDereferenceSimple) {
SymbolType pointerType = inferType(programScope, ((PointerDereferenceSimple) rValue).getPointer());
return inferType(symbols, constBin.getLeft(), constBin.getOperator(), constBin.getRight());
} else if (rValue instanceof ValueArray) {
type = inferTypeArray(symbols, (ValueArray)rValue);
} else if (rValue instanceof PointerDereference) {
SymbolType pointerType = inferType(symbols, ((PointerDereference) rValue).getPointer());
if (pointerType instanceof SymbolTypePointer) {
return ((SymbolTypePointer) pointerType).getElementType();
} else {
@ -283,4 +299,61 @@ public class SymbolTypeInference {
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 "_byte_":
case "_sbyte_":
case "_word_":
case "_sword_":
case "((byte))":
case "((sbyte))":
case "((word))":
case "((signed word))":
case "((byte*))":
return new ConstantUnary(operator, c);
case "*": { // pointer dereference - not constant
return null;

View File

@ -1,5 +1,6 @@
package dk.camelot64.kickc.passes;
import dk.camelot64.kickc.CompileLog;
import dk.camelot64.kickc.model.ControlFlowGraph;
import dk.camelot64.kickc.model.Program;
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 */
public abstract class Pass2SsaAssertion {
private ControlFlowGraph graph;
private ProgramScope programScope;
private Program program;
public Pass2SsaAssertion(Program program) {
this.graph = program.getGraph();
this.programScope = program.getScope();
this.program = program;
}
public ControlFlowGraph getGraph() {
return graph;
return program.getGraph();
}
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;

View File

@ -210,6 +210,16 @@ public class TestPrograms extends TestCase {
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 {
TestPrograms tester = new TestPrograms();

View File

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

View File

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

View File

@ -70,7 +70,7 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024
(byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024
(byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 0
@ -169,7 +169,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024
(byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from @1
(byte) main::i ← (byte/signed byte/word/signed word) 0
@ -222,7 +222,7 @@ Completing Phi functions...
Completing Phi functions...
CONTROL FLOW GRAPH SSA
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from @1
(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
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from @1
(byte*) SCREEN#5 ← phi( @1/(byte*) SCREEN#9 )
@ -406,7 +406,7 @@ Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from @1
(byte*) SCREEN#5 ← phi( @1/(byte*) SCREEN#9 )
@ -476,7 +476,7 @@ Alias (byte*) SCREEN#2 = (byte*) SCREEN#8
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from @1
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from @1
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from @1
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from @1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -705,7 +705,7 @@ main::@return: scope:[main] from main::@7
to:@end
@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::j#0 = 0
Constant (const byte) main::k#0 = 0
@ -945,7 +945,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024
(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(void()) main()
(label) main::@1
(label) main::@2
@ -1801,7 +1801,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) main()
(label) main::@1
(label) main::@2

View File

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

View File

@ -392,10 +392,11 @@ init_plot_tables: {
inx
cpx #0
bne b1
lda #0
lda #<0
sta yoffs
lda #>0
sta yoffs+1
tax
ldx #0
b3:
txa
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::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 ] )
[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 ] )
[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 ] )
@ -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 ] )
to:init_plot_tables::@3
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 ] )
[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 ] )

View File

@ -2,27 +2,27 @@
(label) @begin
(label) @end
(byte*) BGCOL
(const byte*) BGCOL#0 BGCOL = (word) 53280
(const byte*) BGCOL#0 BGCOL = ((byte*))(word) 53280
(byte*) BITMAP
(const byte*) BITMAP#0 BITMAP = (word/signed word) 8192
(const byte*) BITMAP#0 BITMAP = ((byte*))(word/signed word) 8192
(byte) BMM
(const byte) BMM#0 BMM = (byte/signed byte/word/signed word) 32
(byte*) COLS
(const byte*) COLS#0 COLS = (word) 55296
(const byte*) COLS#0 COLS = ((byte*))(word) 55296
(byte) CSEL
(const byte) CSEL#0 CSEL = (byte/signed byte/word/signed word) 8
(byte*) D011
(const byte*) D011#0 D011 = (word) 53265
(const byte*) D011#0 D011 = ((byte*))(word) 53265
(byte*) D016
(const byte*) D016#0 D016 = (word) 53270
(const byte*) D016#0 D016 = ((byte*))(word) 53270
(byte*) D018
(const byte*) D018#0 D018 = (word) 53272
(const byte*) D018#0 D018 = ((byte*))(word) 53272
(byte) DEN
(const byte) DEN#0 DEN = (byte/signed byte/word/signed word) 16
(byte) ECM
(const byte) ECM#0 ECM = (byte/signed byte/word/signed word) 64
(byte*) FGCOL
(const byte*) FGCOL#0 FGCOL = (word) 53281
(const byte*) FGCOL#0 FGCOL = ((byte*))(word) 53281
(byte) MCM
(const byte) MCM#0 MCM = (byte/signed byte/word/signed word) 16
(byte) RSEL
@ -30,9 +30,9 @@
(byte) RST8
(const byte) RST8#0 RST8 = (byte/word/signed word) 128
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte*) SCROLL
(const byte*) SCROLL#0 SCROLL = (word) 53270
(const byte*) SCROLL#0 SCROLL = ((byte*))(word) 53270
(void()) init_plot_tables()
(byte~) init_plot_tables::$0 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#4 reg byte y 6.857142857142857
(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
(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
(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
(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
(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: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
cpx #0
bne b1
lda #0
lda #<0
sta yoffs
lda #>0
sta yoffs+1
tax
ldx #0
b3:
txa
and #7

View File

@ -48,7 +48,7 @@ plots::@return: scope:[plots] from plots::@3
to:@return
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 ] )
[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 ] )
[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 ] )
@ -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 ] )
to:init_plot_tables::@3
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 ] )
[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 ] )

File diff suppressed because it is too large Load Diff

View File

@ -2,37 +2,37 @@
(label) @begin
(label) @end
(byte*) BGCOL
(const byte*) BGCOL#0 BGCOL = (word) 53280
(const byte*) BGCOL#0 BGCOL = ((byte*))(word) 53280
(byte*) BITMAP
(const byte*) BITMAP#0 BITMAP = (word/signed word) 8192
(const byte*) BITMAP#0 BITMAP = ((byte*))(word/signed word) 8192
(byte) BMM
(const byte) BMM#0 BMM = (byte/signed byte/word/signed word) 32
(byte*) COLS
(const byte*) COLS#0 COLS = (word) 55296
(const byte*) COLS#0 COLS = ((byte*))(word) 55296
(byte) CSEL
(const byte) CSEL#0 CSEL = (byte/signed byte/word/signed word) 8
(byte*) D011
(const byte*) D011#0 D011 = (word) 53265
(const byte*) D011#0 D011 = ((byte*))(word) 53265
(byte*) D016
(const byte*) D016#0 D016 = (word) 53270
(const byte*) D016#0 D016 = ((byte*))(word) 53270
(byte*) D018
(const byte*) D018#0 D018 = (word) 53272
(const byte*) D018#0 D018 = ((byte*))(word) 53272
(byte) DEN
(const byte) DEN#0 DEN = (byte/signed byte/word/signed word) 16
(byte) ECM
(const byte) ECM#0 ECM = (byte/signed byte/word/signed word) 64
(byte*) FGCOL
(const byte*) FGCOL#0 FGCOL = (word) 53281
(const byte*) FGCOL#0 FGCOL = ((byte*))(word) 53281
(byte) MCM
(const byte) MCM#0 MCM = (byte/signed byte/word/signed word) 16
(byte*) RASTER
(const byte*) RASTER#0 RASTER = (word) 53266
(const byte*) RASTER#0 RASTER = ((byte*))(word) 53266
(byte) RSEL
(const byte) RSEL#0 RSEL = (byte/signed byte/word/signed word) 8
(byte) RST8
(const byte) RST8#0 RST8 = (byte/word/signed word) 128
(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()
(byte~) init_plot_tables::$0 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#0 reg byte x 15.000000000000002
(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
(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
(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
(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
(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()
(byte~) plots::$0 reg byte y 101.0
(byte~) plots::$1 reg byte a 101.0

View File

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

View File

@ -2,7 +2,7 @@
(label) @begin
(label) @end
(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
(const byte) STAR#0 STAR = (byte/signed byte/word/signed word) 81
(void()) main()

View File

@ -15,9 +15,9 @@ main: {
sta y
ldy #yd/2
tax
lda #0+0*$28
lda #<0+0*$28
sta idx
txa
lda #>0+0*$28
sta idx+1
b1:
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::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] (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 ] )
[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 ] )

View File

@ -107,7 +107,7 @@ INITIAL CONTROL FLOW GRAPH
to:@1
main: scope:[main] from
(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::y0 ← (byte/signed byte/word/signed word) 0
(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::$3 ← (byte) main::y * (byte/signed byte/word/signed word) 40
(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
main::@1: scope:[main] from main main::@2
*((byte[1000]) main::screen + (word) main::idx) ← (byte) main::STAR
@ -165,7 +165,7 @@ CONTROL FLOW GRAPH
to:@1
main: scope:[main] from
(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::y0 ← (byte/signed byte/word/signed word) 0
(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::$3 ← (byte) main::y * (byte/signed byte/word/signed word) 40
(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
main::@1: scope:[main] from main main::@2
*((byte[1000]) main::screen + (word) main::idx) ← (byte) main::STAR
@ -222,7 +222,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
to:@1
main: scope:[main] from @1
(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::y0 ← (byte/signed byte/word/signed word) 0
(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::$3 ← (byte) main::y * (byte/signed byte/word/signed word) 40
(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
main::@1: scope:[main] from main main::@2
*((byte[1000]) main::screen + (word) main::idx) ← (byte) main::STAR
@ -282,7 +282,7 @@ CONTROL FLOW GRAPH SSA
to:@1
main: scope:[main] from @1
(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::y0#0 ← (byte/signed byte/word/signed word) 0
(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::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40
(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
main::@1: scope:[main] from main main::@2
(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
main: scope:[main] from @1
(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::y0#0 ← (byte/signed byte/word/signed word) 0
(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::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40
(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
main::@1: scope:[main] from main main::@2
(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
main: scope:[main] from @1
(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::y0#0 ← (byte/signed byte/word/signed word) 0
(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::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40
(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
main::@1: scope:[main] from main main::@2
(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
main: scope:[main] from @1
(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::y0#0 ← (byte/signed byte/word/signed word) 0
(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::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word) 40
(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
main::@1: scope:[main] from main main::@2
(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::y#0 = (byte) main::y0#0
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 (word) main::idx#1 = (word~) main::$6 (word) main::idx#4
Alias (byte) main::e#1 = (byte~) main::$7 (byte) main::e#4
@ -719,7 +718,7 @@ CONTROL FLOW GRAPH
to:@1
main: scope:[main] from @1
(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::y#0 ← (byte/signed byte/word/signed word) 0
(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::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
(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
main::@1: scope:[main] from main main::@2
(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
main: scope:[main] from @1
(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::y#0 ← (byte/signed byte/word/signed word) 0
(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::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
(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
main::@1: scope:[main] from main main::@2
(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
main: scope:[main] from @1
(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::y#0 ← (byte/signed byte/word/signed word) 0
(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::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
(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
main::@1: scope:[main] from main main::@2
(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
main: scope:[main] from @1
(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::y#0 ← (byte/signed byte/word/signed word) 0
(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::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
(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
main::@1: scope:[main] from main main::@2
(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
main: scope:[main] from @1
(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::y#0 ← (byte/signed byte/word/signed word) 0
(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::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
(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
main::@1: scope:[main] from main main::@2
(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
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::y#0 = 0
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::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
(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
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 )
@ -1058,7 +1063,8 @@ CONTROL FLOW GRAPH
to:@1
main: scope:[main] from @1
(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
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 )
@ -1091,7 +1097,45 @@ main::@return: scope:[main] from main::@2
@end: scope:[] from @1
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
CONTROL FLOW GRAPH
@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
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::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::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::e#0 = (const byte) main::yd#0/(byte/signed byte/word/signed word) 2
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::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 )
(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
(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
@ -1209,7 +1254,7 @@ FINAL SYMBOL TABLE
(word) main::idx#3
(word) main::idx#5
(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#1
(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::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 )
(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
(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
@ -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::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] (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 ]
[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 ]
@ -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::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] (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 ]
[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 ]
@ -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::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] (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 ] )
[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 ] )
@ -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
lda #0
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
lda #0+0*$28
//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
sta idx
lda #0
lda #>0+0*$28
sta idx+1
jmp b1
//SEG13 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
@ -1691,10 +1736,10 @@ main: {
ldy #yd/2
//SEG11 [2] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#2] -- xby=coby1
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
lda #0+0*$28
//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
sta idx
lda #0
lda #>0+0*$28
sta idx+1
jmp b1
//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 lda #0 with TXA
Replacing label b2_from_b1 with b2
Replacing label b1_from_b2 with b1
Removing instruction bbegin:
@ -1808,10 +1852,10 @@ main: {
ldy #yd/2
//SEG11 [2] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#2] -- xby=coby1
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
lda #0+0*$28
//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
sta idx
txa
lda #>0+0*$28
sta idx+1
jmp b1
//SEG13 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
@ -1915,10 +1959,10 @@ main: {
ldy #yd/2
//SEG11 [2] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#2] -- xby=coby1
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
lda #0+0*$28
//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
sta idx
txa
lda #>0+0*$28
sta idx+1
jmp b1
//SEG13 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
@ -2016,10 +2060,10 @@ main: {
ldy #yd/2
//SEG11 [2] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#2] -- xby=coby1
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
lda #0+0*$28
//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
sta idx
txa
lda #>0+0*$28
sta idx+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
@ -2106,7 +2150,7 @@ FINAL SYMBOL TABLE
(word) main::idx#3 idx zp ZP_WORD:2 11.0
(word) main::idx#5 idx zp ZP_WORD:2 16.5
(byte[1000]) main::screen
(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#1 reg byte x 3.666666666666667
(byte) main::x#2 reg byte x 11.0
@ -2160,10 +2204,10 @@ main: {
ldy #yd/2
//SEG11 [2] phi (byte) main::x#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#2] -- xby=coby1
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
lda #0+0*$28
//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
sta idx
txa
lda #>0+0*$28
sta idx+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

View File

@ -19,7 +19,7 @@
(word) main::idx#3 idx zp ZP_WORD:2 11.0
(word) main::idx#5 idx zp ZP_WORD:2 16.5
(byte[1000]) main::screen
(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#1 reg byte x 3.666666666666667
(byte) main::x#2 reg byte x 11.0

View File

@ -16,7 +16,7 @@ main::@return: scope:[main] from main::@1
to:@return
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*) 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 ] )
to:line::@1
line::@1: scope:[line] from line line::@1

View File

@ -55,7 +55,7 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) screen ← (word/signed word) 1024
(byte*) screen ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) screen ← (word/signed word) 1024
(byte*) screen ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from
(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
@begin: scope:[] from
(byte*) screen ← (word/signed word) 1024
(byte*) screen ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from @2
(byte) line::x0 ← (byte/signed byte/word/signed word) 1
@ -169,7 +169,7 @@ Completing Phi functions...
Completing Phi functions...
CONTROL FLOW GRAPH SSA
@begin: scope:[] from
(byte*) screen#0 ← (word/signed word) 1024
(byte*) screen#0 ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from @2
(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
@begin: scope:[] from
(byte*) screen#0 ← (word/signed word) 1024
(byte*) screen#0 ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from @2
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) screen#0 ← (word/signed word) 1024
(byte*) screen#0 ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from @2
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) screen#0 ← (word/signed word) 1024
(byte*) screen#0 ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from @2
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) screen#0 ← (word/signed word) 1024
(byte*) screen#0 ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from @2
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) screen#0 ← (word/signed word) 1024
(byte*) screen#0 ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from @2
(byte) line::x0#0 ← (byte/signed byte/word/signed word) 1
@ -508,7 +508,7 @@ line::@return: scope:[line] from line::@1
to:@end
@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::x1#0 = 2
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
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 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::x0#1 = (byte/signed byte/word/signed word) 3
Succesful SSA optimization Pass2ConstantInlining
@ -616,7 +616,7 @@ main::@return: scope:[main] from main::@1
to:@return
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*) 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 )
to:line::@1
line::@1: scope:[line] from line line::@1
@ -679,7 +679,7 @@ main::@return: scope:[main] from main::@1
to:@return
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*) 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#3 ← (byte) line::x#0
(byte*~) screen#17 ← (byte*) screen#14
@ -733,7 +733,7 @@ main::@return: scope:[main] from main::@1
to:@return
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*) 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 ]
[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 ]
@ -789,7 +789,7 @@ main::@return: scope:[main] from main::@1
to:@return
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*) 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 ]
to:line::@1
line::@1: scope:[line] from line line::@1
@ -823,7 +823,7 @@ main::@return: scope:[main] from main::@1
to:@return
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*) 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 ] )
to: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
lda #2
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
sta screen
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
lda #2
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
sta screen
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
lda #2
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
sta screen
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
lda #2
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
sta screen
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
lda #2
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
sta screen
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 ] )
[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 ] )
[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 ] )
[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 ] )
[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 ] )

View File

@ -44,10 +44,10 @@ main::@1:
(byte~) main::$0 ← (byte/word/signed word) 200 - (byte) main::b
(byte) main::b2 ← (byte~) main::$0
*((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::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) main::b ← ++ (byte) main::b
(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::w2 ← (word/signed word) 1250
(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/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
@ -116,7 +116,7 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH
@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*~) $1 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) $0
(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::b2 ← (byte~) main::$0
*((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::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) main::b ← ++ (byte) main::b
(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::w2 ← (word/signed word) 1250
(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/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
@ -183,7 +183,7 @@ Removing empty block @1
Removing empty block w::@2
CONTROL FLOW GRAPH
@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*~) $1 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) $0
(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::b2 ← (byte~) main::$0
*((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::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) main::b ← ++ (byte) main::b
(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::w2 ← (word/signed word) 1250
(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/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
@ -246,7 +246,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@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*~) $1 ← (byte*) SCREEN + (byte/signed byte/word/signed word~) $0
(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::b2 ← (byte~) main::$0
*((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::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) main::b ← ++ (byte) main::b
(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::w2 ← (word/signed word) 1250
(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/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
@ -317,7 +317,7 @@ Completing Phi functions...
Completing Phi functions...
CONTROL FLOW GRAPH SSA
@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*~) $1 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word~) $0
(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::b2#0 ← (byte~) main::$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::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) main::b#1 ← ++ (byte) main::b#2
(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::w2#0 ← (word/signed word) 1250
(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/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
@ -402,7 +402,7 @@ w::@return: scope:[w] from w::@1
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@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*~) $1 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word~) $0
(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::b2#0 ← (byte~) main::$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::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) main::b#1 ← ++ (byte) main::b#2
(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::w2#0 ← (word/signed word) 1250
(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/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
@ -566,7 +566,7 @@ Culled Empty Block (label) @3
Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH
@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*~) $1 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word~) $0
(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::b2#0 ← (byte~) main::$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::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) main::b#1 ← ++ (byte) main::b#2
(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::w2#0 ← (word/signed word) 1250
(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/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
@ -658,7 +658,7 @@ Alias (byte) w::b2#0 = (byte~) w::$3
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@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*) 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
@ -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::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2
*((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
(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) main::b#1 ← ++ (byte) main::b#2
(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::w2#0 ← (word/signed word) 1250
(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) 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
@ -727,7 +727,7 @@ Self Phi Eliminated (byte*) SCREEN4#1
Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH
@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*) 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
@ -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::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2
*((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
(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) main::b#1 ← ++ (byte) main::b#2
(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::w2#0 ← (word/signed word) 1250
(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) 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
@ -796,7 +796,7 @@ Redundant Phi (byte*) SCREEN4#1 (byte*) SCREEN4#2
Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH
@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*) 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
@ -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::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2
*((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
(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) main::b#1 ← ++ (byte) main::b#2
(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::w2#0 ← (word/signed word) 1250
(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) 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
@ -855,7 +855,7 @@ Simple Condition (boolean~) w::$4 if((byte) w::i#1!=(byte/signed byte/word/signe
Succesful SSA optimization Pass2ConditionalJumpSimplification
CONTROL FLOW GRAPH
@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*) 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
@ -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::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2
*((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
(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) main::b#1 ← ++ (byte) main::b#2
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::w2#0 ← (word/signed word) 1250
(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) 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
@ -907,7 +907,7 @@ w::@return: scope:[w] from w::@1
to:@end
@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/word/signed word) $2 = 40*6
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::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2
*((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
(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) main::b#1 ← ++ (byte) main::b#2
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
(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
(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*) SCREEN3#0 + (byte) w::i#2) ← (byte) w::b#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::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2
*((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
(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
(byte) main::b#1 ← ++ (byte) main::b#2
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
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::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
*((const byte*) SCREEN3#0 + (byte) w::i#2) ← (byte) w::b#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
@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
CONTROL FLOW GRAPH
@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::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2
*((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
(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
(byte) main::b#1 ← ++ (byte) main::b#2
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::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2
*((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
(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
(byte) main::b#1 ← ++ (byte) main::b#2
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) @end
(byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024
(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(byte*) SCREEN2
(const byte*) SCREEN2#0 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 3
(byte*) SCREEN3
@ -1141,7 +1141,7 @@ FINAL SYMBOL TABLE
(label) w::@1
(label) w::@return
(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#0
(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::b2#0 ← (byte/word/signed word) 200 - (byte) main::b#2
*((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
(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
(byte) main::b#1 ← ++ (byte) main::b#2
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 ]
[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 ]
[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 ]
[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 ]
[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 ]
@ -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 ]
[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 ]
[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 ]
[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 ]
[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 ]
@ -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 ] )
[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 ] )
[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 ] )
[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 ] )
[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 ] )
@ -1486,7 +1486,7 @@ main: {
lda b2
ldx b
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
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
@ -1495,7 +1495,7 @@ main: {
clc
adc #1
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
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
@ -1643,13 +1643,13 @@ main: {
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
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
//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
clc
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
sta SCREEN2,x
//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
//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
//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
//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
clc
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
sta SCREEN2,x
//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
//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
//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
//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
clc
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
sta SCREEN2,x
//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
//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
//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
//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
clc
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
sta SCREEN2,x
//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) @end
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(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
(byte*) SCREEN3
@ -2025,7 +2025,7 @@ FINAL SYMBOL TABLE
(label) w::@1
(label) w::@return
(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#0 reg byte x 11.0
(byte) w::i
@ -2076,13 +2076,13 @@ main: {
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
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
//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
clc
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
sta SCREEN2,x
//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) @end
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(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
(byte*) SCREEN3
@ -26,7 +26,7 @@
(label) w::@1
(label) w::@return
(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#0 reg byte x 11.0
(byte) w::i

View File

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

View File

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

View File

@ -105,8 +105,8 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from
(byte[]) plots ← (word/signed word) 4096
(byte*) SCREEN ← (word/signed word) 1024
(byte[]) plots ← ((byte*)) (word/signed word) 4096
(byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 0
@ -183,8 +183,8 @@ Removing empty block line::@6
Removing empty block @2
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte[]) plots ← (word/signed word) 4096
(byte*) SCREEN ← (word/signed word) 1024
(byte[]) plots ← ((byte*)) (word/signed word) 4096
(byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 0
@ -242,8 +242,8 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from
(byte[]) plots ← (word/signed word) 4096
(byte*) SCREEN ← (word/signed word) 1024
(byte[]) plots ← ((byte*)) (word/signed word) 4096
(byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from @3
(byte) main::i ← (byte/signed byte/word/signed word) 0
@ -316,8 +316,8 @@ Completing Phi functions...
Completing Phi functions...
CONTROL FLOW GRAPH SSA
@begin: scope:[] from
(byte[]) plots#0 ← (word/signed word) 4096
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte[]) plots#0 ← ((byte*)) (word/signed word) 4096
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from @3
(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
@begin: scope:[] from
(byte[]) plots#0 ← (word/signed word) 4096
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte[]) plots#0 ← ((byte*)) (word/signed word) 4096
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from @3
(byte*) SCREEN#3 ← phi( @3/(byte*) SCREEN#6 )
@ -602,8 +602,8 @@ Culled Empty Block (label) @4
Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte[]) plots#0 ← (word/signed word) 4096
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte[]) plots#0 ← ((byte*)) (word/signed word) 4096
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from @3
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte[]) plots#0 ← (word/signed word) 4096
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte[]) plots#0 ← ((byte*)) (word/signed word) 4096
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from @3
(byte*) SCREEN#3 ← phi( @3/(byte*) SCREEN#6 )
@ -813,8 +813,8 @@ Alias (byte) plot::idx#0 = (byte~) plot::$0
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte[]) plots#0 ← (word/signed word) 4096
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte[]) plots#0 ← ((byte*)) (word/signed word) 4096
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from @3
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte[]) plots#0 ← (word/signed word) 4096
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte[]) plots#0 ← ((byte*)) (word/signed word) 4096
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from @3
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte[]) plots#0 ← (word/signed word) 4096
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte[]) plots#0 ← ((byte*)) (word/signed word) 4096
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from @3
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte[]) plots#0 ← (word/signed word) 4096
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte[]) plots#0 ← ((byte*)) (word/signed word) 4096
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from @3
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte[]) plots#0 ← (word/signed word) 4096
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte[]) plots#0 ← ((byte*)) (word/signed word) 4096
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from @3
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -1178,8 +1178,8 @@ plot::@return: scope:[plot] from plot
to:@end
@end: scope:[] from @3
Constant (const byte[]) plots#0 = 4096
Constant (const byte*) SCREEN#0 = 1024
Constant (const byte[]) plots#0 = ((byte*))4096
Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte) main::i#0 = 0
Constant (const byte) line::x#0 = 0
Constant (const byte) line::x1#0 = 10
@ -1432,7 +1432,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(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)
(label) line::@1
(label) line::@2
@ -1462,7 +1462,7 @@ FINAL SYMBOL TABLE
(byte) plot::x#1
(byte) plot::x#2
(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
Added new block during phi lifting main::@6(between main::@1 and main::@1)
@ -2571,7 +2571,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(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)
(label) line::@1
(label) line::@2
@ -2601,7 +2601,7 @@ FINAL SYMBOL TABLE
(byte) plot::x#1 reg byte y 202.0
(byte) plot::x#2 reg byte y 103.0
(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 ]
zp ZP_BYTE:2 [ line::x#2 line::x#1 ]

View File

@ -2,7 +2,7 @@
(label) @begin
(label) @end
(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)
(label) line::@1
(label) line::@2
@ -32,7 +32,7 @@
(byte) plot::x#1 reg byte y 202.0
(byte) plot::x#2 reg byte y 103.0
(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 ]
zp ZP_BYTE:2 [ line::x#2 line::x#1 ]

View File

@ -54,9 +54,9 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH
@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*) 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*~) $1 ← (byte*) VIC + (byte/signed byte/word/signed word~) $0
(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
CONTROL FLOW GRAPH
@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*) 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*~) $1 ← (byte*) VIC + (byte/signed byte/word/signed word~) $0
(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
@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*) 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*~) $1 ← (byte*) VIC + (byte/signed byte/word/signed word~) $0
(byte*~) $2 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1
@ -156,9 +156,9 @@ Completing Phi functions...
Completing Phi functions...
CONTROL FLOW GRAPH SSA
@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*) 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*~) $1 ← (byte*) VIC#0 + (byte/signed byte/word/signed word~) $0
(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
@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*) 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*~) $1 ← (byte*) VIC#0 + (byte/signed byte/word/signed word~) $0
(byte*~) $2 ← (byte*~) $1 + (byte/signed byte/word/signed word) 1
@ -284,9 +284,9 @@ Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH
@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*) 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*~) $1 ← (byte*) VIC#0 + (byte/signed byte/word/signed word~) $0
(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
CONTROL FLOW GRAPH
@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*) 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*~) $1 ← (byte*) VIC#0 + (byte/signed byte/word/signed word~) $0
(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
CONTROL FLOW GRAPH
@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*) 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*~) $1 ← (byte*) VIC#0 + (byte/signed byte/word/signed word~) $0
(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
CONTROL FLOW GRAPH
@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*) 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*~) $1 ← (byte*) VIC#0 + (byte/signed byte/word/signed word~) $0
(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
CONTROL FLOW GRAPH
@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*) 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*~) $1 ← (byte*) VIC#0 + (byte/signed byte/word/signed word~) $0
(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
@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*) VIC#0 = 53248
Constant (const byte*) VIC#0 = ((byte*))53248
Constant (const byte/signed byte/word/signed word) $0 = 16*2
Constant (const byte) RED#0 = 2
Constant (const byte) main::i#0 = 40
@ -580,11 +580,11 @@ FINAL SYMBOL TABLE
(byte) RED
(const byte) RED#0 = (byte/signed byte/word/signed word) 2
(byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024
(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(byte) STAR
(const byte) STAR#0 = (byte/signed byte/word/signed word) 81
(byte*) VIC
(const byte*) VIC#0 = (word) 53248
(const byte*) VIC#0 = ((byte*))(word) 53248
(void()) main()
(label) main::@1
(label) main::@return
@ -1022,11 +1022,11 @@ FINAL SYMBOL TABLE
(byte) RED
(const byte) RED#0 RED = (byte/signed byte/word/signed word) 2
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte) STAR
(const byte) STAR#0 STAR = (byte/signed byte/word/signed word) 81
(byte*) VIC
(const byte*) VIC#0 VIC = (word) 53248
(const byte*) VIC#0 VIC = ((byte*))(word) 53248
(void()) main()
(label) main::@1
(label) main::@return

View File

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

View File

@ -45,7 +45,7 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from
(byte[15]) fibs ← (word/signed word) 4352
(byte[15]) fibs ← ((byte*)) (word/signed word) 4352
to:@1
main: scope:[main] from
*((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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte[15]) fibs ← (word/signed word) 4352
(byte[15]) fibs ← ((byte*)) (word/signed word) 4352
to:@1
main: scope:[main] from
*((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
@begin: scope:[] from
(byte[15]) fibs ← (word/signed word) 4352
(byte[15]) fibs ← ((byte*)) (word/signed word) 4352
to:@1
main: scope:[main] from @1
*((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...
CONTROL FLOW GRAPH SSA
@begin: scope:[] from
(byte[15]) fibs#0 ← (word/signed word) 4352
(byte[15]) fibs#0 ← ((byte*)) (word/signed word) 4352
to:@1
main: scope:[main] from @1
(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
@begin: scope:[] from
(byte[15]) fibs#0 ← (word/signed word) 4352
(byte[15]) fibs#0 ← ((byte*)) (word/signed word) 4352
to:@1
main: scope:[main] from @1
(byte[15]) fibs#1 ← phi( @1/(byte[15]) fibs#3 )
@ -232,7 +232,7 @@ Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte[15]) fibs#0 ← (word/signed word) 4352
(byte[15]) fibs#0 ← ((byte*)) (word/signed word) 4352
to:@1
main: scope:[main] from @1
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte[15]) fibs#0 ← (word/signed word) 4352
(byte[15]) fibs#0 ← ((byte*)) (word/signed word) 4352
to:@1
main: scope:[main] from @1
*((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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte[15]) fibs#0 ← (word/signed word) 4352
(byte[15]) fibs#0 ← ((byte*)) (word/signed word) 4352
to:@1
main: scope:[main] from @1
*((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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte[15]) fibs#0 ← (word/signed word) 4352
(byte[15]) fibs#0 ← ((byte*)) (word/signed word) 4352
to:@1
main: scope:[main] from @1
*((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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte[15]) fibs#0 ← (word/signed word) 4352
(byte[15]) fibs#0 ← ((byte*)) (word/signed word) 4352
to:@1
main: scope:[main] from @1
*((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
@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
Succesful SSA optimization Pass2ConstantIdentification
CONTROL FLOW GRAPH
@ -516,7 +516,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte[15]) fibs
(const byte[15]) fibs#0 = (word/signed word) 4352
(const byte[15]) fibs#0 = ((byte*))(word/signed word) 4352
(void()) main()
(byte~) main::$1
(byte~) main::$3
@ -994,7 +994,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(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()
(byte~) main::$1 reg byte a 11.0
(byte~) main::$3 reg byte alu 22.0

View File

@ -2,7 +2,7 @@
(label) @begin
(label) @end
(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()
(byte~) main::$1 reg byte a 11.0
(byte~) main::$3 reg byte alu 22.0

View File

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

View File

@ -2,13 +2,13 @@
(label) @begin
(label) @end
(byte*) RASTER
(const byte*) RASTER#0 RASTER = (word) 53266
(const byte*) RASTER#0 RASTER = ((byte*))(word) 53266
(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
(const byte[256]) buffer1#0 buffer1 = (word/signed word) 4096
(const byte[256]) buffer1#0 buffer1 = ((byte*))(word/signed word) 4096
(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()
(byte~) flip::$0 reg byte a 2002.0
(byte~) flip::$4 reg byte a 202.0

View File

@ -1,7 +1,7 @@
// Minimal classic for() loop
byte* SCREEN = $0400;
byte* SCREEN = (byte*)$0400;
void main() {
for(byte i=0; i!=100; i++) {
@ -12,7 +12,8 @@ void main() {
Adding pre/post-modifier (byte) main::i ← ++ (byte) main::i
PROGRAM
(byte*) SCREEN ← (word/signed word) 1024
(byte*~) $0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN ← (byte*~) $0
proc (void()) main()
(byte) main::i ← (byte/signed byte/word/signed word) 0
main::@1:
@ -26,6 +27,7 @@ endproc // main()
call main
SYMBOLS
(byte*~) $0
(byte*) SCREEN
(void()) main()
(boolean~) main::$0
@ -35,7 +37,8 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024
(byte*~) $0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN ← (byte*~) $0
to:@1
main: scope:[main] from
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024
(byte*~) $0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN ← (byte*~) $0
to:@1
main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 0
@ -82,7 +86,8 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024
(byte*~) $0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN ← (byte*~) $0
to:@1
main: scope:[main] from @1
(byte) main::i ← (byte/signed byte/word/signed word) 0
@ -108,7 +113,8 @@ Completing Phi functions...
Completing Phi functions...
CONTROL FLOW GRAPH SSA
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*~) $0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN#0 ← (byte*~) $0
to:@1
main: scope:[main] from @1
(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
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*~) $0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN#0 ← (byte*~) $0
to:@1
main: scope:[main] from @1
(byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#3 )
@ -161,6 +168,7 @@ main::@return: scope:[main] from main::@1
@end: scope:[] from @2
INITIAL SSA SYMBOL TABLE
(byte*~) $0
(label) @1
(label) @2
(label) @begin
@ -183,7 +191,8 @@ Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*~) $0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN#0 ← (byte*~) $0
to:@1
main: scope:[main] from @1
(byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#3 )
@ -206,11 +215,11 @@ main::@return: scope:[main] from main::@1
to:@end
@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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from @1
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from @1
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from @1
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from @1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -303,7 +312,7 @@ main::@return: scope:[main] from main::@1
to:@end
@end: scope:[] from @1
Constant (const byte*) SCREEN#0 = 1024
Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte) main::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
CONTROL FLOW GRAPH
@ -355,7 +364,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024
(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(void()) main()
(label) main::@1
(label) main::@return
@ -733,7 +742,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) main()
(label) main::@1
(label) main::@return

View File

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

View File

@ -49,8 +49,8 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN1 ← (word/signed word) 1024
(byte*) SCREEN2 ← (word/signed word) 1280
(byte*) SCREEN1 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN2 ← ((byte*)) (word/signed word) 1280
to:@1
main: scope:[main] from
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN1 ← (word/signed word) 1024
(byte*) SCREEN2 ← (word/signed word) 1280
(byte*) SCREEN1 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN2 ← ((byte*)) (word/signed word) 1280
to:@1
main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 0
@ -116,8 +116,8 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from
(byte*) SCREEN1 ← (word/signed word) 1024
(byte*) SCREEN2 ← (word/signed word) 1280
(byte*) SCREEN1 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN2 ← ((byte*)) (word/signed word) 1280
to:@1
main: scope:[main] from @1
(byte) main::i ← (byte/signed byte/word/signed word) 0
@ -154,8 +154,8 @@ Completing Phi functions...
Completing Phi functions...
CONTROL FLOW GRAPH SSA
@begin: scope:[] from
(byte*) SCREEN1#0 ← (word/signed word) 1024
(byte*) SCREEN2#0 ← (word/signed word) 1280
(byte*) SCREEN1#0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN2#0 ← ((byte*)) (word/signed word) 1280
to:@1
main: scope:[main] from @1
(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
@begin: scope:[] from
(byte*) SCREEN1#0 ← (word/signed word) 1024
(byte*) SCREEN2#0 ← (word/signed word) 1280
(byte*) SCREEN1#0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN2#0 ← ((byte*)) (word/signed word) 1280
to:@1
main: scope:[main] from @1
(byte*) SCREEN2#4 ← phi( @1/(byte*) SCREEN2#5 )
@ -275,8 +275,8 @@ Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN1#0 ← (word/signed word) 1024
(byte*) SCREEN2#0 ← (word/signed word) 1280
(byte*) SCREEN1#0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN2#0 ← ((byte*)) (word/signed word) 1280
to:@1
main: scope:[main] from @1
(byte*) SCREEN2#4 ← phi( @1/(byte*) SCREEN2#5 )
@ -321,8 +321,8 @@ Alias (byte*) SCREEN2#2 = (byte*) SCREEN2#3
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN1#0 ← (word/signed word) 1024
(byte*) SCREEN2#0 ← (word/signed word) 1280
(byte*) SCREEN1#0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN2#0 ← ((byte*)) (word/signed word) 1280
to:@1
main: scope:[main] from @1
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN1#0 ← (word/signed word) 1024
(byte*) SCREEN2#0 ← (word/signed word) 1280
(byte*) SCREEN1#0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN2#0 ← ((byte*)) (word/signed word) 1280
to:@1
main: scope:[main] from @1
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN1#0 ← (word/signed word) 1024
(byte*) SCREEN2#0 ← (word/signed word) 1280
(byte*) SCREEN1#0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN2#0 ← ((byte*)) (word/signed word) 1280
to:@1
main: scope:[main] from @1
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN1#0 ← (word/signed word) 1024
(byte*) SCREEN2#0 ← (word/signed word) 1280
(byte*) SCREEN1#0 ← ((byte*)) (word/signed word) 1024
(byte*) SCREEN2#0 ← ((byte*)) (word/signed word) 1280
to:@1
main: scope:[main] from @1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -467,8 +467,8 @@ main::@return: scope:[main] from main::@2
to:@end
@end: scope:[] from @1
Constant (const byte*) SCREEN1#0 = 1024
Constant (const byte*) SCREEN2#0 = 1280
Constant (const byte*) SCREEN1#0 = ((byte*))1024
Constant (const byte*) SCREEN2#0 = ((byte*))1280
Constant (const byte) main::i#0 = 0
Constant (const byte) main::j#0 = 100
Succesful SSA optimization Pass2ConstantIdentification
@ -569,9 +569,9 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) SCREEN1
(const byte*) SCREEN1#0 = (word/signed word) 1024
(const byte*) SCREEN1#0 = ((byte*))(word/signed word) 1024
(byte*) SCREEN2
(const byte*) SCREEN2#0 = (word/signed word) 1280
(const byte*) SCREEN2#0 = ((byte*))(word/signed word) 1280
(void()) main()
(label) main::@1
(label) main::@2
@ -1098,9 +1098,9 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) SCREEN1
(const byte*) SCREEN1#0 SCREEN1 = (word/signed word) 1024
(const byte*) SCREEN1#0 SCREEN1 = ((byte*))(word/signed word) 1024
(byte*) SCREEN2
(const byte*) SCREEN2#0 SCREEN2 = (word/signed word) 1280
(const byte*) SCREEN2#0 SCREEN2 = ((byte*))(word/signed word) 1280
(void()) main()
(label) main::@1
(label) main::@2

View File

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

View File

@ -210,12 +210,12 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024
(byte*) CHARSET ← (word/signed word) 8192
(byte*) CHARGEN ← (word) 53248
(byte*) PROCPORT ← (byte/signed byte/word/signed word) 1
(byte*) D018 ← (word) 53272
(byte*) CHARSET4 ← (word/signed word) 10240
(byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte*) CHARSET ← ((byte*)) (word/signed word) 8192
(byte*) CHARGEN ← ((byte*)) (word) 53248
(byte*) PROCPORT ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) D018 ← ((byte*)) (word) 53272
(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 }
to:@1
main: scope:[main] from
@ -334,12 +334,12 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024
(byte*) CHARSET ← (word/signed word) 8192
(byte*) CHARGEN ← (word) 53248
(byte*) PROCPORT ← (byte/signed byte/word/signed word) 1
(byte*) D018 ← (word) 53272
(byte*) CHARSET4 ← (word/signed word) 10240
(byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte*) CHARSET ← ((byte*)) (word/signed word) 8192
(byte*) CHARGEN ← ((byte*)) (word) 53248
(byte*) PROCPORT ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) D018 ← ((byte*)) (word) 53272
(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 }
to:@1
main: scope:[main] from @1
@ -468,12 +468,12 @@ Completing Phi functions...
Completing Phi functions...
CONTROL FLOW GRAPH SSA
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) CHARSET#0 ← (word/signed word) 8192
(byte*) CHARGEN#0 ← (word) 53248
(byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1
(byte*) D018#0 ← (word) 53272
(byte*) CHARSET4#0 ← (word/signed word) 10240
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) CHARSET#0 ← ((byte*)) (word/signed word) 8192
(byte*) CHARGEN#0 ← ((byte*)) (word) 53248
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) D018#0 ← ((byte*)) (word) 53272
(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 }
to:@1
main: scope:[main] from @1
@ -688,12 +688,12 @@ main::@return: scope:[main] from main::@12
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) CHARSET#0 ← (word/signed word) 8192
(byte*) CHARGEN#0 ← (word) 53248
(byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1
(byte*) D018#0 ← (word) 53272
(byte*) CHARSET4#0 ← (word/signed word) 10240
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) CHARSET#0 ← ((byte*)) (word/signed word) 8192
(byte*) CHARGEN#0 ← ((byte*)) (word) 53248
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) D018#0 ← ((byte*)) (word) 53272
(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 }
to:@1
main: scope:[main] from @1
@ -1111,12 +1111,12 @@ Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) CHARSET#0 ← (word/signed word) 8192
(byte*) CHARGEN#0 ← (word) 53248
(byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1
(byte*) D018#0 ← (word) 53272
(byte*) CHARSET4#0 ← (word/signed word) 10240
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) CHARSET#0 ← ((byte*)) (word/signed word) 8192
(byte*) CHARGEN#0 ← ((byte*)) (word) 53248
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) D018#0 ← ((byte*)) (word) 53272
(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 }
to:@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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) CHARSET#0 ← (word/signed word) 8192
(byte*) CHARGEN#0 ← (word) 53248
(byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1
(byte*) D018#0 ← (word) 53272
(byte*) CHARSET4#0 ← (word/signed word) 10240
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) CHARSET#0 ← ((byte*)) (word/signed word) 8192
(byte*) CHARGEN#0 ← ((byte*)) (word) 53248
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) D018#0 ← ((byte*)) (word) 53272
(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 }
to:@1
main: scope:[main] from @1
@ -1606,12 +1606,12 @@ Alias (byte*) D018#1 = (byte*) D018#2
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) CHARSET#0 ← (word/signed word) 8192
(byte*) CHARGEN#0 ← (word) 53248
(byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1
(byte*) D018#0 ← (word) 53272
(byte*) CHARSET4#0 ← (word/signed word) 10240
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) CHARSET#0 ← ((byte*)) (word/signed word) 8192
(byte*) CHARGEN#0 ← ((byte*)) (word) 53248
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) D018#0 ← ((byte*)) (word) 53272
(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 }
to:@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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) CHARSET#0 ← (word/signed word) 8192
(byte*) CHARGEN#0 ← (word) 53248
(byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1
(byte*) D018#0 ← (word) 53272
(byte*) CHARSET4#0 ← (word/signed word) 10240
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) CHARSET#0 ← ((byte*)) (word/signed word) 8192
(byte*) CHARGEN#0 ← ((byte*)) (word) 53248
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) D018#0 ← ((byte*)) (word) 53272
(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 }
to:@1
main: scope:[main] from @1
@ -1894,12 +1894,12 @@ Self Phi Eliminated (byte*) D018#1
Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) CHARSET#0 ← (word/signed word) 8192
(byte*) CHARGEN#0 ← (word) 53248
(byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1
(byte*) D018#0 ← (word) 53272
(byte*) CHARSET4#0 ← (word/signed word) 10240
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) CHARSET#0 ← ((byte*)) (word/signed word) 8192
(byte*) CHARGEN#0 ← ((byte*)) (word) 53248
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) D018#0 ← ((byte*)) (word) 53272
(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 }
to:@1
main: scope:[main] from @1
@ -2020,12 +2020,12 @@ Redundant Phi (byte*) D018#1 (byte*) D018#10
Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) CHARSET#0 ← (word/signed word) 8192
(byte*) CHARGEN#0 ← (word) 53248
(byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1
(byte*) D018#0 ← (word) 53272
(byte*) CHARSET4#0 ← (word/signed word) 10240
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) CHARSET#0 ← ((byte*)) (word/signed word) 8192
(byte*) CHARGEN#0 ← ((byte*)) (word) 53248
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) D018#0 ← ((byte*)) (word) 53272
(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 }
to:@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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) CHARSET#0 ← (word/signed word) 8192
(byte*) CHARGEN#0 ← (word) 53248
(byte*) PROCPORT#0 ← (byte/signed byte/word/signed word) 1
(byte*) D018#0 ← (word) 53272
(byte*) CHARSET4#0 ← (word/signed word) 10240
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) CHARSET#0 ← ((byte*)) (word/signed word) 8192
(byte*) CHARGEN#0 ← ((byte*)) (word) 53248
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word) 1
(byte*) D018#0 ← ((byte*)) (word) 53272
(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 }
to:@1
main: scope:[main] from @1
@ -2241,12 +2241,12 @@ main::@return: scope:[main] from main::@12
to:@end
@end: scope:[] from @1
Constant (const byte*) SCREEN#0 = 1024
Constant (const byte*) CHARSET#0 = 8192
Constant (const byte*) CHARGEN#0 = 53248
Constant (const byte*) PROCPORT#0 = 1
Constant (const byte*) D018#0 = 53272
Constant (const byte*) CHARSET4#0 = 10240
Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte*) CHARSET#0 = ((byte*))8192
Constant (const byte*) CHARGEN#0 = ((byte*))53248
Constant (const byte*) PROCPORT#0 = ((byte*))1
Constant (const byte*) D018#0 = ((byte*))53272
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) main::bits_gen#0 = 0
Constant (const byte) main::i#0 = 0
@ -2591,17 +2591,17 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) CHARGEN
(const byte*) CHARGEN#0 = (word) 53248
(const byte*) CHARGEN#0 = ((byte*))(word) 53248
(byte*) CHARSET
(const byte*) CHARSET#0 = (word/signed word) 8192
(const byte*) CHARSET#0 = ((byte*))(word/signed word) 8192
(byte*) CHARSET4
(const byte*) CHARSET4#0 = (word/signed word) 10240
(const byte*) CHARSET4#0 = ((byte*))(word/signed word) 10240
(byte*) D018
(const byte*) D018#0 = (word) 53272
(const byte*) D018#0 = ((byte*))(word) 53272
(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
(const byte*) SCREEN#0 = (word/signed word) 1024
(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(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 }
(void()) main()
@ -5209,17 +5209,17 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) CHARGEN
(const byte*) CHARGEN#0 CHARGEN = (word) 53248
(const byte*) CHARGEN#0 CHARGEN = ((byte*))(word) 53248
(byte*) CHARSET
(const byte*) CHARSET#0 CHARSET = (word/signed word) 8192
(const byte*) CHARSET#0 CHARSET = ((byte*))(word/signed word) 8192
(byte*) CHARSET4
(const byte*) CHARSET4#0 CHARSET4 = (word/signed word) 10240
(const byte*) CHARSET4#0 CHARSET4 = ((byte*))(word/signed word) 10240
(byte*) D018
(const byte*) D018#0 D018 = (word) 53272
(const byte*) D018#0 D018 = ((byte*))(word) 53272
(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
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(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 }
(void()) main()

View File

@ -2,17 +2,17 @@
(label) @begin
(label) @end
(byte*) CHARGEN
(const byte*) CHARGEN#0 CHARGEN = (word) 53248
(const byte*) CHARGEN#0 CHARGEN = ((byte*))(word) 53248
(byte*) CHARSET
(const byte*) CHARSET#0 CHARSET = (word/signed word) 8192
(const byte*) CHARSET#0 CHARSET = ((byte*))(word/signed word) 8192
(byte*) CHARSET4
(const byte*) CHARSET4#0 CHARSET4 = (word/signed word) 10240
(const byte*) CHARSET4#0 CHARSET4 = ((byte*))(word/signed word) 10240
(byte*) D018
(const byte*) D018#0 D018 = (word) 53272
(const byte*) D018#0 D018 = ((byte*))(word) 53272
(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
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(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 }
(void()) main()

View File

@ -41,7 +41,7 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024
(byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024
(byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 0
@ -102,7 +102,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024
(byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from @1
(byte) main::i ← (byte/signed byte/word/signed word) 0
@ -136,7 +136,7 @@ Completing Phi functions...
Completing Phi functions...
CONTROL FLOW GRAPH SSA
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from @1
(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
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from @1
(byte*) SCREEN#3 ← phi( @1/(byte*) SCREEN#5 )
@ -241,7 +241,7 @@ Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from @1
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from @1
(byte*) SCREEN#3 ← phi( @1/(byte*) SCREEN#5 )
@ -318,7 +318,7 @@ Alias (byte*) SCREEN#1 = (byte*) SCREEN#2
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from @1
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from @1
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from @1
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from @1
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from @1
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -469,7 +469,7 @@ main::@return: scope:[main] from main::@2
to:@end
@end: scope:[] from @1
Constant (const byte*) SCREEN#0 = 1024
Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte) main::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
CONTROL FLOW GRAPH
@ -529,7 +529,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024
(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(void()) main()
(label) main::@1
(label) main::@2
@ -965,7 +965,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) main()
(label) main::@1
(label) main::@2

View File

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

View File

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

View File

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

View File

@ -51,7 +51,7 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH
@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 }
to:@1
main: scope:[main] from
@ -87,7 +87,7 @@ main::@return: scope:[main] from main::@4
Removing empty block main::@4
CONTROL FLOW GRAPH
@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 }
to:@1
main: scope:[main] from
@ -122,7 +122,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@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 }
to:@1
main: scope:[main] from @1
@ -160,7 +160,7 @@ Completing Phi functions...
Completing Phi functions...
CONTROL FLOW GRAPH SSA
@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 }
to:@1
main: scope:[main] from @1
@ -210,7 +210,7 @@ main::@return: scope:[main] from main::@2
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@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 }
to:@1
main: scope:[main] from @1
@ -303,7 +303,7 @@ Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH
@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 }
to:@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
CONTROL FLOW GRAPH
@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 }
to:@1
main: scope:[main] from @1
@ -406,7 +406,7 @@ Alias (byte*) SCREEN#1 = (byte*) SCREEN#5
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@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 }
to:@1
main: scope:[main] from @1
@ -450,7 +450,7 @@ Alias (byte*) SCREEN#1 = (byte*) SCREEN#3
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@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 }
to:@1
main: scope:[main] from @1
@ -490,7 +490,7 @@ Self Phi Eliminated (byte*) SCREEN#1
Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH
@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 }
to:@1
main: scope:[main] from @1
@ -530,7 +530,7 @@ Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH
@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 }
to:@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
CONTROL FLOW GRAPH
@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 }
to:@1
main: scope:[main] from @1
@ -599,7 +599,7 @@ main::@return: scope:[main] from main::@2
to:@end
@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) main::j#0 = 0
Constant (const byte) main::i#0 = 0
@ -681,7 +681,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024
(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(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 }
(void()) main()
@ -1256,7 +1256,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(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 }
(void()) main()

View File

@ -2,7 +2,7 @@
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(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 }
(void()) main()

View File

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

View File

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

View File

@ -38,7 +38,7 @@ INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from
to:@1
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
to:main::@1
main::@1: scope:[main] from main main::@1
@ -65,7 +65,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from
to:@1
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
to:main::@1
main::@1: scope:[main] from main main::@1
@ -91,7 +91,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from
to:@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
to:main::@1
main::@1: scope:[main] from main main::@1
@ -118,7 +118,7 @@ CONTROL FLOW GRAPH SSA
@begin: scope:[] from
to:@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
to:main::@1
main::@1: scope:[main] from main main::@1
@ -146,7 +146,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from
to:@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
to:main::@1
main::@1: scope:[main] from main main::@1
@ -196,7 +196,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from
to:@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
to:main::@1
main::@1: scope:[main] from main main::@1
@ -224,7 +224,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from
to:@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
to:main::@1
main::@1: scope:[main] from main main::@1
@ -251,7 +251,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from
to:@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
to:main::@1
main::@1: scope:[main] from main main::@1
@ -278,7 +278,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from
to:@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
to:main::@1
main::@1: scope:[main] from main main::@1
@ -304,7 +304,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from
to:@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
to:main::@1
main::@1: scope:[main] from main main::@1
@ -323,7 +323,7 @@ main::@return: scope:[main] from main::@1
to:@end
@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
Succesful SSA optimization Pass2ConstantIdentification
CONTROL FLOW GRAPH
@ -436,7 +436,7 @@ FINAL SYMBOL TABLE
(label) main::@1
(label) main::@return
(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#1
(byte) main::i#2
@ -845,7 +845,7 @@ FINAL SYMBOL TABLE
(label) main::@1
(label) main::@return
(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#1 reg byte x 16.5
(byte) main::i#2 reg byte x 14.666666666666666

View File

@ -6,7 +6,7 @@
(label) main::@1
(label) main::@return
(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#1 reg byte x 16.5
(byte) main::i#2 reg byte x 14.666666666666666

View File

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

View File

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

View File

@ -56,7 +56,7 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024
(byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 100
@ -98,7 +98,7 @@ Removing empty block @1
Removing empty block nest::@2
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024
(byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 100
@ -133,7 +133,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024
(byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from @2
(byte) main::i ← (byte/signed byte/word/signed word) 100
@ -175,7 +175,7 @@ Completing Phi functions...
Completing Phi functions...
CONTROL FLOW GRAPH SSA
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from @2
(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
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from @2
(byte*) SCREEN#4 ← phi( @2/(byte*) SCREEN#6 )
@ -301,7 +301,7 @@ Culled Empty Block (label) @3
Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from @2
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from @2
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from @2
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from @2
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from @2
(byte) main::i#0 ← (byte/signed byte/word/signed word) 100
@ -506,7 +506,7 @@ nest::@return: scope:[nest] from nest::@1
to:@end
@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) nest::j#0 = 100
Succesful SSA optimization Pass2ConstantIdentification
@ -586,7 +586,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024
(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(void()) main()
(label) main::@1
(label) main::@3
@ -1196,7 +1196,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) main()
(label) main::@1
(label) main::@3

View File

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

View File

@ -116,7 +116,7 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024
(byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 100
@ -200,7 +200,7 @@ Removing empty block @2
Removing empty block nest2::@4
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024
(byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 100
@ -271,7 +271,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024
(byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from @3
(byte) main::i ← (byte/signed byte/word/signed word) 100
@ -356,7 +356,7 @@ Completing Phi functions...
Completing Phi functions...
CONTROL FLOW GRAPH SSA
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from @3
(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
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from @3
(byte*) SCREEN#13 ← phi( @3/(byte*) SCREEN#15 )
@ -650,7 +650,7 @@ Culled Empty Block (label) @4
Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from @3
(byte*) SCREEN#13 ← phi( @3/(byte*) SCREEN#15 )
@ -764,7 +764,7 @@ Alias (byte*) SCREEN#1 = (byte*) SCREEN#4
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from @3
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from @3
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from @3
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from @3
(byte) main::i#0 ← (byte/signed byte/word/signed word) 100
@ -1117,7 +1117,7 @@ nest2::@return: scope:[nest2] from nest2::@3
to:@end
@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::j#0 = 100
Constant (const byte) nest1::i#0 = 100
@ -1427,7 +1427,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024
(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(void()) main()
(label) main::@1
(label) main::@2
@ -2742,7 +2742,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) main()
(label) main::@1
(label) main::@2

View File

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

View File

@ -67,7 +67,7 @@ INITIAL CONTROL FLOW GRAPH
(byte) cnt ← (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[256]) SCREEN ← (word/signed word) 1024
(byte[256]) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from
(byte~) main::$0 ← call inccnt
@ -105,7 +105,7 @@ CONTROL FLOW GRAPH
(byte) cnt ← (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[256]) SCREEN ← (word/signed word) 1024
(byte[256]) SCREEN ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from
(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) cnt2 ← (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
main: scope:[main] from @2
(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) cnt2#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
main: scope:[main] from @2
(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) cnt2#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
main: scope:[main] from @2
(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) cnt2#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
main: scope:[main] from @2
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) cnt2#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
CONTROL FLOW GRAPH
@begin: scope:[] from
@ -686,7 +686,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(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#1
(byte) cnt#11
@ -1303,7 +1303,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(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#1 reg byte x 0.75
(byte) cnt#11 reg byte x 4.0

View File

@ -2,7 +2,7 @@
(label) @begin
(label) @end
(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#1 reg byte x 0.75
(byte) cnt#11 reg byte x 4.0

View File

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

View File

@ -2,7 +2,7 @@
(label) @begin
(label) @end
(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#1 reg byte x 1.6
(byte) cnt#11 reg byte x 4.0

View File

@ -75,7 +75,7 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024
(byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 0
@ -128,7 +128,7 @@ Removing empty block @1
Removing empty block @2
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024
(byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 0
@ -174,7 +174,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024
(byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from @3
(byte) main::i ← (byte/signed byte/word/signed word) 0
@ -237,7 +237,7 @@ Completing Phi functions...
Completing Phi functions...
CONTROL FLOW GRAPH SSA
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from @3
(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
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from @3
(byte*) SCREEN#6 ← phi( @3/(byte*) SCREEN#10 )
@ -443,7 +443,7 @@ Culled Empty Block (label) @4
Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from @3
(byte*) SCREEN#6 ← phi( @3/(byte*) SCREEN#10 )
@ -526,7 +526,7 @@ Alias (byte*) SCREEN#2 = (byte*) SCREEN#3
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from @3
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from @3
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from @3
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from @3
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from @3
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@3
main: scope:[main] from @3
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -902,7 +902,7 @@ plot::@return: scope:[plot] from plot
to:@end
@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::j#0 = 10
Succesful SSA optimization Pass2ConstantIdentification
@ -1086,7 +1086,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024
(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(void()) line((byte) line::l)
(byte~) line::$1
(label) line::@1
@ -2045,7 +2045,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(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)
(byte~) line::$1 reg byte a 4.0
(label) line::@1

View File

@ -2,7 +2,7 @@
(label) @begin
(label) @end
(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)
(byte~) line::$1 reg byte a 4.0
(label) line::@1

View File

@ -71,7 +71,7 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024
(byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 0
@ -122,7 +122,7 @@ Removing empty block main::@6
Removing empty block @1
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024
(byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 0
@ -169,7 +169,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024
(byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from @2
(byte) main::i ← (byte/signed byte/word/signed word) 0
@ -229,7 +229,7 @@ Completing Phi functions...
Completing Phi functions...
CONTROL FLOW GRAPH SSA
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from @2
(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
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from @2
(byte*) SCREEN#5 ← phi( @2/(byte*) SCREEN#11 )
@ -433,7 +433,7 @@ Culled Empty Block (label) @3
Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from @2
(byte*) SCREEN#5 ← phi( @2/(byte*) SCREEN#11 )
@ -516,7 +516,7 @@ Alias (byte*) SCREEN#10 = (byte*) SCREEN#4
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from @2
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from @2
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from @2
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from @2
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@2
main: scope:[main] from @2
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -827,7 +827,7 @@ plot::@return: scope:[plot] from plot
to:@end
@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::j#0 = 0
Constant (const byte) main::k#0 = 0
@ -1001,7 +1001,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024
(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(void()) main()
(label) main::@1
(label) main::@2
@ -1920,7 +1920,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) main()
(label) main::@1
(label) main::@2

View File

@ -2,7 +2,7 @@
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) main()
(label) main::@1
(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 ] )
to:main::@4
main::@4: scope:[main] from main::@2
[15] *((word) 53280) ← ++ *((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 [ ] )
[15] *(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280) [ ] ( 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 [ ] )
to:main::@return
main::@return: scope:[main] from main::@4

View File

@ -24,8 +24,8 @@ void main() {
}
// Incrementing directly on a word
++*$d020;
--*($d000+$21);
++*(byte*)$d020;
--*(byte*)($d000+$21);
// Increment on a const named pointer
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)
PROGRAM
proc (void()) main()
@ -66,11 +66,17 @@ main::@2:
(byte) main::j ← ++ (byte) main::j
(boolean~) main::$12 ← (byte) main::j != (byte/signed byte/word/signed word) 11
if((boolean~) main::$12) goto main::@2
*((word) 53280) ← ++ *((word) 53280)
(word~) main::$13 ← (word) 53248 + (byte/signed byte/word/signed word) 33
*((word~) main::$13) ← -- *((word~) main::$13)
(word~) main::$14 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(word~) main::$15 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*~) main::$13 ← ((byte*)) (word) 53280
*((byte*~) main::$13) ← ++ *((byte*~) main::$13)
(byte*~) main::$14 ← ((byte*)) (word) 53280
(byte*~) main::$15 ← ((byte*)) (word) 53280
(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) ← ++ *((byte*) main::BGCOL)
main::@return:
@ -85,10 +91,16 @@ SYMBOLS
(byte*~) main::$10
(byte*~) main::$11
(boolean~) main::$12
(word~) main::$13
(word~) main::$14
(word~) main::$15
(byte*~) main::$13
(byte*~) main::$14
(byte*~) main::$15
(word~) main::$16
(byte*~) main::$17
(word~) main::$18
(byte*~) main::$19
(byte*~) main::$2
(word~) main::$20
(byte*~) main::$21
(boolean~) main::$3
(byte*~) main::$4
(byte*~) main::$5
@ -110,7 +122,7 @@ INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from
to:@1
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::a ← *((byte*~) main::$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
to:main::@4
main::@4: scope:[main] from main::@2
*((word) 53280) ← ++ *((word) 53280)
(word~) main::$13 ← (word) 53248 + (byte/signed byte/word/signed word) 33
*((word~) main::$13) ← -- *((word~) main::$13)
(word~) main::$14 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(word~) main::$15 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*) main::BGCOL ← (word) 53280
(byte*~) main::$13 ← ((byte*)) (word) 53280
*((byte*~) main::$13) ← ++ *((byte*~) main::$13)
(byte*~) main::$14 ← ((byte*)) (word) 53280
(byte*~) main::$15 ← ((byte*)) (word) 53280
(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 ← ((byte*)) (word) 53280
*((byte*) main::BGCOL) ← ++ *((byte*) main::BGCOL)
to:main::@return
main::@return: scope:[main] from main::@4
@ -166,7 +184,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from
to:@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::a ← *((byte*~) main::$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
to:main::@4
main::@4: scope:[main] from main::@2
*((word) 53280) ← ++ *((word) 53280)
(word~) main::$13 ← (word) 53248 + (byte/signed byte/word/signed word) 33
*((word~) main::$13) ← -- *((word~) main::$13)
(word~) main::$14 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(word~) main::$15 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*) main::BGCOL ← (word) 53280
(byte*~) main::$13 ← ((byte*)) (word) 53280
*((byte*~) main::$13) ← ++ *((byte*~) main::$13)
(byte*~) main::$14 ← ((byte*)) (word) 53280
(byte*~) main::$15 ← ((byte*)) (word) 53280
(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 ← ((byte*)) (word) 53280
*((byte*) main::BGCOL) ← ++ *((byte*) main::BGCOL)
to:main::@return
main::@return: scope:[main] from main::@4
@ -223,7 +247,7 @@ CONTROL FLOW GRAPH SSA
@begin: scope:[] from
to:@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::a#0 ← *((byte*~) main::$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
to:main::@4
main::@4: scope:[main] from main::@2
*((word) 53280) ← ++ *((word) 53280)
(word~) main::$13 ← (word) 53248 + (byte/signed byte/word/signed word) 33
*((word~) main::$13) ← -- *((word~) main::$13)
(word~) main::$14 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(word~) main::$15 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*) main::BGCOL#0 ← (word) 53280
(byte*~) main::$13 ← ((byte*)) (word) 53280
*((byte*~) main::$13) ← ++ *((byte*~) main::$13)
(byte*~) main::$14 ← ((byte*)) (word) 53280
(byte*~) main::$15 ← ((byte*)) (word) 53280
(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#0 ← ((byte*)) (word) 53280
*((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0)
to:main::@return
main::@return: scope:[main] from main::@4
@ -284,7 +314,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from
to:@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::a#0 ← *((byte*~) main::$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
to:main::@4
main::@4: scope:[main] from main::@2
*((word) 53280) ← ++ *((word) 53280)
(word~) main::$13 ← (word) 53248 + (byte/signed byte/word/signed word) 33
*((word~) main::$13) ← -- *((word~) main::$13)
(word~) main::$14 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(word~) main::$15 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*) main::BGCOL#0 ← (word) 53280
(byte*~) main::$13 ← ((byte*)) (word) 53280
*((byte*~) main::$13) ← ++ *((byte*~) main::$13)
(byte*~) main::$14 ← ((byte*)) (word) 53280
(byte*~) main::$15 ← ((byte*)) (word) 53280
(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#0 ← ((byte*)) (word) 53280
*((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0)
to:main::@return
main::@return: scope:[main] from main::@4
@ -352,10 +388,16 @@ INITIAL SSA SYMBOL TABLE
(byte*~) main::$10
(byte*~) main::$11
(boolean~) main::$12
(word~) main::$13
(word~) main::$14
(word~) main::$15
(byte*~) main::$13
(byte*~) main::$14
(byte*~) main::$15
(word~) main::$16
(byte*~) main::$17
(word~) main::$18
(byte*~) main::$19
(byte*~) main::$2
(word~) main::$20
(byte*~) main::$21
(boolean~) main::$3
(byte*~) main::$4
(byte*~) main::$5
@ -394,7 +436,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from
to:@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::a#0 ← *((byte*~) main::$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
to:main::@4
main::@4: scope:[main] from main::@2
*((word) 53280) ← ++ *((word) 53280)
(word~) main::$13 ← (word) 53248 + (byte/signed byte/word/signed word) 33
*((word~) main::$13) ← -- *((word~) main::$13)
(word~) main::$14 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(word~) main::$15 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*) main::BGCOL#0 ← (word) 53280
(byte*~) main::$13 ← ((byte*)) (word) 53280
*((byte*~) main::$13) ← ++ *((byte*~) main::$13)
(byte*~) main::$14 ← ((byte*)) (word) 53280
(byte*~) main::$15 ← ((byte*)) (word) 53280
(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#0 ← ((byte*)) (word) 53280
*((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0)
to:main::@return
main::@return: scope:[main] from main::@4
@ -457,7 +505,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from
to:@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::a#0 ← *((byte*~) main::$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
to:main::@4
main::@4: scope:[main] from main::@2
*((word) 53280) ← ++ *((word) 53280)
(word~) main::$13 ← (word) 53248 + (byte/signed byte/word/signed word) 33
*((word~) main::$13) ← -- *((word~) main::$13)
(word~) main::$14 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(word~) main::$15 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*) main::BGCOL#0 ← (word) 53280
(byte*~) main::$13 ← ((byte*)) (word) 53280
*((byte*~) main::$13) ← ++ *((byte*~) main::$13)
(byte*~) main::$14 ← ((byte*)) (word) 53280
(byte*~) main::$15 ← ((byte*)) (word) 53280
(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#0 ← ((byte*)) (word) 53280
*((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0)
to:main::@return
main::@return: scope:[main] from main::@4
@ -518,7 +572,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from
to:@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::a#0 ← *((byte*~) main::$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
to:main::@4
main::@4: scope:[main] from main::@2
*((word) 53280) ← ++ *((word) 53280)
(word~) main::$13 ← (word) 53248 + (byte/signed byte/word/signed word) 33
*((word~) main::$13) ← -- *((word~) main::$13)
(word~) main::$14 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(word~) main::$15 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*) main::BGCOL#0 ← (word) 53280
(byte*~) main::$13 ← ((byte*)) (word) 53280
*((byte*~) main::$13) ← ++ *((byte*~) main::$13)
(byte*~) main::$14 ← ((byte*)) (word) 53280
(byte*~) main::$15 ← ((byte*)) (word) 53280
(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#0 ← ((byte*)) (word) 53280
*((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0)
to:main::@return
main::@return: scope:[main] from main::@4
@ -578,7 +638,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from
to:@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::a#0 ← *((byte*~) main::$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
to:main::@4
main::@4: scope:[main] from main::@2
*((word) 53280) ← ++ *((word) 53280)
(word~) main::$13 ← (word) 53248 + (byte/signed byte/word/signed word) 33
*((word~) main::$13) ← -- *((word~) main::$13)
(word~) main::$14 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(word~) main::$15 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*) main::BGCOL#0 ← (word) 53280
(byte*~) main::$13 ← ((byte*)) (word) 53280
*((byte*~) main::$13) ← ++ *((byte*~) main::$13)
(byte*~) main::$14 ← ((byte*)) (word) 53280
(byte*~) main::$15 ← ((byte*)) (word) 53280
(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#0 ← ((byte*)) (word) 53280
*((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0)
to:main::@return
main::@return: scope:[main] from main::@4
@ -636,7 +702,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from
to:@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::a#0 ← *((byte*~) main::$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
to:main::@4
main::@4: scope:[main] from main::@2
*((word) 53280) ← ++ *((word) 53280)
(word~) main::$13 ← (word) 53248 + (byte/signed byte/word/signed word) 33
*((word~) main::$13) ← -- *((word~) main::$13)
(word~) main::$14 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(word~) main::$15 ← (word) 53248 + (byte/signed byte/word/signed word) 33
(byte*) main::BGCOL#0 ← (word) 53280
(byte*~) main::$13 ← ((byte*)) (word) 53280
*((byte*~) main::$13) ← ++ *((byte*~) main::$13)
(byte*~) main::$14 ← ((byte*)) (word) 53280
(byte*~) main::$15 ← ((byte*)) (word) 53280
(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#0 ← ((byte*)) (word) 53280
*((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0)
to:main::@return
main::@return: scope:[main] from main::@4
@ -685,13 +757,16 @@ main::@return: scope:[main] from main::@4
to:@end
@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::j#0 = 0
Constant (const word) main::$13 = 53248+33
Constant (const word) main::$14 = 53248+33
Constant (const word) main::$15 = 53248+33
Constant (const byte*) main::BGCOL#0 = 53280
Constant (const byte*) main::$13 = ((byte*))53280
Constant (const byte*) main::$14 = ((byte*))53280
Constant (const byte*) main::$15 = ((byte*))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
CONTROL FLOW GRAPH
@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
to:main::@4
main::@4: scope:[main] from main::@2
*((word) 53280) ← ++ *((word) 53280)
*((const word) main::$13) ← -- *((const word) main::$13)
*((const byte*) main::$13) ← ++ *((const byte*) 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)
to:main::@return
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::$8 = main::screen#0+160
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
CONTROL FLOW GRAPH
@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
to:main::@4
main::@4: scope:[main] from main::@2
*((word) 53280) ← ++ *((word) 53280)
*((const word) main::$13) ← -- *((const word) main::$13)
*((const byte*) main::$13) ← ++ *((const byte*) main::$13)
*((const byte*) main::$17) ← -- *((const byte*) main::$17)
*((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0)
to:main::@return
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::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::$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::$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::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::$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::$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
Succesful SSA optimization Pass2ConstantInlining
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
to:main::@4
main::@4: scope:[main] from main::@2
*((word) 53280) ← ++ *((word) 53280)
*((word) 53248+(byte/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33)
*(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280)
*(((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)
to:main::@return
main::@return: scope:[main] from main::@4
@ -863,7 +950,7 @@ FINAL SYMBOL TABLE
(label) main::@4
(label) main::@return
(byte*) main::BGCOL
(const byte*) main::BGCOL#0 = (word) 53280
(const byte*) main::BGCOL#0 = ((byte*))(word) 53280
(byte) main::a
(byte) main::a#0
(byte) main::i
@ -875,7 +962,7 @@ FINAL SYMBOL TABLE
(byte*) main::sc2
(const byte*) main::sc2#0 = (const byte*) main::screen#0+(byte/signed byte/word/signed word) 81
(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
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
to:main::@4
main::@4: scope:[main] from main::@2
*((word) 53280) ← ++ *((word) 53280)
*((word) 53248+(byte/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33)
*(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280)
*(((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)
to:main::@return
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 ]
to:main::@4
main::@4: scope:[main] from main::@2
[15] *((word) 53280) ← ++ *((word) 53280) [ ]
[16] *((word) 53248+(byte/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) [ ]
[15] *(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280) [ ]
[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) [ ]
to:main::@return
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 ]
to:main::@4
main::@4: scope:[main] from main::@2
[15] *((word) 53280) ← ++ *((word) 53280) [ ]
[16] *((word) 53248+(byte/signed byte/word/signed word) 33) ← -- *((word) 53248+(byte/signed byte/word/signed word) 33) [ ]
[15] *(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280) [ ]
[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) [ ]
to:main::@return
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 ] )
to:main::@4
main::@4: scope:[main] from main::@2
[15] *((word) 53280) ← ++ *((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 [ ] )
[15] *(((byte*))(word) 53280) ← ++ *(((byte*))(word) 53280) [ ] ( 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 [ ] )
to:main::@return
main::@return: scope:[main] from main::@4
@ -1238,9 +1325,9 @@ main: {
jmp b4
//SEG30 main::@4
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
//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
//SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1
inc BGCOL
@ -1391,9 +1478,9 @@ main: {
bne b2_from_b2
//SEG30 main::@4
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
//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
//SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1
inc BGCOL
@ -1501,9 +1588,9 @@ main: {
bne b2_from_b2
//SEG30 main::@4
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
//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
//SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1
inc BGCOL
@ -1612,9 +1699,9 @@ main: {
bne b2
//SEG30 main::@4
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
//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
//SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1
inc BGCOL
@ -1719,9 +1806,9 @@ main: {
cpx #$b
bne b2
//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
//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
//SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1
inc BGCOL
@ -1818,9 +1905,9 @@ main: {
cpx #$b
bne b2
//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
//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
//SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1
inc BGCOL
@ -1843,7 +1930,7 @@ FINAL SYMBOL TABLE
(label) main::@4
(label) main::@return
(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#0 reg byte a 20.0
(byte) main::i
@ -1855,7 +1942,7 @@ FINAL SYMBOL TABLE
(byte*) main::sc2
(const byte*) main::sc2#0 sc2 = (const byte*) main::screen#0+(byte/signed byte/word/signed word) 81
(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::j#2 main::j#1 ]
@ -1948,9 +2035,9 @@ main: {
cpx #$b
bne b2
//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
//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
//SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1
inc BGCOL

View File

@ -11,7 +11,7 @@
(label) main::@4
(label) main::@return
(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#0 reg byte a 20.0
(byte) main::i
@ -23,7 +23,7 @@
(byte*) main::sc2
(const byte*) main::sc2#0 sc2 = (const byte*) main::screen#0+(byte/signed byte/word/signed word) 81
(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::j#2 main::j#1 ]

View File

@ -24,7 +24,7 @@ lvaluevar: scope:[lvaluevar] from main::@3
[7] phi() [ ] ( main:0::lvaluevar:5 [ ] )
to:lvaluevar::@1
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 ] )
[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
@ -40,7 +40,7 @@ rvaluevar: scope:[rvaluevar] from main::@2
[14] phi() [ ] ( main:0::rvaluevar:4 [ ] )
to:rvaluevar::@1
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 ] )
[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

View File

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

View File

@ -6,7 +6,7 @@
(label) lvalue::@2
(label) lvalue::@return
(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#1 reg byte x 22.0
(byte) lvalue::i#2 reg byte x 14.666666666666666
@ -32,7 +32,7 @@
(label) rvalue::@2
(label) rvalue::@return
(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#0 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
to:@1
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
to:main::@1
main::@1: scope:[main] from main main::@2
@ -87,7 +87,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from
to:@1
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
to:main::@1
main::@1: scope:[main] from main main::@2
@ -113,7 +113,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from
to:@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
to:main::@1
main::@1: scope:[main] from main main::@2
@ -141,7 +141,7 @@ CONTROL FLOW GRAPH SSA
@begin: scope:[] from
to:@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
to:main::@1
main::@1: scope:[main] from main main::@2
@ -171,7 +171,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from
to:@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
to:main::@1
main::@1: scope:[main] from main main::@2
@ -226,7 +226,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from
to:@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
to:main::@1
main::@1: scope:[main] from main main::@2
@ -258,7 +258,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from
to:@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
to:main::@1
main::@1: scope:[main] from main main::@2
@ -285,7 +285,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from
to:@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
to:main::@1
main::@1: scope:[main] from main main::@2
@ -312,7 +312,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from
to:@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
to:main::@1
main::@1: scope:[main] from main main::@2
@ -338,7 +338,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from
to:@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
to:main::@1
main::@1: scope:[main] from main main::@2
@ -357,7 +357,7 @@ main::@return: scope:[main] from main::@1
to:@end
@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
Succesful SSA optimization Pass2ConstantIdentification
CONTROL FLOW GRAPH
@ -417,7 +417,7 @@ FINAL SYMBOL TABLE
(label) main::@2
(label) main::@return
(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#0
(byte) main::i
@ -776,7 +776,7 @@ FINAL SYMBOL TABLE
(label) main::@2
(label) main::@return
(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#0 reg byte a 110.0
(byte) main::i

View File

@ -6,7 +6,7 @@
(label) main::@2
(label) main::@return
(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#0 reg byte a 110.0
(byte) main::i

View File

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

View File

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

View File

@ -149,10 +149,10 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024
(byte*) RASTER ← (word) 53266
(byte*) BGCOL ← (word) 53280
(byte*) SCROLL ← (word) 53270
(byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte*) RASTER ← ((byte*)) (word) 53266
(byte*) BGCOL ← ((byte*)) (word) 53280
(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. =- @"
to:@1
main: scope:[main] from
@ -245,10 +245,10 @@ Removing empty block @1
Removing empty block fillscreen::@2
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024
(byte*) RASTER ← (word) 53266
(byte*) BGCOL ← (word) 53280
(byte*) SCROLL ← (word) 53270
(byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte*) RASTER ← ((byte*)) (word) 53266
(byte*) BGCOL ← ((byte*)) (word) 53280
(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. =- @"
to:@2
main: scope:[main] from
@ -331,10 +331,10 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024
(byte*) RASTER ← (word) 53266
(byte*) BGCOL ← (word) 53280
(byte*) SCROLL ← (word) 53270
(byte*) SCREEN ← ((byte*)) (word/signed word) 1024
(byte*) RASTER ← ((byte*)) (word) 53266
(byte*) BGCOL ← ((byte*)) (word) 53280
(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. =- @"
to:@2
main: scope:[main] from @2
@ -431,10 +431,10 @@ Completing Phi functions...
Completing Phi functions...
CONTROL FLOW GRAPH SSA
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) RASTER#0 ← (word) 53266
(byte*) BGCOL#0 ← (word) 53280
(byte*) SCROLL#0 ← (word) 53270
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) RASTER#0 ← ((byte*)) (word) 53266
(byte*) BGCOL#0 ← ((byte*)) (word) 53280
(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. =- @"
to:@2
main: scope:[main] from @2
@ -611,10 +611,10 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) RASTER#0 ← (word) 53266
(byte*) BGCOL#0 ← (word) 53280
(byte*) SCROLL#0 ← (word) 53270
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) RASTER#0 ← ((byte*)) (word) 53266
(byte*) BGCOL#0 ← ((byte*)) (word) 53280
(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. =- @"
to:@2
main: scope:[main] from @2
@ -950,10 +950,10 @@ Culled Empty Block (label) @3
Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) RASTER#0 ← (word) 53266
(byte*) BGCOL#0 ← (word) 53280
(byte*) SCROLL#0 ← (word) 53270
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) RASTER#0 ← ((byte*)) (word) 53266
(byte*) BGCOL#0 ← ((byte*)) (word) 53280
(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. =- @"
to:@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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) RASTER#0 ← (word) 53266
(byte*) BGCOL#0 ← (word) 53280
(byte*) SCROLL#0 ← (word) 53270
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) RASTER#0 ← ((byte*)) (word) 53266
(byte*) BGCOL#0 ← ((byte*)) (word) 53280
(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. =- @"
to:@2
main: scope:[main] from @2
@ -1347,10 +1347,10 @@ Alias (byte) fillscreen::fill#0 = (byte) fillscreen::fill#2
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) RASTER#0 ← (word) 53266
(byte*) BGCOL#0 ← (word) 53280
(byte*) SCROLL#0 ← (word) 53270
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) RASTER#0 ← ((byte*)) (word) 53266
(byte*) BGCOL#0 ← ((byte*)) (word) 53280
(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. =- @"
to:@2
main: scope:[main] from @2
@ -1488,10 +1488,10 @@ Alias (byte*) TEXT#13 = (byte*) TEXT#2
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) RASTER#0 ← (word) 53266
(byte*) BGCOL#0 ← (word) 53280
(byte*) SCROLL#0 ← (word) 53270
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) RASTER#0 ← ((byte*)) (word) 53266
(byte*) BGCOL#0 ← ((byte*)) (word) 53280
(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. =- @"
to:@2
main: scope:[main] from @2
@ -1640,10 +1640,10 @@ Self Phi Eliminated (byte*) fillscreen::screen#2
Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) RASTER#0 ← (word) 53266
(byte*) BGCOL#0 ← (word) 53280
(byte*) SCROLL#0 ← (word) 53270
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) RASTER#0 ← ((byte*)) (word) 53266
(byte*) BGCOL#0 ← ((byte*)) (word) 53280
(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. =- @"
to:@2
main: scope:[main] from @2
@ -1775,10 +1775,10 @@ Redundant Phi (byte*) fillscreen::screen#2 (byte*) fillscreen::cursor#0
Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) RASTER#0 ← (word) 53266
(byte*) BGCOL#0 ← (word) 53280
(byte*) SCROLL#0 ← (word) 53270
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) RASTER#0 ← ((byte*)) (word) 53266
(byte*) BGCOL#0 ← ((byte*)) (word) 53280
(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. =- @"
to:@2
main: scope:[main] from @2
@ -1883,10 +1883,10 @@ Redundant Phi (byte*) TEXT#11 (byte*) TEXT#10
Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) RASTER#0 ← (word) 53266
(byte*) BGCOL#0 ← (word) 53280
(byte*) SCROLL#0 ← (word) 53270
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) RASTER#0 ← ((byte*)) (word) 53266
(byte*) BGCOL#0 ← ((byte*)) (word) 53280
(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. =- @"
to:@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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) RASTER#0 ← (word) 53266
(byte*) BGCOL#0 ← (word) 53280
(byte*) SCROLL#0 ← (word) 53270
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(byte*) RASTER#0 ← ((byte*)) (word) 53266
(byte*) BGCOL#0 ← ((byte*)) (word) 53280
(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. =- @"
to:@2
main: scope:[main] from @2
@ -2076,10 +2076,10 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1
to:@end
@end: scope:[] from @2
Constant (const byte*) SCREEN#0 = 1024
Constant (const byte*) RASTER#0 = 53266
Constant (const byte*) BGCOL#0 = 53280
Constant (const byte*) SCROLL#0 = 53270
Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte*) RASTER#0 = ((byte*))53266
Constant (const byte*) BGCOL#0 = ((byte*))53280
Constant (const byte*) SCROLL#0 = ((byte*))53270
Constant (const 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) main::scroll#0 = 7
@ -2872,13 +2872,13 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) BGCOL
(const byte*) BGCOL#0 = (word) 53280
(const byte*) BGCOL#0 = ((byte*))(word) 53280
(byte*) RASTER
(const byte*) RASTER#0 = (word) 53266
(const byte*) RASTER#0 = ((byte*))(word) 53266
(byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024
(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(byte*) SCROLL
(const byte*) SCROLL#0 = (word) 53270
(const byte*) SCROLL#0 = ((byte*))(word) 53270
(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. =- @"
(void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill)
@ -4684,13 +4684,13 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) BGCOL
(const byte*) BGCOL#0 BGCOL = (word) 53280
(const byte*) BGCOL#0 BGCOL = ((byte*))(word) 53280
(byte*) RASTER
(const byte*) RASTER#0 RASTER = (word) 53266
(const byte*) RASTER#0 RASTER = ((byte*))(word) 53266
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte*) SCROLL
(const byte*) SCROLL#0 SCROLL = (word) 53270
(const byte*) SCROLL#0 SCROLL = ((byte*))(word) 53270
(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. =- @"
(void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill)

View File

@ -2,13 +2,13 @@
(label) @begin
(label) @end
(byte*) BGCOL
(const byte*) BGCOL#0 BGCOL = (word) 53280
(const byte*) BGCOL#0 BGCOL = ((byte*))(word) 53280
(byte*) RASTER
(const byte*) RASTER#0 RASTER = (word) 53266
(const byte*) RASTER#0 RASTER = ((byte*))(word) 53266
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte*) SCROLL
(const byte*) SCROLL#0 SCROLL = (word) 53270
(const byte*) SCROLL#0 SCROLL = ((byte*))(word) 53270
(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. =- @"
(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 ] )
to:scroll_bit::@8
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 ] )
[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 ] )
[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 ] )
[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 ] )
[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::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] (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*~) 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
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 ] )
[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 ] )
[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] 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 ] )
[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 ] )
[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 ] )
[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 ] )
[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
scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1
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
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 ] )
[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::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] 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 ] )
[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 ] )
[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 ] )
[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 ] )
[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 ] )
[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
scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2
to:scroll_bit::@3
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::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::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 ] )
[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 ] )
[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 ] )
[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 ] )
[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 ] )
[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
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 }
to:scroll_bit::@return
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
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
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::$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] *((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] (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] *((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] (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] *((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] (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] *((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] (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] *((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] (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] *((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] (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] *((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] (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] *((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] (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] 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 ] )
[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 ] )
[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 ] )
[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 ] )
[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 ] )
[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 ] )
[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 ] )
[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 ] )
[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 ] )
[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 ] )
[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 ] )
[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 ] )
[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 ] )
[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 ] )
[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 ] )
[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 ] )
[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 ] )
[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 ] )
[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 ] )
[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
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
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] 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 ] )
[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 ] )
[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
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
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 ] )
[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#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 ] )
[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 ] )
[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 ] )
[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
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
fillscreen: scope:[fillscreen] from main
[68] phi() [ ] ( main:0::fillscreen:2 [ ] )
[69] phi() [ ] ( main:0::fillscreen:2 [ ] )
to: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) ← (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] 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 ] )
[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 ] )
[71] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] )
[72] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ 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
fillscreen::@return: scope:[fillscreen] from fillscreen::@1
[73] return [ ] ( main:0::fillscreen:2 [ ] )
[74] return [ ] ( main:0::fillscreen:2 [ ] )
to:@return

File diff suppressed because it is too large Load Diff

View File

@ -2,17 +2,17 @@
(label) @begin
(label) @end
(byte*) BGCOL
(const byte*) BGCOL#0 BGCOL = (word) 53280
(const byte*) BGCOL#0 BGCOL = ((byte*))(word) 53280
(byte*) CHARGEN
(const byte*) CHARGEN#0 CHARGEN = (word) 53248
(const byte*) CHARGEN#0 CHARGEN = ((byte*))(word) 53248
(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
(const byte*) RASTER#0 RASTER = (word) 53266
(const byte*) RASTER#0 RASTER = ((byte*))(word) 53266
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(byte*) SCROLL
(const byte*) SCROLL#0 SCROLL = (word) 53270
(const byte*) SCROLL#0 SCROLL = ((byte*))(word) 53270
(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. =- @"
(byte) current_bit
@ -51,7 +51,7 @@
(byte) next_char::return
(byte*) nxt
(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#31 nxt zp ZP_PTR_BYTE:7 1.5454545454545456
(byte*) nxt#36 nxt zp ZP_PTR_BYTE:7 0.3529411764705882
@ -62,6 +62,7 @@
(void()) scroll_bit()
(byte~) scroll_bit::$0 reg byte a 4.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
(byte*~) scroll_bit::$5 $5 zp ZP_PTR_BYTE:3 4.0
(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 ]
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::$3 ]
zp ZP_WORD:9 [ scroll_bit::c#0 scroll_bit::$4 ]
reg byte a [ scroll_bit::bits#0 ]
reg byte a [ scroll_bit::$10 ]

View File

@ -16,7 +16,8 @@ main::@return: scope:[main] from main::@1
[4] return [ ] ( main:0 [ ] )
to:@return
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 ] )
[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 ] )
[7] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] ( main:0 [ main::i#1 main::j#1 ] )
[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] *((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] (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

View File

@ -4,7 +4,7 @@ void main() {
byte j = 0;
signed byte i = -127;
while(i<127) {
screen[j] = i;
screen[j] = (byte)i;
i++;
j++;
}
@ -23,7 +23,8 @@ main::@1:
if((boolean~) main::$1) goto main::@2
goto main::@3
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
(byte) main::j ← ++ (byte) main::j
goto main::@1
@ -37,6 +38,7 @@ SYMBOLS
(void()) main()
(signed byte/signed word~) main::$0
(boolean~) main::$1
(byte~) main::$2
(label) main::@1
(label) main::@2
(label) main::@3
@ -49,7 +51,7 @@ INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from
to:@1
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
(signed byte/signed word~) main::$0 ← - (byte/signed byte/word/signed word) 127
(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
to:main::@4
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
(byte) main::j ← ++ (byte) main::j
to:main::@1
@ -87,7 +90,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from
to:@1
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
(signed byte/signed word~) main::$0 ← - (byte/signed byte/word/signed word) 127
(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
to:main::@return
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
(byte) main::j ← ++ (byte) main::j
to:main::@1
@ -115,7 +119,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from
to:@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
(signed byte/signed word~) main::$0 ← - (byte/signed byte/word/signed word) 127
(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
to:main::@return
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
(byte) main::j ← ++ (byte) main::j
to:main::@1
@ -145,7 +150,7 @@ CONTROL FLOW GRAPH SSA
@begin: scope:[] from
to:@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
(signed byte/signed word~) main::$0 ← - (byte/signed byte/word/signed word) 127
(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::screen#1 ← phi( main::@1/(byte[]) main::screen#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
(byte) main::j#1 ← ++ (byte) main::j#2
to:main::@1
@ -179,7 +185,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from
to:@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
(signed byte/signed word~) main::$0 ← - (byte/signed byte/word/signed word) 127
(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::screen#1 ← phi( main::@1/(byte[]) main::screen#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
(byte) main::j#1 ← ++ (byte) main::j#2
to:main::@1
@ -217,6 +224,7 @@ INITIAL SSA SYMBOL TABLE
(void()) main()
(signed byte/signed word~) main::$0
(boolean~) main::$1
(byte~) main::$2
(label) main::@1
(label) main::@2
(label) main::@return
@ -241,7 +249,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from
to:@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
(signed byte/signed word~) main::$0 ← - (byte/signed byte/word/signed word) 127
(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::screen#1 ← phi( main::@1/(byte[]) main::screen#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
(byte) main::j#1 ← ++ (byte) main::j#2
to:main::@1
@ -278,7 +287,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from
to:@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
(signed byte) main::i#0 ← - (byte/signed byte/word/signed word) 127
to:main::@1
@ -290,7 +299,8 @@ main::@1: scope:[main] from main main::@2
if((boolean~) main::$1) goto main::@2
to:main::@return
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
(byte) main::j#1 ← ++ (byte) main::j#2
to:main::@1
@ -308,7 +318,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from
to:@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
(signed byte) main::i#0 ← - (byte/signed byte/word/signed word) 127
to:main::@1
@ -320,7 +330,8 @@ main::@1: scope:[main] from main main::@2
if((boolean~) main::$1) goto main::@2
to:main::@return
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
(byte) main::j#1 ← ++ (byte) main::j#2
to:main::@1
@ -338,7 +349,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from
to:@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
(signed byte) main::i#0 ← - (byte/signed byte/word/signed word) 127
to:main::@1
@ -349,7 +360,8 @@ main::@1: scope:[main] from main main::@2
if((boolean~) main::$1) goto main::@2
to:main::@return
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
(byte) main::j#1 ← ++ (byte) main::j#2
to:main::@1
@ -367,7 +379,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from
to:@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
(signed byte) main::i#0 ← - (byte/signed byte/word/signed word) 127
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
to:main::@return
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
(byte) main::j#1 ← ++ (byte) main::j#2
to:main::@1
@ -389,7 +402,7 @@ main::@return: scope:[main] from main::@1
to:@end
@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 signed byte) main::i#0 = -127
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
to:main::@return
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
(byte) main::j#1 ← ++ (byte) main::j#2
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
to:main::@return
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
(byte) main::j#1 ← ++ (byte) main::j#2
to:main::@1
@ -451,6 +466,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(void()) main()
(byte~) main::$2
(label) main::@1
(label) main::@2
(label) main::@return
@ -461,7 +477,7 @@ FINAL SYMBOL TABLE
(byte) main::j#1
(byte) main::j#2
(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
@ -483,7 +499,8 @@ main::@return: scope:[main] from main::@1
return
to:@return
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
(byte) main::j#1 ← ++ (byte) main::j#2
(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...
CONTROL FLOW GRAPH - LIVE RANGES FOUND
@begin: scope:[] from
to:@1
@ -516,22 +534,24 @@ main::@return: scope:[main] from main::@1
[4] return [ ]
to:@return
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 ]
[6] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ]
[7] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ]
[8] (signed byte~) main::i#4 ← (signed byte) main::i#1 [ main::i#4 main::j#1 ]
[9] (byte~) main::j#4 ← (byte) main::j#1 [ main::i#4 main::j#4 ]
[5] (byte~) main::$2 ← ((byte)) (signed byte) main::i#2 [ main::i#2 main::j#2 main::$2 ]
[6] *((const byte[]) main::screen#0 + (byte) main::j#2) ← (byte~) main::$2 [ main::i#2 main::j#2 ]
[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 ]
[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
Created 2 initial phi equivalence classes
Coalesced [8] main::i#4 ← main::i#1
Coalesced [9] main::j#4 ← main::j#1
Coalesced [9] main::i#4 ← main::i#1
Coalesced [10] main::j#4 ← main::j#1
Coalesced down to 2 phi equivalence classes
Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@2
Adding NOP phi() at start of main
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
CONTROL FLOW GRAPH - BEFORE EFFECTIVE LIVE RANGES
@begin: scope:[] from
to:@1
@ -551,9 +571,10 @@ main::@return: scope:[main] from main::@1
[4] return [ ]
to:@return
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 ]
[6] (signed byte) main::i#1 ← ++ (signed byte) main::i#2 [ main::j#2 main::i#1 ]
[7] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ]
[5] (byte~) main::$2 ← ((byte)) (signed byte) main::i#2 [ main::i#2 main::j#2 main::$2 ]
[6] *((const byte[]) main::screen#0 + (byte) main::j#2) ← (byte~) main::$2 [ main::i#2 main::j#2 ]
[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
CONTROL FLOW GRAPH - PHI MEM COALESCED
@ -575,9 +596,10 @@ main::@return: scope:[main] from main::@1
[4] return [ ] ( main:0 [ ] )
to:@return
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 ] )
[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 ] )
[7] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#1 main::j#1 ] ( main:0 [ main::i#1 main::j#1 ] )
[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] *((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] (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
DOMINATORS
@ -603,22 +625,26 @@ Loop head: main::@1 tails: main::@2 blocks: main::@2 main::@1 depth: 1
VARIABLE REGISTER WEIGHTS
(void()) main()
(byte~) main::$2 22.0
(signed byte) main::i
(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#1 22.0
(byte) main::j#2 8.25
(byte) main::j#2 6.6000000000000005
(byte[]) main::screen
Initial phi equivalence classes
[ main::i#2 main::i#1 ]
[ main::j#2 main::j#1 ]
Added variable main::$2 to zero page equivalence class [ main::$2 ]
Complete equivalence classes
[ main::i#2 main::i#1 ]
[ main::j#2 main::j#1 ]
[ main::$2 ]
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:4 [ main::$2 ]
INITIAL ASM
//SEG0 Basic Upstart
.pc = $801 "Basic"
@ -640,6 +666,7 @@ bend:
//SEG7 main
main: {
.const screen = $400
.label _2 = 4
.label i = 2
.label j = 3
//SEG8 [2] phi from main to main::@1 [phi:main->main::@1]
@ -668,18 +695,21 @@ main: {
rts
//SEG15 main::@2
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
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
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
//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
//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:
//SEG20 [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
//SEG21 [2] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- 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
}
@ -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
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:4 [ main::$2 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y ,
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 []
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
MISSING FRAGMENTS
asby=_inc_asby
cowo1_derefidx_xby=asby
cowo1_derefidx_yby=asby
xsby_lt_coby1_then_la1
ysby_lt_coby1_then_la1
Removing instruction jmp b1
@ -760,17 +789,18 @@ main: {
rts
//SEG15 main::@2
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
//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
//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
//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
//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:
//SEG20 [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
//SEG21 [2] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- 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
}
@ -818,17 +848,18 @@ main: {
rts
//SEG15 main::@2
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
//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
//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
//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
//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:
//SEG20 [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
//SEG21 [2] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- 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
}
@ -875,16 +906,17 @@ main: {
rts
//SEG15 main::@2
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
//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
//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
//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
//SEG19 [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 (signed byte) main::i#2 = (signed byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy
//SEG20 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
//SEG21 [2] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- 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
}
@ -893,20 +925,22 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(void()) main()
(byte~) main::$2 reg byte a 22.0
(label) main::@1
(label) main::@2
(label) main::@return
(signed byte) main::i
(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#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
(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 ]
reg byte x [ main::j#2 main::j#1 ]
reg byte a [ main::$2 ]
FINAL CODE
//SEG0 Basic Upstart
@ -945,16 +979,17 @@ main: {
rts
//SEG15 main::@2
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
//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
//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
//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
//SEG19 [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 (signed byte) main::i#2 = (signed byte) main::i#1 [phi:main::@2->main::@1#1] -- register_copy
//SEG20 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
//SEG21 [2] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@1#0] -- 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
}

View File

@ -2,17 +2,19 @@
(label) @begin
(label) @end
(void()) main()
(byte~) main::$2 reg byte a 22.0
(label) main::@1
(label) main::@2
(label) main::@return
(signed byte) main::i
(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#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
(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 ]
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
@begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024
(byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from
*((byte*) SCREEN) ← (byte/signed byte/word/signed word) 1
@ -36,7 +36,7 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from
(byte*) SCREEN ← (word/signed word) 1024
(byte*) SCREEN ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from @1
*((byte*) SCREEN) ← (byte/signed byte/word/signed word) 1
@ -55,7 +55,7 @@ Completing Phi functions...
Completing Phi functions...
CONTROL FLOW GRAPH SSA
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from @1
(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
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from @1
(byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 )
@ -107,7 +107,7 @@ Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from @1
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
to:@1
main: scope:[main] from @1
*((byte*) SCREEN#0) ← (byte/signed byte/word/signed word) 1
@ -139,7 +139,7 @@ main::@return: scope:[main] from main
to:@end
@end: scope:[] from @1
Constant (const byte*) SCREEN#0 = 1024
Constant (const byte*) SCREEN#0 = ((byte*))1024
Succesful SSA optimization Pass2ConstantIdentification
CONTROL FLOW GRAPH
@begin: scope:[] from
@ -160,7 +160,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024
(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(void()) main()
(label) main::@return
@ -376,7 +376,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(void()) main()
(label) main::@return

View File

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

View File

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

View File

@ -2,13 +2,13 @@
(label) @begin
(label) @end
(byte*) COLORS
(const byte*) COLORS#0 COLORS = (word) 55296
(const byte*) COLORS#0 COLORS = ((byte*))(word) 55296
(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 }
(byte) FILL
(const byte) FILL#0 FILL = (byte/word/signed word) 230
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(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 }
(byte[]) YPOS

View File

@ -91,9 +91,9 @@ SYMBOLS
INITIAL CONTROL FLOW GRAPH
@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
(byte*) SCREEN2 ← (word/signed word~) $0
(byte*) SCREEN2 ← ((byte*)) (word/signed word~) $0
to:@1
main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 0
@ -154,9 +154,9 @@ Removing empty block @2
Removing empty block sum2::@1
CONTROL FLOW GRAPH
@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
(byte*) SCREEN2 ← (word/signed word~) $0
(byte*) SCREEN2 ← ((byte*)) (word/signed word~) $0
to:@3
main: scope:[main] from
(byte) main::i ← (byte/signed byte/word/signed word) 0
@ -204,9 +204,9 @@ PROCEDURE MODIFY VARIABLE ANALYSIS
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@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
(byte*) SCREEN2 ← (word/signed word~) $0
(byte*) SCREEN2 ← ((byte*)) (word/signed word~) $0
to:@3
main: scope:[main] from @3
(byte) main::i ← (byte/signed byte/word/signed word) 0
@ -271,9 +271,9 @@ Completing Phi functions...
Completing Phi functions...
CONTROL FLOW GRAPH SSA
@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
(byte*) SCREEN2#0 ← (word/signed word~) $0
(byte*) SCREEN2#0 ← ((byte*)) (word/signed word~) $0
to:@3
main: scope:[main] from @3
(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
@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
(byte*) SCREEN2#0 ← (word/signed word~) $0
(byte*) SCREEN2#0 ← ((byte*)) (word/signed word~) $0
to:@3
main: scope:[main] from @3
(byte*) SCREEN2#4 ← phi( @3/(byte*) SCREEN2#5 )
@ -522,9 +522,9 @@ Culled Empty Block (label) @4
Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH
@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
(byte*) SCREEN2#0 ← (word/signed word~) $0
(byte*) SCREEN2#0 ← ((byte*)) (word/signed word~) $0
to:@3
main: scope:[main] from @3
(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: main::$5 sum2::return#3
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*) SCREEN#1 = (byte*) SCREEN#2 (byte*) SCREEN#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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN2#0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(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
main: scope:[main] from @3
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN2#0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(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
main: scope:[main] from @3
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN2#0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(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
main: scope:[main] from @3
(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
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) SCREEN#0 ← (word/signed word) 1024
(byte*) SCREEN2#0 ← (word/signed word) 1024 + (byte/signed byte/word/signed word) 40
(byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024
(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
main: scope:[main] from @3
(byte) main::i#0 ← (byte/signed byte/word/signed word) 0
@ -870,11 +874,66 @@ sum2::@return: scope:[sum2] from sum2
to:@end
@end: scope:[] from @3
Constant (const byte*) SCREEN#0 = 1024
Constant (const byte*) SCREEN2#0 = 1024+40
Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const word/signed word) $0 = 1024+40
Constant (const byte) main::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification
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
to:@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
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
Succesful SSA optimization Pass2ConstantInlining
CONTROL FLOW GRAPH
@ -1007,9 +1067,9 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 = (word/signed word) 1024
(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024
(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()
(byte~) main::$0
(byte~) main::$1
@ -2081,9 +2141,9 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(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()
(byte~) main::$0 reg byte x 7.333333333333333
(byte~) main::$1 reg byte a 7.333333333333333

View File

@ -2,9 +2,9 @@
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024
(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()
(byte~) main::$0 reg byte x 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
[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 ] )
[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 ] )
[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 ] )

View File

@ -23,7 +23,7 @@ main::@2:
main::@3:
(byte*~) main::$0 ← (byte*) main::zpptr + (byte) main::i
(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
(byte*~) main::$2 ← (byte*) main::zpptr2 + (word) main::w
(byte*) main::zpptr2 ← (byte*~) main::$2
@ -65,7 +65,7 @@ INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from
to:@1
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
to:main::@1
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
(byte*~) main::$0 ← (byte*) main::zpptr + (byte) main::i
(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
(byte*~) main::$2 ← (byte*) main::zpptr2 + (word) main::w
(byte*) main::zpptr2 ← (byte*~) main::$2
@ -111,7 +111,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from
to:@1
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
to:main::@1
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
(byte*~) main::$0 ← (byte*) main::zpptr + (byte) main::i
(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
(byte*~) main::$2 ← (byte*) main::zpptr2 + (word) main::w
(byte*) main::zpptr2 ← (byte*~) main::$2
@ -156,7 +156,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@begin: scope:[] from
to:@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
to:main::@1
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
(byte*~) main::$0 ← (byte*) main::zpptr + (byte) main::i
(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
(byte*~) main::$2 ← (byte*) main::zpptr2 + (word) main::w
(byte*) main::zpptr2 ← (byte*~) main::$2
@ -205,7 +205,7 @@ CONTROL FLOW GRAPH SSA
@begin: scope:[] from
to:@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
to:main::@1
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::$0 ← (byte*) main::zpptr#1 + (byte) main::i#2
(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
(byte*~) main::$2 ← (byte*) main::zpptr2#0 + (word) main::w#0
(byte*) main::zpptr2#1 ← (byte*~) main::$2
@ -264,7 +264,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from
to:@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
to:main::@1
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::$0 ← (byte*) main::zpptr#1 + (byte) main::i#2
(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
(byte*~) main::$2 ← (byte*) main::zpptr2#0 + (word) main::w#0
(byte*) main::zpptr2#1 ← (byte*~) main::$2
@ -374,7 +374,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from
to:@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
to:main::@1
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::$0 ← (byte*) main::zpptr#1 + (byte) main::i#2
(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
(byte*~) main::$2 ← (byte*) main::zpptr2#0 + (word) main::w#0
(byte*) main::zpptr2#1 ← (byte*~) main::$2
@ -438,7 +438,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from
to:@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
to:main::@1
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::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
(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::k#2
(byte) main::k#1 ← ++ (byte) main::k#2
@ -491,7 +491,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from
to:@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
to:main::@1
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::zpptr#1 ← phi( main::@2/(byte*) main::zpptr#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::k#2
(byte) main::k#1 ← ++ (byte) main::k#2
@ -544,7 +544,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from
to:@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
to:main::@1
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
(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
(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::k#2
(byte) main::k#1 ← ++ (byte) main::k#2
@ -594,7 +594,7 @@ CONTROL FLOW GRAPH
@begin: scope:[] from
to:@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
to:main::@1
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
(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
(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::k#2
(byte) main::k#1 ← ++ (byte) main::k#2
@ -633,7 +633,7 @@ main::@return: scope:[main] from main::@5
to:@end
@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::i#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
(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
(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::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
(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
(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::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
(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
(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::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
(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
(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::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
(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
(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::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
(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
(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::k#2
(byte) main::k#1 ← ++ (byte) main::k#2
@ -907,7 +907,7 @@ FINAL SYMBOL TABLE
(word) main::w
(word) main::w#0
(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#0
(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
(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
(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::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
[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 ]
[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 ]
[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 ]
@ -1056,7 +1056,7 @@ main::@2: scope:[main] from main::@1 main::@4
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 ]
[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 ]
[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 ]
@ -1093,7 +1093,7 @@ main::@2: scope:[main] from main::@1 main::@4
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 ] )
[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 ] )
[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 ] )
@ -1254,7 +1254,7 @@ main: {
lda #>zpptr
adc #0
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
sta w
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: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 ]
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 [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: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 ]
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 [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 ,
@ -1409,7 +1409,7 @@ main: {
lda #>zpptr
adc #0
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
sta w
lda #0
@ -1520,7 +1520,7 @@ main: {
lda #>zpptr
adc #0
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
sta w
lda #0
@ -1624,7 +1624,7 @@ main: {
lda #>zpptr
adc #0
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
sta w
lda #0
@ -1719,7 +1719,7 @@ main: {
lda #>zpptr
adc #0
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
sta w
lda #0
@ -1783,7 +1783,7 @@ FINAL SYMBOL TABLE
(word) main::w
(word) main::w#0 w zp ZP_WORD:6 2002.0
(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#0 zpptr2 zp ZP_PTR_BYTE:4 1001.0
(byte*) main::zpptr2#1 zpptr2 zp ZP_PTR_BYTE:4 2002.0
@ -1844,7 +1844,7 @@ main: {
lda #>zpptr
adc #0
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
sta w
lda #0

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