mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-04-16 08:37:47 +00:00
Fixed several compiler issues with volatiles.
This commit is contained in:
parent
fae4eb9e6c
commit
8ef005e64d
src
main
java/dk/camelot64/kickc/passes
Pass1GenerateSingleStaticAssignmentForm.javaPass2AliasElimination.javaPass5FixLongBranches.javaPassNEliminateUnusedVars.java
kc/stdlib
test
java/dk/camelot64/kickc/test
kc
examples/tetris
nes-background.gpxnes-background.pngnes-playfield.gpxnes-playfield.pngtest-sprites.asmtest-sprites.kctetris.kc
longbranch-interrupt-problem.kctest-interrupt-volatile-write.kcref
bitmap-plotter.cfgbitmap-plotter.logbitmap-plotter.symc64dtv-8bppcharstretch.cfgc64dtv-8bppcharstretch.logc64dtv-8bppcharstretch.symc64dtv-8bppchunkystretch.cfgc64dtv-8bppchunkystretch.logc64dtv-8bppchunkystretch.symc64dtv-blittermin.cfgc64dtv-blittermin.logc64dtv-blittermin.symc64dtv-color.cfgc64dtv-color.logc64dtv-color.symc64dtv-gfxexplorer.asmc64dtv-gfxexplorer.cfgc64dtv-gfxexplorer.logc64dtv-gfxexplorer.symc64dtv-gfxmodes.cfgc64dtv-gfxmodes.logc64dtv-gfxmodes.symconstants.cfgconstants.logconstants.symemptyblock-error.asmemptyblock-error.cfgemptyblock-error.logemptyblock-error.symhalfscii.loghalfscii.symimmzero.asm
examples
3d
bresenham
chargen
fastmultiply
helloworld
irq
multiplexer
rasterbars
rotate
scrolllogo
showlogo
sinplotter
sinsprites
tetris
@ -12,10 +12,7 @@ import dk.camelot64.kickc.model.statements.StatementPhiBlock;
|
||||
import dk.camelot64.kickc.model.symbols.*;
|
||||
import dk.camelot64.kickc.model.types.SymbolType;
|
||||
import dk.camelot64.kickc.model.types.SymbolTypeArray;
|
||||
import dk.camelot64.kickc.model.values.LValue;
|
||||
import dk.camelot64.kickc.model.values.LabelRef;
|
||||
import dk.camelot64.kickc.model.values.RValue;
|
||||
import dk.camelot64.kickc.model.values.VariableRef;
|
||||
import dk.camelot64.kickc.model.values.*;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.LinkedHashMap;
|
||||
@ -241,7 +238,7 @@ public class Pass1GenerateSingleStaticAssignmentForm extends Pass1Base {
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all predecessros for a control flow block.
|
||||
* Get all predecessors for a control flow block.
|
||||
* If the block is the start of an interrupt the @begin is included as a predecessor.
|
||||
* @param block The block to examine
|
||||
* @return All predecessor blocks
|
||||
@ -251,7 +248,14 @@ public class Pass1GenerateSingleStaticAssignmentForm extends Pass1Base {
|
||||
Symbol symbol = getScope().getSymbol(block.getLabel());
|
||||
if(symbol instanceof Procedure) {
|
||||
if(((Procedure) symbol).getInterruptType()!=null) {
|
||||
predecessors.add(getGraph().getFirstBlock());
|
||||
// Find all root-level predecessors to the main block
|
||||
ControlFlowBlock mainBlock = getGraph().getBlock(new LabelRef("main"));
|
||||
List<ControlFlowBlock> mainPredecessors = getGraph().getPredecessors(mainBlock);
|
||||
for(ControlFlowBlock mainPredecessor : mainPredecessors) {
|
||||
if(mainPredecessor.getScope().equals(ScopeRef.ROOT)) {
|
||||
predecessors.add(mainPredecessor);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return predecessors;
|
||||
|
@ -39,6 +39,7 @@ public class Pass2AliasElimination extends Pass2SsaOptimization {
|
||||
public static Aliases findAliases(Program program) {
|
||||
Aliases candidates = findAliasesCandidates(program);
|
||||
cleanupCandidates(candidates, program);
|
||||
cleanupCandidateVolatiles(candidates, program);
|
||||
return candidates;
|
||||
}
|
||||
|
||||
@ -58,7 +59,7 @@ public class Pass2AliasElimination extends Pass2SsaOptimization {
|
||||
for(StatementPhiBlock.PhiRValue phiRValue : phiVariable.getValues()) {
|
||||
RValue rValue = phiRValue.getrValue();
|
||||
if(aliasSet.contains(rValue)) {
|
||||
program.getLog().append("Alias candidate removed " + rValue.toString(program));
|
||||
program.getLog().append("Alias candidate removed (phi-usage) " + rValue.toString(program));
|
||||
aliasSet.remove(rValue);
|
||||
break;
|
||||
}
|
||||
@ -76,12 +77,41 @@ public class Pass2AliasElimination extends Pass2SsaOptimization {
|
||||
while(aliasSetListIterator.hasNext()) {
|
||||
AliasSet aliasSet = aliasSetListIterator.next();
|
||||
if(aliasSet.getVars().size() <= 1) {
|
||||
program.getLog().append("Alias candidate removed " + aliasSet.toString(program));
|
||||
program.getLog().append("Alias candidate removed (solo) " + aliasSet.toString(program));
|
||||
aliasSetListIterator.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Remove all candidates that are volatile and not assigned to the same variable
|
||||
private static void cleanupCandidateVolatiles(Aliases candidates, Program program) {
|
||||
ListIterator<AliasSet> aliasSetListIterator = candidates.getAliasSets().listIterator();
|
||||
while(aliasSetListIterator.hasNext()) {
|
||||
AliasSet aliasSet = aliasSetListIterator.next();
|
||||
ProgramScope programScope = program.getScope();
|
||||
// Examine if any volatile variables are in the alias
|
||||
boolean anyVolatile = false;
|
||||
boolean sameBaseVar = true;
|
||||
String unversionedFullName = null;
|
||||
for(VariableRef variableRef : aliasSet.getVars()) {
|
||||
Variable variable = programScope.getVariable(variableRef);
|
||||
if(variable.isDeclaredVolatile()) {
|
||||
anyVolatile = true;
|
||||
}
|
||||
if(unversionedFullName == null) {
|
||||
unversionedFullName = variableRef.getFullNameUnversioned();
|
||||
} else if(!unversionedFullName.equals(variableRef.getFullNameUnversioned())) {
|
||||
sameBaseVar = false;
|
||||
}
|
||||
}
|
||||
if(anyVolatile & !sameBaseVar) {
|
||||
program.getLog().append("Alias candidate removed (volatile)" + aliasSet.toString(program));
|
||||
aliasSetListIterator.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Find variables which are aliases of other variables.
|
||||
*
|
||||
|
@ -133,11 +133,12 @@ public class Pass5FixLongBranches extends Pass5AsmOptimization {
|
||||
getLog().append("Fixing long branch [" + idx + "] " + asmLine.toString() + " to " + inverseType.getMnemnonic());
|
||||
String branchDest = asmInstruction.getParameter();
|
||||
asmInstruction.setType(inverseType);
|
||||
asmInstruction.setParameter("!" + branchDest + "+");
|
||||
String newLabel = ("!" + branchDest).replace("$","_");
|
||||
asmInstruction.setParameter(newLabel+"+");
|
||||
AsmInstructionType jmpType = AsmInstructionSet.getInstructionType("jmp", AsmAddressingMode.ABS, false);
|
||||
AsmInstruction jmpInstruction = new AsmInstruction(jmpType, branchDest);
|
||||
asmSegment.addLineAfter(asmInstruction, jmpInstruction);
|
||||
asmSegment.addLineAfter(jmpInstruction, new AsmLabel("!" + branchDest));
|
||||
asmSegment.addLineAfter(jmpInstruction, new AsmLabel(newLabel));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -1,14 +1,16 @@
|
||||
package dk.camelot64.kickc.passes;
|
||||
|
||||
import dk.camelot64.kickc.model.*;
|
||||
import dk.camelot64.kickc.model.statements.StatementPhiBlock;
|
||||
import dk.camelot64.kickc.model.values.LValue;
|
||||
import dk.camelot64.kickc.model.values.VariableRef;
|
||||
import dk.camelot64.kickc.model.ControlFlowBlock;
|
||||
import dk.camelot64.kickc.model.Program;
|
||||
import dk.camelot64.kickc.model.VariableReferenceInfos;
|
||||
import dk.camelot64.kickc.model.statements.Statement;
|
||||
import dk.camelot64.kickc.model.statements.StatementAssignment;
|
||||
import dk.camelot64.kickc.model.statements.StatementCall;
|
||||
import dk.camelot64.kickc.model.statements.StatementPhiBlock;
|
||||
import dk.camelot64.kickc.model.symbols.ConstantVar;
|
||||
import dk.camelot64.kickc.model.symbols.Variable;
|
||||
import dk.camelot64.kickc.model.values.LValue;
|
||||
import dk.camelot64.kickc.model.values.VariableRef;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.ListIterator;
|
||||
@ -35,26 +37,28 @@ public class PassNEliminateUnusedVars extends Pass2SsaOptimization {
|
||||
if(statement instanceof StatementAssignment) {
|
||||
StatementAssignment assignment = (StatementAssignment) statement;
|
||||
LValue lValue = assignment.getlValue();
|
||||
if(lValue instanceof VariableRef && referenceInfos.isUnused((VariableRef) lValue) && !Pass2ConstantIdentification.isAddressOfUsed((VariableRef) lValue, getProgram())) {
|
||||
if(getLog().isVerbosePass1CreateSsa()||getLog().isVerboseSSAOptimize()) {
|
||||
getLog().append("Eliminating unused variable " + lValue.toString(getProgram()) + " and assignment " + assignment.toString(getProgram(), false));
|
||||
}
|
||||
stmtIt.remove();
|
||||
if(lValue instanceof VariableRef && referenceInfos.isUnused((VariableRef) lValue) && Pass2ConstantIdentification.isAddressOfUsed((VariableRef) lValue, getProgram())) {
|
||||
Variable variable = getScope().getVariable((VariableRef) lValue);
|
||||
if(variable!=null) {
|
||||
variable.getScope().remove(variable);
|
||||
if(variable==null || !variable.isDeclaredVolatile()) {
|
||||
if(getLog().isVerbosePass1CreateSsa() || getLog().isVerboseSSAOptimize()) {
|
||||
getLog().append("Eliminating unused variable " + lValue.toString(getProgram()) + " and assignment " + assignment.toString(getProgram(), false));
|
||||
}
|
||||
stmtIt.remove();
|
||||
if(variable != null) {
|
||||
variable.getScope().remove(variable);
|
||||
}
|
||||
modified = true;
|
||||
}
|
||||
modified = true;
|
||||
}
|
||||
} else if(statement instanceof StatementCall) {
|
||||
StatementCall call = (StatementCall) statement;
|
||||
LValue lValue = call.getlValue();
|
||||
if(lValue instanceof VariableRef && referenceInfos.isUnused((VariableRef) lValue) && !Pass2ConstantIdentification.isAddressOfUsed((VariableRef) lValue, getProgram())) {
|
||||
if(getLog().isVerbosePass1CreateSsa()||getLog().isVerboseSSAOptimize()) {
|
||||
if(getLog().isVerbosePass1CreateSsa() || getLog().isVerboseSSAOptimize()) {
|
||||
getLog().append("Eliminating unused variable - keeping the call " + lValue.toString(getProgram()));
|
||||
}
|
||||
Variable variable = getScope().getVariable((VariableRef) lValue);
|
||||
if(variable!=null) {
|
||||
if(variable != null) {
|
||||
variable.getScope().remove(variable);
|
||||
}
|
||||
call.setlValue(null);
|
||||
@ -67,11 +71,11 @@ public class PassNEliminateUnusedVars extends Pass2SsaOptimization {
|
||||
StatementPhiBlock.PhiVariable phiVariable = phiVarIt.next();
|
||||
VariableRef variableRef = phiVariable.getVariable();
|
||||
if(referenceInfos.isUnused(variableRef) && !Pass2ConstantIdentification.isAddressOfUsed(variableRef, getProgram())) {
|
||||
if(getLog().isVerbosePass1CreateSsa()||getLog().isVerboseSSAOptimize()) {
|
||||
if(getLog().isVerbosePass1CreateSsa() || getLog().isVerboseSSAOptimize()) {
|
||||
getLog().append("Eliminating unused variable - keeping the phi block " + variableRef.toString(getProgram()));
|
||||
}
|
||||
Variable variable = getScope().getVariable(variableRef);
|
||||
if(variable!=null) {
|
||||
if(variable != null) {
|
||||
variable.getScope().remove(variable);
|
||||
}
|
||||
phiVarIt.remove();
|
||||
@ -85,7 +89,7 @@ public class PassNEliminateUnusedVars extends Pass2SsaOptimization {
|
||||
Collection<ConstantVar> allConstants = getScope().getAllConstants(true);
|
||||
for(ConstantVar constant : allConstants) {
|
||||
if(referenceInfos.isUnused(constant.getRef())) {
|
||||
if(getLog().isVerbosePass1CreateSsa()||getLog().isVerboseSSAOptimize()) {
|
||||
if(getLog().isVerbosePass1CreateSsa() || getLog().isVerboseSSAOptimize()) {
|
||||
getLog().append("Eliminating unused constant " + constant.toString(getProgram()));
|
||||
}
|
||||
constant.getScope().remove(constant);
|
||||
|
@ -18,8 +18,12 @@ const byte PROCPORT_KERNEL_IO = %00110110;
|
||||
// BASIC in $A000, I/O in $D000, KERNEL in $E000
|
||||
const byte PROCPORT_BASIC_KERNEL_IO = %00110111;
|
||||
|
||||
// The address of the CHARGEN character set
|
||||
const byte* CHARGEN = $d000;
|
||||
|
||||
// The offset of the sprite pointers from the screen start address
|
||||
const word SPRITE_PTRS = $3f8;
|
||||
|
||||
const byte* SPRITES_XPOS = $d000;
|
||||
const byte* SPRITES_YPOS = $d001;
|
||||
const byte* SPRITES_XMSB = $d010;
|
||||
@ -101,6 +105,7 @@ const void()** KERNEL_IRQ = $0314;
|
||||
// The vector used when the HARDWARE serves IRQ interrupts
|
||||
const void()** HARDWARE_IRQ = $fffe;
|
||||
|
||||
// The colors of the C64
|
||||
const byte BLACK = $0;
|
||||
const byte WHITE = $1;
|
||||
const byte RED = $2;
|
||||
@ -130,6 +135,13 @@ inline byte toDd00(byte* gfx) {
|
||||
return %00000011 ^ (>((word)gfx))>>6;
|
||||
}
|
||||
|
||||
// Get the sprite pointer for a sprite.
|
||||
// The sprite pointer is the index of the sprite within the graphics bank and equal to the sprite (byte)(sprite_addr/64)
|
||||
// The sprite pointers are stored SCREEN+$3f8+sprite_id to set the pointer of each sprite
|
||||
inline byte toSpritePtr(byte* sprite) {
|
||||
return (byte)(((word)sprite)>>6);
|
||||
}
|
||||
|
||||
// Select a specific VIC graphics bank by setting the CIA 2 port A ($dd00) as needed
|
||||
inline void vicSelectGfxBank(byte* gfx) {
|
||||
*CIA2_PORT_A_DDR = %00000011;
|
||||
|
@ -44,35 +44,50 @@ public class TestPrograms {
|
||||
AsmFragmentTemplateUsages.logUsages(log, false, false, false, false, false, false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInterruptVolatileWrite() throws IOException, URISyntaxException {
|
||||
compileAndCompare("test-interrupt-volatile-write");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLongbranchInterruptProblem() throws IOException, URISyntaxException {
|
||||
compileAndCompare("longbranch-interrupt-problem");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTetrisSprites() throws IOException, URISyntaxException {
|
||||
compileAndCompare("examples/tetris/test-sprites");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTetris() throws IOException, URISyntaxException {
|
||||
compileAndCompare("examples/tetris/tetris");
|
||||
}
|
||||
|
||||
/*
|
||||
@Test
|
||||
public void testVarInitProblem() throws IOException, URISyntaxException {
|
||||
compileAndCompare("var-init-problem");
|
||||
}
|
||||
/*
|
||||
@Test
|
||||
public void testVarInitProblem() throws IOException, URISyntaxException {
|
||||
compileAndCompare("var-init-problem");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConstIfProblem() throws IOException, URISyntaxException {
|
||||
compileAndCompare("const-if-problem");
|
||||
}
|
||||
@Test
|
||||
public void testConstIfProblem() throws IOException, URISyntaxException {
|
||||
compileAndCompare("const-if-problem");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTetrisNullPointer() throws IOException, URISyntaxException {
|
||||
compileAndCompare("tetris-npe");
|
||||
}
|
||||
@Test
|
||||
public void testTetrisNullPointer() throws IOException, URISyntaxException {
|
||||
compileAndCompare("tetris-npe");
|
||||
}
|
||||
|
||||
//@Test
|
||||
//public void testUnrollCall() throws IOException, URISyntaxException {
|
||||
// compileAndCompare("unroll-call");
|
||||
//}
|
||||
//@Test
|
||||
//public void testUnrollCall() throws IOException, URISyntaxException {
|
||||
// compileAndCompare("unroll-call");
|
||||
//}
|
||||
|
||||
|
||||
|
||||
*/
|
||||
*/
|
||||
@Test
|
||||
public void testFastMultiply8() throws IOException, URISyntaxException {
|
||||
compileAndCompare("examples/fastmultiply/fastmultiply8.kc");
|
||||
|
BIN
src/test/kc/examples/tetris/nes-background.gpx
Normal file
BIN
src/test/kc/examples/tetris/nes-background.gpx
Normal file
Binary file not shown.
Binary file not shown.
Before ![]() (image error) Size: 7.3 KiB After ![]() (image error) Size: 4.3 KiB ![]() ![]() |
1
src/test/kc/examples/tetris/nes-playfield.gpx
Normal file
1
src/test/kc/examples/tetris/nes-playfield.gpx
Normal file
@ -0,0 +1 @@
|
||||
xí<>M<EFBFBD>5ÇŸÉl§[4"E\zBR<>Û²mwBu9”+G.¤QVB¤Í*iy; >âÆ™oÃWàËàÇö¼…™(‰Ú®~–&c{<ÿ¿Ç󳣕âg<C3A2>DäØï›còúÕb5›Ï¦¯ä¾)>ŸL¿þúòr¶\5˦…œ˜ât6Ÿ¯^N®ìµéb¾X®¾ûef/½˜\Ùü}yh޶nñÃly9_ühW“¥;›ûÌõ‡òÈmÅ+øH>•39ÕŠÕtiZœš6<C5A1>Mµˆ)Ïf/+«Ÿlî±i"ò³Í?0÷ë•7˜t0%7)T(Ï<>J˜¬B°JîD$Æs‰•&q<>&ðî¼Õ:û¿stй¦ó"ºk‹¶®ÆZç#}ïH¬>BîMå¡BâŸ*ôáJ Ñ*øy"3,ÇG†B2lêì?S‡k:IfÓÎçu<C3A7>,Ñ”í|FgG?þ»ž‡ðƒüÀüÀüÀüÀüÀ:ðÃ{‡ø<>ø<>øA~xïð?ð?ð?èÀüÀüÀüÀüÀüÀÏ5à'ŽN¤ßuGù<47>y¤ß½Gû~¤}±ö)DJ9‰t<E280B0>Ò‡†i=¾ýRä79²Œ’yÚ&š’ê)‘‹(01‚ågáóI]]D2ÔÒŸ×ú{Ö¦r¶wwRQŒ¬Ht!¡)YŸ¸EcVÇ[)R·þ„÷wPˆ…_#Ÿù®>‰3i¹HŽ£<ó‘;<3B>ËRR
v°~RQÙx…£šnšœ‡Öµcq^ô®$r³¾;<‹
6oÖÔ±u†Pg8±uÞ6 Ž
6 Ž
6 Ž
6 Ž
6 Ž
6 Ž
¨3œØ€:É
¨3œØ€:o
PÇPÇPÇPÇPÇ›<>¨w^9È&×ÈÛq°qx}orÔ<72>ÏiÜmÙ_I1) ýn??Ö<>ÑqU[H3¯IcR}=2ä3[|Ooõå>1ÇqKÎO#<17>à¬Rü@•òžÛ#;
³Ž^œTý¼ÓÓÏ{U‹{=-î¬u]ÛÞíi{·R;éiq»jqÖÓÂå>ÒÚž"ߘãÏ[™¤6}¡+Å@—<>²<EFBFBD>È
ñ—núF[díh<C3AD>šãŸ[©+»0’°ì©Q˺3T÷üuºí=ßÐ{šz4h<34>èqá{4¸Eh
ÐcNv#FD!]9ËÏÂ穪‹àôPC”„Õjˆ•}Ÿ7EÅÈŠ<C388>DÇšc<C5A1>‰[4fu¼•Â.<qÖ°rE,üùÌwõ‰÷R…Òr‘Ká™<C3A1>Üi\–ì8Û<38>±¾¸R*Ñ¿5‡å0”hõ¹6\MUîÜ<C3AE>:®èß`>ŒëzÖ})ohБÝd㣘úlykš$¥M»Á¦ìÖ6Ym“Φˆ4Åf“MÝcÓÙ +Ûg³êûd·G=(‹Í;j³5É ƒ êØ€:¨cê Ž
¨ƒ:6 êØ€:p`êÀ<C3AA>
¨¨ƒ:‚:¨cê Ž
¨ƒ:6 êØ€:¨cê Ž
¨6 Þ½÷î°o-û_l2lÞVÔ;¯d“käí¸Ø8¼¾79êÆç4î¶l
Г“H© §¬Õ 2u¾ 'ß%@O-á§‘‹NÐГ·ôäI#šA-ÑÐÓÕÏv€ž®}zºÚ¶ôtµhèéjÑÐÓÕ¢ÐãVo<56>É“i€ýư
Г¸RõU²!ëeZzÌÅ'™<õj™v€žíîqzþwÈ §
|
BIN
src/test/kc/examples/tetris/nes-playfield.png
Normal file
BIN
src/test/kc/examples/tetris/nes-playfield.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 753 B |
16
src/test/kc/examples/tetris/test-sprites.asm
Normal file
16
src/test/kc/examples/tetris/test-sprites.asm
Normal file
@ -0,0 +1,16 @@
|
||||
|
||||
|
||||
.label PLAYFIELD_SPRITES = $3000
|
||||
|
||||
.pc = PLAYFIELD_SPRITES "PLayfield Sprites"
|
||||
.var charset = LoadPicture("nes-playfield.png", List().add($010101, $000000))
|
||||
.for(var sy=0;sy<10;sy++) {
|
||||
.for(var sx=0;sx<3;sx++) {
|
||||
.for (var y=0;y<21; y++) {
|
||||
.for (var c=0; c<3; c++) {
|
||||
.byte charset.getSinglecolorByte(sx*3+c,sy*21+y)
|
||||
}
|
||||
}
|
||||
.byte 0
|
||||
}
|
||||
}
|
102
src/test/kc/examples/tetris/test-sprites.kc
Normal file
102
src/test/kc/examples/tetris/test-sprites.kc
Normal file
@ -0,0 +1,102 @@
|
||||
import "c64"
|
||||
|
||||
byte* PLAYFIELD_SPRITES = $2000;
|
||||
byte* PLAYFIELD_CHARSET = $1000;
|
||||
byte* PLAYFIELD_SCREEN = $0400;
|
||||
|
||||
void main() {
|
||||
init_sprites();
|
||||
init_irq();
|
||||
}
|
||||
|
||||
// Setup the sprites
|
||||
void init_sprites() {
|
||||
vicSelectGfxBank(PLAYFIELD_SCREEN);
|
||||
*D018 = toD018(PLAYFIELD_SCREEN, PLAYFIELD_CHARSET);
|
||||
*SPRITES_ENABLE = %00001111;
|
||||
*SPRITES_EXPAND_X = *SPRITES_EXPAND_Y = *SPRITES_MC = 0;
|
||||
byte* sprites_ptr = PLAYFIELD_SCREEN+SPRITE_PTRS;
|
||||
|
||||
byte xpos = 24+14*8;
|
||||
byte ypos = 50;
|
||||
byte ptr = toSpritePtr(PLAYFIELD_SPRITES);
|
||||
for(byte s:0..3) {
|
||||
byte s2 = s<<1;
|
||||
SPRITES_XPOS[s2] = xpos;
|
||||
SPRITES_YPOS[s2] = ypos;
|
||||
SPRITES_COLS[s] = BLACK;
|
||||
sprites_ptr[s] = ptr;
|
||||
xpos = xpos+24;
|
||||
ptr++;
|
||||
}
|
||||
}
|
||||
|
||||
// The line of the first IRQ - $30 is 2 lines before the start of the screen
|
||||
const byte IRQ_RASTER_FIRST = $30;
|
||||
// The raster line of the next IRQ
|
||||
volatile byte irq_raster_next = IRQ_RASTER_FIRST;
|
||||
// Counting the 10 IRQs
|
||||
volatile byte irq_cnt = 0;
|
||||
// Y-pos of the sprites on the next IRQ
|
||||
volatile byte irq_sprite_ypos = 50;
|
||||
|
||||
// Setup the IRQ
|
||||
void init_irq() {
|
||||
asm { sei }
|
||||
// Disable CIA 1 Timer IRQ
|
||||
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR;
|
||||
// Set raster line
|
||||
*VIC_CONTROL &=$7f;
|
||||
*RASTER = IRQ_RASTER_FIRST;
|
||||
// Enable Raster Interrupt
|
||||
*IRQ_ENABLE = IRQ_RASTER;
|
||||
// Set the IRQ routine
|
||||
*KERNEL_IRQ = &irq;
|
||||
asm { cli }
|
||||
}
|
||||
|
||||
|
||||
// Raster Interrupt Routine - sets up the sprites covering the playfield
|
||||
// Repeats 10 timers every 21 lines from line IRQ_RASTER_FIRST
|
||||
interrupt(kernel_min) void irq() {
|
||||
|
||||
*BORDERCOL = *BGCOL = WHITE;
|
||||
|
||||
// Place the sprites
|
||||
SPRITES_YPOS[0] = irq_sprite_ypos;
|
||||
SPRITES_YPOS[2] = irq_sprite_ypos;
|
||||
SPRITES_YPOS[4] = irq_sprite_ypos;
|
||||
SPRITES_YPOS[6] = irq_sprite_ypos;
|
||||
|
||||
// Find next raster line / sprite positions
|
||||
if(++irq_cnt==10) {
|
||||
irq_cnt = 0;
|
||||
irq_raster_next = IRQ_RASTER_FIRST;
|
||||
irq_sprite_ypos = 50;
|
||||
} else {
|
||||
irq_raster_next += 21;
|
||||
irq_sprite_ypos += 21;
|
||||
}
|
||||
|
||||
// Acknowledge the IRQ and setup the next one
|
||||
*RASTER = irq_raster_next;
|
||||
*IRQ_STATUS = IRQ_RASTER;
|
||||
|
||||
*BORDERCOL = BLACK;
|
||||
*BGCOL = BLUE;
|
||||
|
||||
}
|
||||
|
||||
kickasm(pc PLAYFIELD_SPRITES, resource "nes-playfield.png") {{
|
||||
.var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000))
|
||||
.for(var sy=0;sy<10;sy++) {
|
||||
.for(var sx=0;sx<3;sx++) {
|
||||
.for (var y=0;y<21; y++) {
|
||||
.for (var c=0; c<3; c++) {
|
||||
.byte sprites.getSinglecolorByte(sx*3+c,sy*21+y)
|
||||
}
|
||||
}
|
||||
.byte 0
|
||||
}
|
||||
}
|
||||
}}
|
@ -290,8 +290,9 @@ byte*[PLAYFIELD_LINES+3] screen_lines;
|
||||
|
||||
// Initialize rendering
|
||||
void render_init() {
|
||||
*BGCOL = BLACK;
|
||||
// Clear the screen
|
||||
fill(SCREEN,1000,$a0);
|
||||
fill(SCREEN,1000,$d0);
|
||||
fill(COLS,1000,BLACK);
|
||||
// Initialize the screen line pointers;
|
||||
byte* li = COLS + 40 + 15;
|
||||
|
24
src/test/kc/longbranch-interrupt-problem.kc
Normal file
24
src/test/kc/longbranch-interrupt-problem.kc
Normal file
@ -0,0 +1,24 @@
|
||||
// Tests that long branch fixing works with interrupt exits (to $ea81)
|
||||
|
||||
const void()** KERNEL_IRQ = $0314;
|
||||
const byte* BGCOL = $d020;
|
||||
volatile byte col = 0;
|
||||
|
||||
void main() {
|
||||
*KERNEL_IRQ = &irq;
|
||||
while(true) {
|
||||
if(col>10) {
|
||||
col = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
interrupt(kernel_min) void irq() {
|
||||
asm {
|
||||
lda $dc0d
|
||||
}
|
||||
*BGCOL = col;
|
||||
if(col!=0) {
|
||||
col++;
|
||||
}
|
||||
}
|
27
src/test/kc/test-interrupt-volatile-write.kc
Normal file
27
src/test/kc/test-interrupt-volatile-write.kc
Normal file
@ -0,0 +1,27 @@
|
||||
// Tests that volatile variables can be both read & written inside & outside interrupts
|
||||
// Currently fails because the modification is optimized away
|
||||
|
||||
const void()** KERNEL_IRQ = $0314;
|
||||
const byte* BGCOL = $d020;
|
||||
volatile byte col = 0;
|
||||
|
||||
void main() {
|
||||
*KERNEL_IRQ = &irq;
|
||||
while(true) {
|
||||
if(col>10) {
|
||||
col = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
interrupt(kernel_min) void irq() {
|
||||
asm {
|
||||
lda $dc0d
|
||||
}
|
||||
*BGCOL = col;
|
||||
if(col!=0) {
|
||||
col++;
|
||||
} else {
|
||||
col += 2;
|
||||
}
|
||||
}
|
@ -47,78 +47,80 @@ plots::@return: scope:[plots] from plots::@3
|
||||
plot: scope:[plot] from plots::@1
|
||||
[23] (byte~) plot::$6 ← *((const byte[256]) plot_xhi#0 + (byte) plot::x#0)
|
||||
[24] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$6
|
||||
[25] (byte~) plot::$7 ← *((const byte[256]) plot_xlo#0 + (byte) plot::x#0)
|
||||
[26] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7
|
||||
[27] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0)
|
||||
[28] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$8
|
||||
[29] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0)
|
||||
[30] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9
|
||||
[31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2
|
||||
[32] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0)
|
||||
[33] *((byte*) plot::plotter#0) ← (byte~) plot::$5
|
||||
[25] (byte~) plot::$1 ← < (byte*) plot::plotter_x#1
|
||||
[26] (byte~) plot::$7 ← *((const byte[256]) plot_xlo#0 + (byte) plot::x#0)
|
||||
[27] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7
|
||||
[28] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0)
|
||||
[29] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$8
|
||||
[30] (byte~) plot::$3 ← < (word) plot::plotter_y#1
|
||||
[31] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0)
|
||||
[32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9
|
||||
[33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2
|
||||
[34] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0)
|
||||
[35] *((byte*) plot::plotter#0) ← (byte~) plot::$5
|
||||
to:plot::@return
|
||||
plot::@return: scope:[plot] from plot
|
||||
[34] return
|
||||
[36] return
|
||||
to:@return
|
||||
init_plot_tables: scope:[init_plot_tables] from main::@5
|
||||
[35] phi()
|
||||
[37] phi()
|
||||
to:init_plot_tables::@1
|
||||
init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2
|
||||
[36] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word/dword/signed dword) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 )
|
||||
[36] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word/dword/signed dword) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 )
|
||||
[37] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248
|
||||
[38] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0
|
||||
[39] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0
|
||||
[40] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3
|
||||
[41] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[42] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@10
|
||||
[38] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word/dword/signed dword) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 )
|
||||
[38] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word/dword/signed dword) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 )
|
||||
[39] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248
|
||||
[40] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0
|
||||
[41] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0
|
||||
[42] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3
|
||||
[43] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[44] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@10
|
||||
to:init_plot_tables::@2
|
||||
init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@10
|
||||
[43] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte/word/signed word/dword/signed dword) 128 )
|
||||
[44] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2
|
||||
[45] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@1
|
||||
[45] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte/word/signed word/dword/signed dword) 128 )
|
||||
[46] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2
|
||||
[47] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@1
|
||||
to:init_plot_tables::@3
|
||||
init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@4
|
||||
[46] (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/dword/signed dword) 0 )
|
||||
[46] (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/dword/signed dword) 0 )
|
||||
[47] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
[48] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2
|
||||
[49] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7
|
||||
[50] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8
|
||||
[51] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2
|
||||
[52] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9
|
||||
[53] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
[54] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4
|
||||
[48] (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/dword/signed dword) 0 )
|
||||
[48] (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/dword/signed dword) 0 )
|
||||
[49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
[50] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2
|
||||
[51] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7
|
||||
[52] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8
|
||||
[53] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2
|
||||
[54] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9
|
||||
[55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
[56] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4
|
||||
to:init_plot_tables::@7
|
||||
init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3
|
||||
[55] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
[57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
to:init_plot_tables::@4
|
||||
init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7
|
||||
[56] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 init_plot_tables::@7/(byte*) init_plot_tables::yoffs#1 )
|
||||
[57] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2
|
||||
[58] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@3
|
||||
[58] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 init_plot_tables::@7/(byte*) init_plot_tables::yoffs#1 )
|
||||
[59] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2
|
||||
[60] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@3
|
||||
to:init_plot_tables::@return
|
||||
init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4
|
||||
[59] return
|
||||
[61] return
|
||||
to:@return
|
||||
init_plot_tables::@10: scope:[init_plot_tables] from init_plot_tables::@1
|
||||
[60] phi()
|
||||
[62] phi()
|
||||
to:init_plot_tables::@2
|
||||
init_screen: scope:[init_screen] from main
|
||||
[61] phi()
|
||||
[63] phi()
|
||||
to:init_screen::@1
|
||||
init_screen::@1: scope:[init_screen] from init_screen init_screen::@1
|
||||
[62] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 )
|
||||
[63] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
[64] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2
|
||||
[65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1
|
||||
[64] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 )
|
||||
[65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
[66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2
|
||||
[67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1
|
||||
to:init_screen::@2
|
||||
init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@2
|
||||
[66] (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 )
|
||||
[67] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20
|
||||
[68] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2
|
||||
[69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2
|
||||
[68] (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 )
|
||||
[69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20
|
||||
[70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2
|
||||
[71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2
|
||||
to:init_screen::@return
|
||||
init_screen::@return: scope:[init_screen] from init_screen::@2
|
||||
[70] return
|
||||
[72] return
|
||||
to:@return
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -7,18 +7,24 @@
|
||||
(const byte*) BITMAP#0 BITMAP = ((byte*))(word/signed word/dword/signed dword) 8192
|
||||
(byte) BMM
|
||||
(const byte) BMM#0 BMM = (byte/signed byte/word/signed word/dword/signed dword) 32
|
||||
(byte*) COLS
|
||||
(byte) CSEL
|
||||
(byte*) D011
|
||||
(const byte*) D011#0 D011 = ((byte*))(word/dword/signed dword) 53265
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) 53272
|
||||
(byte) DEN
|
||||
(const byte) DEN#0 DEN = (byte/signed byte/word/signed word/dword/signed dword) 16
|
||||
(byte) ECM
|
||||
(byte*) FGCOL
|
||||
(const byte*) FGCOL#0 FGCOL = ((byte*))(word/dword/signed dword) 53281
|
||||
(byte) MCM
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
|
||||
(byte) RSEL
|
||||
(const byte) RSEL#0 RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) RST8
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(void()) init_plot_tables()
|
||||
@ -65,6 +71,8 @@
|
||||
(label) main::@5
|
||||
(label) main::@7
|
||||
(void()) plot((byte) plot::x , (byte) plot::y)
|
||||
(byte~) plot::$1 reg byte a 20.0
|
||||
(byte~) plot::$3 reg byte a 20.0
|
||||
(byte~) plot::$5 reg byte a 4.0
|
||||
(byte~) plot::$6 reg byte a 4.0
|
||||
(byte~) plot::$7 reg byte a 4.0
|
||||
@ -75,14 +83,14 @@
|
||||
(byte*) plot::plotter#0 plotter zp ZP_WORD:2 3.0
|
||||
(byte*) plot::plotter_x
|
||||
(byte*) plot::plotter_x#1 plotter_x zp ZP_WORD:2 2.0
|
||||
(byte*) plot::plotter_x#2 plotter_x zp ZP_WORD:2 0.8
|
||||
(byte*) plot::plotter_x#2 plotter_x zp ZP_WORD:2 0.6666666666666666
|
||||
(word) plot::plotter_y
|
||||
(word) plot::plotter_y#1 plotter_y zp ZP_WORD:6 2.0
|
||||
(word) plot::plotter_y#2 plotter_y zp ZP_WORD:6 4.0
|
||||
(byte) plot::x
|
||||
(byte) plot::x#0 x zp ZP_BYTE:4 9.727272727272727
|
||||
(byte) plot::x#0 x zp ZP_BYTE:4 8.23076923076923
|
||||
(byte) plot::y
|
||||
(byte) plot::y#0 y zp ZP_BYTE:5 15.000000000000002
|
||||
(byte) plot::y#0 y zp ZP_BYTE:5 11.666666666666664
|
||||
(byte[256]) plot_bit
|
||||
(const byte[256]) plot_bit#0 plot_bit = { fill( 256, 0) }
|
||||
(byte[256]) plot_xhi
|
||||
@ -115,9 +123,11 @@ zp ZP_WORD:2 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tab
|
||||
zp ZP_BYTE:4 [ plot::x#0 init_plot_tables::$6 ]
|
||||
zp ZP_BYTE:5 [ plot::y#0 ]
|
||||
reg byte a [ plot::$6 ]
|
||||
reg byte a [ plot::$1 ]
|
||||
reg byte a [ plot::$7 ]
|
||||
reg byte a [ plot::$8 ]
|
||||
zp ZP_WORD:6 [ plot::plotter_y#1 plot::plotter_y#2 ]
|
||||
reg byte a [ plot::$3 ]
|
||||
reg byte a [ plot::$9 ]
|
||||
reg byte a [ plot::$5 ]
|
||||
reg byte a [ init_plot_tables::$0 ]
|
||||
|
@ -1,13 +1,13 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@8
|
||||
@8: scope:[] from @begin
|
||||
to:@9
|
||||
@9: scope:[] from @begin
|
||||
[1] phi()
|
||||
[2] call main
|
||||
to:@end
|
||||
@end: scope:[] from @8
|
||||
@end: scope:[] from @9
|
||||
[3] phi()
|
||||
main: scope:[main] from @8
|
||||
main: scope:[main] from @9
|
||||
asm { sei }
|
||||
[5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0
|
||||
[6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,32 +1,129 @@
|
||||
(label) @8
|
||||
(label) @9
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(const byte*) CHARGEN#0 CHARGEN = ((byte*))(word/dword/signed dword) 53248
|
||||
(byte*) CHARSET8
|
||||
(const byte*) CHARSET8#0 CHARSET8 = ((byte*))(word/dword/signed dword) 32768
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) 56576
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) 56578
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) DTV_BADLINE_OFF
|
||||
(const byte) DTV_BADLINE_OFF#0 DTV_BADLINE_OFF = (byte/signed byte/word/signed word/dword/signed dword) 32
|
||||
(byte*) DTV_BLITTER_ALU
|
||||
(byte*) DTV_BLITTER_CONTROL
|
||||
(byte*) DTV_BLITTER_CONTROL2
|
||||
(byte*) DTV_BLITTER_DEST_HI
|
||||
(byte*) DTV_BLITTER_DEST_LIN_HI
|
||||
(byte*) DTV_BLITTER_DEST_LIN_LO
|
||||
(byte*) DTV_BLITTER_DEST_LO
|
||||
(byte*) DTV_BLITTER_DEST_MI
|
||||
(byte*) DTV_BLITTER_DEST_MOD_HI
|
||||
(byte*) DTV_BLITTER_DEST_MOD_LO
|
||||
(byte*) DTV_BLITTER_DEST_STEP
|
||||
(byte*) DTV_BLITTER_LEN_HI
|
||||
(byte*) DTV_BLITTER_LEN_LO
|
||||
(byte*) DTV_BLITTER_SRCA_HI
|
||||
(byte*) DTV_BLITTER_SRCA_LIN_HI
|
||||
(byte*) DTV_BLITTER_SRCA_LIN_LO
|
||||
(byte*) DTV_BLITTER_SRCA_LO
|
||||
(byte*) DTV_BLITTER_SRCA_MI
|
||||
(byte*) DTV_BLITTER_SRCA_MOD_HI
|
||||
(byte*) DTV_BLITTER_SRCA_MOD_LO
|
||||
(byte*) DTV_BLITTER_SRCA_STEP
|
||||
(byte*) DTV_BLITTER_SRCB_HI
|
||||
(byte*) DTV_BLITTER_SRCB_LIN_HI
|
||||
(byte*) DTV_BLITTER_SRCB_LIN_LO
|
||||
(byte*) DTV_BLITTER_SRCB_LO
|
||||
(byte*) DTV_BLITTER_SRCB_MI
|
||||
(byte*) DTV_BLITTER_SRCB_MOD_HI
|
||||
(byte*) DTV_BLITTER_SRCB_MOD_LO
|
||||
(byte*) DTV_BLITTER_SRCB_STEP
|
||||
(byte*) DTV_BLITTER_TRANSPARANCY
|
||||
(byte) DTV_BLIT_ADD
|
||||
(byte) DTV_BLIT_AND
|
||||
(byte) DTV_BLIT_CIA_IRQ
|
||||
(byte) DTV_BLIT_CLEAR_IRQ
|
||||
(byte) DTV_BLIT_DEST_CONT
|
||||
(byte) DTV_BLIT_DEST_FWD
|
||||
(byte) DTV_BLIT_DISABLE_B
|
||||
(byte) DTV_BLIT_FORCE_START
|
||||
(byte) DTV_BLIT_IRQ_EN
|
||||
(byte) DTV_BLIT_NAND
|
||||
(byte) DTV_BLIT_NOR
|
||||
(byte) DTV_BLIT_OR
|
||||
(byte) DTV_BLIT_SHIFT0
|
||||
(byte) DTV_BLIT_SHIFT1
|
||||
(byte) DTV_BLIT_SHIFT2
|
||||
(byte) DTV_BLIT_SHIFT3
|
||||
(byte) DTV_BLIT_SHIFT4
|
||||
(byte) DTV_BLIT_SHIFT5
|
||||
(byte) DTV_BLIT_SHIFT6
|
||||
(byte) DTV_BLIT_SHIFT7
|
||||
(byte) DTV_BLIT_SRCA_CONT
|
||||
(byte) DTV_BLIT_SRCA_FWD
|
||||
(byte) DTV_BLIT_SRCB_CONT
|
||||
(byte) DTV_BLIT_SRCB_FWD
|
||||
(byte) DTV_BLIT_STATUS_BUSY
|
||||
(byte) DTV_BLIT_STATUS_IRQ
|
||||
(byte) DTV_BLIT_SUB
|
||||
(byte) DTV_BLIT_TRANSPARANCY_NONE
|
||||
(byte) DTV_BLIT_VBLANK
|
||||
(byte) DTV_BLIT_VIC_IRQ
|
||||
(byte) DTV_BLIT_WRITE_NONTRANSPARENT
|
||||
(byte) DTV_BLIT_WRITE_TRANSPARENT
|
||||
(byte) DTV_BLIT_XNOR
|
||||
(byte) DTV_BLIT_XOR
|
||||
(byte) DTV_BORDER_OFF
|
||||
(byte) DTV_CHUNKY
|
||||
(const byte) DTV_CHUNKY#0 DTV_CHUNKY = (byte/signed byte/word/signed word/dword/signed dword) 64
|
||||
(byte) DTV_COLORRAM_OFF
|
||||
(dword) DTV_COLOR_BANK_DEFAULT
|
||||
(byte*) DTV_COLOR_BANK_HI
|
||||
(byte*) DTV_COLOR_BANK_LO
|
||||
(byte*) DTV_CONTROL
|
||||
(const byte*) DTV_CONTROL#0 DTV_CONTROL = ((byte*))(word/dword/signed dword) 53308
|
||||
(byte*) DTV_FEATURE
|
||||
(const byte*) DTV_FEATURE#0 DTV_FEATURE = ((byte*))(word/dword/signed dword) 53311
|
||||
(byte) DTV_FEATURE_DISABLE_TIL_RESET
|
||||
(byte) DTV_FEATURE_ENABLE
|
||||
(const byte) DTV_FEATURE_ENABLE#0 DTV_FEATURE_ENABLE = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*) DTV_GRAPHICS_HICOL_BANK
|
||||
(byte*) DTV_GRAPHICS_VIC_BANK
|
||||
(byte) DTV_HIGHCOLOR
|
||||
(const byte) DTV_HIGHCOLOR#0 DTV_HIGHCOLOR = (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) DTV_LINEAR
|
||||
(const byte) DTV_LINEAR#0 DTV_LINEAR = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) DTV_OVERSCAN
|
||||
(byte*) DTV_PALETTE
|
||||
(const byte*) DTV_PALETTE#0 DTV_PALETTE = ((byte*))(word/dword/signed dword) 53760
|
||||
(byte[16]) DTV_PALETTE_DEFAULT
|
||||
(byte*) DTV_PLANEA_MODULO_HI
|
||||
(const byte*) DTV_PLANEA_MODULO_HI#0 DTV_PLANEA_MODULO_HI = ((byte*))(word/dword/signed dword) 53305
|
||||
(byte*) DTV_PLANEA_MODULO_LO
|
||||
@ -51,20 +148,56 @@
|
||||
(const byte*) DTV_PLANEB_START_MI#0 DTV_PLANEB_START_MI = ((byte*))(word/dword/signed dword) 53322
|
||||
(byte*) DTV_PLANEB_STEP
|
||||
(const byte*) DTV_PLANEB_STEP#0 DTV_PLANEB_STEP = ((byte*))(word/dword/signed dword) 53324
|
||||
(byte*) DTV_SPRITE_BANK
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(const byte) PROCPORT_RAM_CHARROM#0 PROCPORT_RAM_CHARROM = (byte/signed byte/word/signed word/dword/signed dword) 49
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) 53
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 31744
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(const byte*) VIC_CONTROL#0 VIC_CONTROL = ((byte*))(word/dword/signed dword) 53265
|
||||
(byte*) VIC_CONTROL2
|
||||
@ -81,6 +214,9 @@
|
||||
(const byte*) VIC_MEMORY#0 VIC_MEMORY = ((byte*))(word/dword/signed dword) 53272
|
||||
(byte) VIC_RSEL
|
||||
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx)
|
||||
(label) dtvSetCpuBankSegment1::@return
|
||||
(byte*) dtvSetCpuBankSegment1::cpuBank
|
||||
|
@ -1,13 +1,13 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@6
|
||||
@6: scope:[] from @begin
|
||||
to:@7
|
||||
@7: scope:[] from @begin
|
||||
[1] phi()
|
||||
[2] call main
|
||||
to:@end
|
||||
@end: scope:[] from @6
|
||||
@end: scope:[] from @7
|
||||
[3] phi()
|
||||
main: scope:[main] from @6
|
||||
main: scope:[main] from @7
|
||||
asm { sei }
|
||||
[5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0
|
||||
[6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,32 +1,135 @@
|
||||
(label) @6
|
||||
(label) @7
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHUNKY
|
||||
(const byte*) CHUNKY#0 CHUNKY = ((byte*))(word/dword/signed dword) 32768
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) 56576
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) 56578
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) DTV_BADLINE_OFF
|
||||
(const byte) DTV_BADLINE_OFF#0 DTV_BADLINE_OFF = (byte/signed byte/word/signed word/dword/signed dword) 32
|
||||
(byte*) DTV_BLITTER_ALU
|
||||
(byte*) DTV_BLITTER_CONTROL
|
||||
(byte*) DTV_BLITTER_CONTROL2
|
||||
(byte*) DTV_BLITTER_DEST_HI
|
||||
(byte*) DTV_BLITTER_DEST_LIN_HI
|
||||
(byte*) DTV_BLITTER_DEST_LIN_LO
|
||||
(byte*) DTV_BLITTER_DEST_LO
|
||||
(byte*) DTV_BLITTER_DEST_MI
|
||||
(byte*) DTV_BLITTER_DEST_MOD_HI
|
||||
(byte*) DTV_BLITTER_DEST_MOD_LO
|
||||
(byte*) DTV_BLITTER_DEST_STEP
|
||||
(byte*) DTV_BLITTER_LEN_HI
|
||||
(byte*) DTV_BLITTER_LEN_LO
|
||||
(byte*) DTV_BLITTER_SRCA_HI
|
||||
(byte*) DTV_BLITTER_SRCA_LIN_HI
|
||||
(byte*) DTV_BLITTER_SRCA_LIN_LO
|
||||
(byte*) DTV_BLITTER_SRCA_LO
|
||||
(byte*) DTV_BLITTER_SRCA_MI
|
||||
(byte*) DTV_BLITTER_SRCA_MOD_HI
|
||||
(byte*) DTV_BLITTER_SRCA_MOD_LO
|
||||
(byte*) DTV_BLITTER_SRCA_STEP
|
||||
(byte*) DTV_BLITTER_SRCB_HI
|
||||
(byte*) DTV_BLITTER_SRCB_LIN_HI
|
||||
(byte*) DTV_BLITTER_SRCB_LIN_LO
|
||||
(byte*) DTV_BLITTER_SRCB_LO
|
||||
(byte*) DTV_BLITTER_SRCB_MI
|
||||
(byte*) DTV_BLITTER_SRCB_MOD_HI
|
||||
(byte*) DTV_BLITTER_SRCB_MOD_LO
|
||||
(byte*) DTV_BLITTER_SRCB_STEP
|
||||
(byte*) DTV_BLITTER_TRANSPARANCY
|
||||
(byte) DTV_BLIT_ADD
|
||||
(byte) DTV_BLIT_AND
|
||||
(byte) DTV_BLIT_CIA_IRQ
|
||||
(byte) DTV_BLIT_CLEAR_IRQ
|
||||
(byte) DTV_BLIT_DEST_CONT
|
||||
(byte) DTV_BLIT_DEST_FWD
|
||||
(byte) DTV_BLIT_DISABLE_B
|
||||
(byte) DTV_BLIT_FORCE_START
|
||||
(byte) DTV_BLIT_IRQ_EN
|
||||
(byte) DTV_BLIT_NAND
|
||||
(byte) DTV_BLIT_NOR
|
||||
(byte) DTV_BLIT_OR
|
||||
(byte) DTV_BLIT_SHIFT0
|
||||
(byte) DTV_BLIT_SHIFT1
|
||||
(byte) DTV_BLIT_SHIFT2
|
||||
(byte) DTV_BLIT_SHIFT3
|
||||
(byte) DTV_BLIT_SHIFT4
|
||||
(byte) DTV_BLIT_SHIFT5
|
||||
(byte) DTV_BLIT_SHIFT6
|
||||
(byte) DTV_BLIT_SHIFT7
|
||||
(byte) DTV_BLIT_SRCA_CONT
|
||||
(byte) DTV_BLIT_SRCA_FWD
|
||||
(byte) DTV_BLIT_SRCB_CONT
|
||||
(byte) DTV_BLIT_SRCB_FWD
|
||||
(byte) DTV_BLIT_STATUS_BUSY
|
||||
(byte) DTV_BLIT_STATUS_IRQ
|
||||
(byte) DTV_BLIT_SUB
|
||||
(byte) DTV_BLIT_TRANSPARANCY_NONE
|
||||
(byte) DTV_BLIT_VBLANK
|
||||
(byte) DTV_BLIT_VIC_IRQ
|
||||
(byte) DTV_BLIT_WRITE_NONTRANSPARENT
|
||||
(byte) DTV_BLIT_WRITE_TRANSPARENT
|
||||
(byte) DTV_BLIT_XNOR
|
||||
(byte) DTV_BLIT_XOR
|
||||
(byte) DTV_BORDER_OFF
|
||||
(byte) DTV_CHUNKY
|
||||
(const byte) DTV_CHUNKY#0 DTV_CHUNKY = (byte/signed byte/word/signed word/dword/signed dword) 64
|
||||
(byte) DTV_COLORRAM_OFF
|
||||
(const byte) DTV_COLORRAM_OFF#0 DTV_COLORRAM_OFF = (byte/signed byte/word/signed word/dword/signed dword) 16
|
||||
(dword) DTV_COLOR_BANK_DEFAULT
|
||||
(byte*) DTV_COLOR_BANK_HI
|
||||
(byte*) DTV_COLOR_BANK_LO
|
||||
(byte*) DTV_CONTROL
|
||||
(const byte*) DTV_CONTROL#0 DTV_CONTROL = ((byte*))(word/dword/signed dword) 53308
|
||||
(byte*) DTV_FEATURE
|
||||
(const byte*) DTV_FEATURE#0 DTV_FEATURE = ((byte*))(word/dword/signed dword) 53311
|
||||
(byte) DTV_FEATURE_DISABLE_TIL_RESET
|
||||
(byte) DTV_FEATURE_ENABLE
|
||||
(const byte) DTV_FEATURE_ENABLE#0 DTV_FEATURE_ENABLE = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*) DTV_GRAPHICS_HICOL_BANK
|
||||
(byte*) DTV_GRAPHICS_VIC_BANK
|
||||
(byte) DTV_HIGHCOLOR
|
||||
(const byte) DTV_HIGHCOLOR#0 DTV_HIGHCOLOR = (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) DTV_LINEAR
|
||||
(const byte) DTV_LINEAR#0 DTV_LINEAR = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) DTV_OVERSCAN
|
||||
(byte*) DTV_PALETTE
|
||||
(const byte*) DTV_PALETTE#0 DTV_PALETTE = ((byte*))(word/dword/signed dword) 53760
|
||||
(byte[16]) DTV_PALETTE_DEFAULT
|
||||
(byte*) DTV_PLANEA_MODULO_HI
|
||||
(byte*) DTV_PLANEA_MODULO_LO
|
||||
(byte*) DTV_PLANEA_START_HI
|
||||
(byte*) DTV_PLANEA_START_LO
|
||||
(byte*) DTV_PLANEA_START_MI
|
||||
(byte*) DTV_PLANEA_STEP
|
||||
(byte*) DTV_PLANEB_MODULO_HI
|
||||
(const byte*) DTV_PLANEB_MODULO_HI#0 DTV_PLANEB_MODULO_HI = ((byte*))(word/dword/signed dword) 53320
|
||||
(byte*) DTV_PLANEB_MODULO_LO
|
||||
@ -39,16 +142,53 @@
|
||||
(const byte*) DTV_PLANEB_START_MI#0 DTV_PLANEB_START_MI = ((byte*))(word/dword/signed dword) 53322
|
||||
(byte*) DTV_PLANEB_STEP
|
||||
(const byte*) DTV_PLANEB_STEP#0 DTV_PLANEB_STEP = ((byte*))(word/dword/signed dword) 53324
|
||||
(byte*) DTV_SPRITE_BANK
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) 53
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(const byte*) VIC_CONTROL#0 VIC_CONTROL = ((byte*))(word/dword/signed dword) 53265
|
||||
(byte*) VIC_CONTROL2
|
||||
@ -65,6 +205,9 @@
|
||||
(const byte*) VIC_MEMORY#0 VIC_MEMORY = ((byte*))(word/dword/signed dword) 53272
|
||||
(byte) VIC_RSEL
|
||||
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx)
|
||||
(label) dtvSetCpuBankSegment1::@return
|
||||
(byte*) dtvSetCpuBankSegment1::cpuBank
|
||||
|
@ -1,13 +1,13 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@5
|
||||
@5: scope:[] from @begin
|
||||
to:@6
|
||||
@6: scope:[] from @begin
|
||||
[1] phi()
|
||||
[2] call main
|
||||
to:@end
|
||||
@end: scope:[] from @5
|
||||
@end: scope:[] from @6
|
||||
[3] phi()
|
||||
main: scope:[main] from @5
|
||||
main: scope:[main] from @6
|
||||
[4] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0
|
||||
[5] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_CLEAR_IRQ#0
|
||||
[6] *((const byte*) DTV_BLITTER_SRCA_LO#0) ← <(const byte[]) SRCA#0
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,34 @@
|
||||
(label) @5
|
||||
(label) @6
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) DTV_BADLINE_OFF
|
||||
(byte*) DTV_BLITTER_ALU
|
||||
(const byte*) DTV_BLITTER_ALU#0 DTV_BLITTER_ALU = ((byte*))(word/dword/signed dword) 54078
|
||||
(byte*) DTV_BLITTER_CONTROL
|
||||
@ -63,34 +91,139 @@
|
||||
(const byte*) DTV_BLITTER_TRANSPARANCY#0 DTV_BLITTER_TRANSPARANCY = ((byte*))(word/dword/signed dword) 54075
|
||||
(byte) DTV_BLIT_ADD
|
||||
(const byte) DTV_BLIT_ADD#0 DTV_BLIT_ADD = (byte/signed byte/word/signed word/dword/signed dword) 48
|
||||
(byte) DTV_BLIT_AND
|
||||
(byte) DTV_BLIT_CIA_IRQ
|
||||
(byte) DTV_BLIT_CLEAR_IRQ
|
||||
(const byte) DTV_BLIT_CLEAR_IRQ#0 DTV_BLIT_CLEAR_IRQ = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) DTV_BLIT_DEST_CONT
|
||||
(const byte) DTV_BLIT_DEST_CONT#0 DTV_BLIT_DEST_CONT = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) DTV_BLIT_DEST_FWD
|
||||
(const byte) DTV_BLIT_DEST_FWD#0 DTV_BLIT_DEST_FWD = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) DTV_BLIT_DISABLE_B
|
||||
(byte) DTV_BLIT_FORCE_START
|
||||
(const byte) DTV_BLIT_FORCE_START#0 DTV_BLIT_FORCE_START = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) DTV_BLIT_IRQ_EN
|
||||
(byte) DTV_BLIT_NAND
|
||||
(byte) DTV_BLIT_NOR
|
||||
(byte) DTV_BLIT_OR
|
||||
(byte) DTV_BLIT_SHIFT0
|
||||
(byte) DTV_BLIT_SHIFT1
|
||||
(byte) DTV_BLIT_SHIFT2
|
||||
(byte) DTV_BLIT_SHIFT3
|
||||
(byte) DTV_BLIT_SHIFT4
|
||||
(byte) DTV_BLIT_SHIFT5
|
||||
(byte) DTV_BLIT_SHIFT6
|
||||
(byte) DTV_BLIT_SHIFT7
|
||||
(byte) DTV_BLIT_SRCA_CONT
|
||||
(byte) DTV_BLIT_SRCA_FWD
|
||||
(const byte) DTV_BLIT_SRCA_FWD#0 DTV_BLIT_SRCA_FWD = (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) DTV_BLIT_SRCB_CONT
|
||||
(byte) DTV_BLIT_SRCB_FWD
|
||||
(const byte) DTV_BLIT_SRCB_FWD#0 DTV_BLIT_SRCB_FWD = (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) DTV_BLIT_STATUS_BUSY
|
||||
(const byte) DTV_BLIT_STATUS_BUSY#0 DTV_BLIT_STATUS_BUSY = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) DTV_BLIT_STATUS_IRQ
|
||||
(byte) DTV_BLIT_SUB
|
||||
(byte) DTV_BLIT_TRANSPARANCY_NONE
|
||||
(const byte) DTV_BLIT_TRANSPARANCY_NONE#0 DTV_BLIT_TRANSPARANCY_NONE = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) DTV_BLIT_VBLANK
|
||||
(byte) DTV_BLIT_VIC_IRQ
|
||||
(byte) DTV_BLIT_WRITE_NONTRANSPARENT
|
||||
(byte) DTV_BLIT_WRITE_TRANSPARENT
|
||||
(byte) DTV_BLIT_XNOR
|
||||
(byte) DTV_BLIT_XOR
|
||||
(byte) DTV_BORDER_OFF
|
||||
(byte) DTV_CHUNKY
|
||||
(byte) DTV_COLORRAM_OFF
|
||||
(dword) DTV_COLOR_BANK_DEFAULT
|
||||
(byte*) DTV_COLOR_BANK_HI
|
||||
(byte*) DTV_COLOR_BANK_LO
|
||||
(byte*) DTV_CONTROL
|
||||
(byte*) DTV_FEATURE
|
||||
(const byte*) DTV_FEATURE#0 DTV_FEATURE = ((byte*))(word/dword/signed dword) 53311
|
||||
(byte) DTV_FEATURE_DISABLE_TIL_RESET
|
||||
(byte) DTV_FEATURE_ENABLE
|
||||
(const byte) DTV_FEATURE_ENABLE#0 DTV_FEATURE_ENABLE = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*) DTV_GRAPHICS_HICOL_BANK
|
||||
(byte*) DTV_GRAPHICS_VIC_BANK
|
||||
(byte) DTV_HIGHCOLOR
|
||||
(byte) DTV_LINEAR
|
||||
(byte) DTV_OVERSCAN
|
||||
(byte*) DTV_PALETTE
|
||||
(byte[16]) DTV_PALETTE_DEFAULT
|
||||
(byte*) DTV_PLANEA_MODULO_HI
|
||||
(byte*) DTV_PLANEA_MODULO_LO
|
||||
(byte*) DTV_PLANEA_START_HI
|
||||
(byte*) DTV_PLANEA_START_LO
|
||||
(byte*) DTV_PLANEA_START_MI
|
||||
(byte*) DTV_PLANEA_STEP
|
||||
(byte*) DTV_PLANEB_MODULO_HI
|
||||
(byte*) DTV_PLANEB_MODULO_LO
|
||||
(byte*) DTV_PLANEB_START_HI
|
||||
(byte*) DTV_PLANEB_START_LO
|
||||
(byte*) DTV_PLANEB_START_MI
|
||||
(byte*) DTV_PLANEB_STEP
|
||||
(byte*) DTV_SPRITE_BANK
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte[]) SRCA
|
||||
(const byte[]) SRCA#0 SRCA = { (byte) 'c', (byte) 'a', (byte) 'm', (byte) 'e', (byte) 'l', (byte) 'o', (byte) 't', (byte) '!', (byte) ' ' }
|
||||
(byte) SRCA_LEN
|
||||
(const byte) SRCA_LEN#0 SRCA_LEN = (byte/signed byte/word/signed word/dword/signed dword) 9
|
||||
(byte[]) SRCB
|
||||
(const byte[]) SRCB#0 SRCB = { (byte/word/signed word/dword/signed dword) 128 }
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) main()
|
||||
(byte~) main::$15 reg byte a 202.0
|
||||
(label) main::@2
|
||||
|
@ -1,13 +1,13 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@5
|
||||
@5: scope:[] from @begin
|
||||
to:@6
|
||||
@6: scope:[] from @begin
|
||||
[1] phi()
|
||||
[2] call main
|
||||
to:@end
|
||||
@end: scope:[] from @5
|
||||
@end: scope:[] from @6
|
||||
[3] phi()
|
||||
main: scope:[main] from @5
|
||||
main: scope:[main] from @6
|
||||
asm { sei }
|
||||
[5] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0
|
||||
[6] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_BORDER_OFF#0|(const byte) DTV_BADLINE_OFF#0
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,24 +1,189 @@
|
||||
(label) @5
|
||||
(label) @6
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) DTV_BADLINE_OFF
|
||||
(const byte) DTV_BADLINE_OFF#0 DTV_BADLINE_OFF = (byte/signed byte/word/signed word/dword/signed dword) 32
|
||||
(byte*) DTV_BLITTER_ALU
|
||||
(byte*) DTV_BLITTER_CONTROL
|
||||
(byte*) DTV_BLITTER_CONTROL2
|
||||
(byte*) DTV_BLITTER_DEST_HI
|
||||
(byte*) DTV_BLITTER_DEST_LIN_HI
|
||||
(byte*) DTV_BLITTER_DEST_LIN_LO
|
||||
(byte*) DTV_BLITTER_DEST_LO
|
||||
(byte*) DTV_BLITTER_DEST_MI
|
||||
(byte*) DTV_BLITTER_DEST_MOD_HI
|
||||
(byte*) DTV_BLITTER_DEST_MOD_LO
|
||||
(byte*) DTV_BLITTER_DEST_STEP
|
||||
(byte*) DTV_BLITTER_LEN_HI
|
||||
(byte*) DTV_BLITTER_LEN_LO
|
||||
(byte*) DTV_BLITTER_SRCA_HI
|
||||
(byte*) DTV_BLITTER_SRCA_LIN_HI
|
||||
(byte*) DTV_BLITTER_SRCA_LIN_LO
|
||||
(byte*) DTV_BLITTER_SRCA_LO
|
||||
(byte*) DTV_BLITTER_SRCA_MI
|
||||
(byte*) DTV_BLITTER_SRCA_MOD_HI
|
||||
(byte*) DTV_BLITTER_SRCA_MOD_LO
|
||||
(byte*) DTV_BLITTER_SRCA_STEP
|
||||
(byte*) DTV_BLITTER_SRCB_HI
|
||||
(byte*) DTV_BLITTER_SRCB_LIN_HI
|
||||
(byte*) DTV_BLITTER_SRCB_LIN_LO
|
||||
(byte*) DTV_BLITTER_SRCB_LO
|
||||
(byte*) DTV_BLITTER_SRCB_MI
|
||||
(byte*) DTV_BLITTER_SRCB_MOD_HI
|
||||
(byte*) DTV_BLITTER_SRCB_MOD_LO
|
||||
(byte*) DTV_BLITTER_SRCB_STEP
|
||||
(byte*) DTV_BLITTER_TRANSPARANCY
|
||||
(byte) DTV_BLIT_ADD
|
||||
(byte) DTV_BLIT_AND
|
||||
(byte) DTV_BLIT_CIA_IRQ
|
||||
(byte) DTV_BLIT_CLEAR_IRQ
|
||||
(byte) DTV_BLIT_DEST_CONT
|
||||
(byte) DTV_BLIT_DEST_FWD
|
||||
(byte) DTV_BLIT_DISABLE_B
|
||||
(byte) DTV_BLIT_FORCE_START
|
||||
(byte) DTV_BLIT_IRQ_EN
|
||||
(byte) DTV_BLIT_NAND
|
||||
(byte) DTV_BLIT_NOR
|
||||
(byte) DTV_BLIT_OR
|
||||
(byte) DTV_BLIT_SHIFT0
|
||||
(byte) DTV_BLIT_SHIFT1
|
||||
(byte) DTV_BLIT_SHIFT2
|
||||
(byte) DTV_BLIT_SHIFT3
|
||||
(byte) DTV_BLIT_SHIFT4
|
||||
(byte) DTV_BLIT_SHIFT5
|
||||
(byte) DTV_BLIT_SHIFT6
|
||||
(byte) DTV_BLIT_SHIFT7
|
||||
(byte) DTV_BLIT_SRCA_CONT
|
||||
(byte) DTV_BLIT_SRCA_FWD
|
||||
(byte) DTV_BLIT_SRCB_CONT
|
||||
(byte) DTV_BLIT_SRCB_FWD
|
||||
(byte) DTV_BLIT_STATUS_BUSY
|
||||
(byte) DTV_BLIT_STATUS_IRQ
|
||||
(byte) DTV_BLIT_SUB
|
||||
(byte) DTV_BLIT_TRANSPARANCY_NONE
|
||||
(byte) DTV_BLIT_VBLANK
|
||||
(byte) DTV_BLIT_VIC_IRQ
|
||||
(byte) DTV_BLIT_WRITE_NONTRANSPARENT
|
||||
(byte) DTV_BLIT_WRITE_TRANSPARENT
|
||||
(byte) DTV_BLIT_XNOR
|
||||
(byte) DTV_BLIT_XOR
|
||||
(byte) DTV_BORDER_OFF
|
||||
(const byte) DTV_BORDER_OFF#0 DTV_BORDER_OFF = (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) DTV_CHUNKY
|
||||
(byte) DTV_COLORRAM_OFF
|
||||
(dword) DTV_COLOR_BANK_DEFAULT
|
||||
(byte*) DTV_COLOR_BANK_HI
|
||||
(byte*) DTV_COLOR_BANK_LO
|
||||
(byte*) DTV_CONTROL
|
||||
(const byte*) DTV_CONTROL#0 DTV_CONTROL = ((byte*))(word/dword/signed dword) 53308
|
||||
(byte*) DTV_FEATURE
|
||||
(const byte*) DTV_FEATURE#0 DTV_FEATURE = ((byte*))(word/dword/signed dword) 53311
|
||||
(byte) DTV_FEATURE_DISABLE_TIL_RESET
|
||||
(byte) DTV_FEATURE_ENABLE
|
||||
(const byte) DTV_FEATURE_ENABLE#0 DTV_FEATURE_ENABLE = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*) DTV_GRAPHICS_HICOL_BANK
|
||||
(byte*) DTV_GRAPHICS_VIC_BANK
|
||||
(byte) DTV_HIGHCOLOR
|
||||
(const byte) DTV_HIGHCOLOR#0 DTV_HIGHCOLOR = (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) DTV_LINEAR
|
||||
(byte) DTV_OVERSCAN
|
||||
(byte*) DTV_PALETTE
|
||||
(const byte*) DTV_PALETTE#0 DTV_PALETTE = ((byte*))(word/dword/signed dword) 53760
|
||||
(byte[16]) DTV_PALETTE_DEFAULT
|
||||
(byte*) DTV_PLANEA_MODULO_HI
|
||||
(byte*) DTV_PLANEA_MODULO_LO
|
||||
(byte*) DTV_PLANEA_START_HI
|
||||
(byte*) DTV_PLANEA_START_LO
|
||||
(byte*) DTV_PLANEA_START_MI
|
||||
(byte*) DTV_PLANEA_STEP
|
||||
(byte*) DTV_PLANEB_MODULO_HI
|
||||
(byte*) DTV_PLANEB_MODULO_LO
|
||||
(byte*) DTV_PLANEB_START_HI
|
||||
(byte*) DTV_PLANEB_START_LO
|
||||
(byte*) DTV_PLANEB_START_MI
|
||||
(byte*) DTV_PLANEB_STEP
|
||||
(byte*) DTV_SPRITE_BANK
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) main()
|
||||
(label) main::@4
|
||||
(label) main::@6
|
||||
|
@ -1503,7 +1503,10 @@ gfx_init_plane_fill: {
|
||||
lda _0+3
|
||||
sta _1+1
|
||||
lda _1
|
||||
tax
|
||||
txa
|
||||
jsr dtvSetCpuBankSegment1
|
||||
inx
|
||||
lda plane_addr
|
||||
sta _4
|
||||
lda plane_addr+1
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
||||
(label) @67
|
||||
(label) @68
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
@ -11,10 +11,14 @@
|
||||
(const byte*) BGCOL3#0 BGCOL3 = ((byte*))(word/dword/signed dword) 53283
|
||||
(byte*) BGCOL4
|
||||
(const byte*) BGCOL4#0 BGCOL4 = ((byte*))(word/dword/signed dword) 53284
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(const byte*) CHARGEN#0 CHARGEN = ((byte*))(word/dword/signed dword) 53248
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(const byte*) CIA1_PORT_A#0 CIA1_PORT_A = ((byte*))(word/dword/signed dword) 56320
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
@ -23,12 +27,86 @@
|
||||
(const byte*) CIA1_PORT_B#0 CIA1_PORT_B = ((byte*))(word/dword/signed dword) 56321
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(const byte*) CIA1_PORT_B_DDR#0 CIA1_PORT_B_DDR = ((byte*))(word/dword/signed dword) 56323
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) 56576
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) 56578
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(const byte*) COLS#0 COLS = ((byte*))(word/dword/signed dword) 55296
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) DTV_BADLINE_OFF
|
||||
(byte*) DTV_BLITTER_ALU
|
||||
(byte*) DTV_BLITTER_CONTROL
|
||||
(byte*) DTV_BLITTER_CONTROL2
|
||||
(byte*) DTV_BLITTER_DEST_HI
|
||||
(byte*) DTV_BLITTER_DEST_LIN_HI
|
||||
(byte*) DTV_BLITTER_DEST_LIN_LO
|
||||
(byte*) DTV_BLITTER_DEST_LO
|
||||
(byte*) DTV_BLITTER_DEST_MI
|
||||
(byte*) DTV_BLITTER_DEST_MOD_HI
|
||||
(byte*) DTV_BLITTER_DEST_MOD_LO
|
||||
(byte*) DTV_BLITTER_DEST_STEP
|
||||
(byte*) DTV_BLITTER_LEN_HI
|
||||
(byte*) DTV_BLITTER_LEN_LO
|
||||
(byte*) DTV_BLITTER_SRCA_HI
|
||||
(byte*) DTV_BLITTER_SRCA_LIN_HI
|
||||
(byte*) DTV_BLITTER_SRCA_LIN_LO
|
||||
(byte*) DTV_BLITTER_SRCA_LO
|
||||
(byte*) DTV_BLITTER_SRCA_MI
|
||||
(byte*) DTV_BLITTER_SRCA_MOD_HI
|
||||
(byte*) DTV_BLITTER_SRCA_MOD_LO
|
||||
(byte*) DTV_BLITTER_SRCA_STEP
|
||||
(byte*) DTV_BLITTER_SRCB_HI
|
||||
(byte*) DTV_BLITTER_SRCB_LIN_HI
|
||||
(byte*) DTV_BLITTER_SRCB_LIN_LO
|
||||
(byte*) DTV_BLITTER_SRCB_LO
|
||||
(byte*) DTV_BLITTER_SRCB_MI
|
||||
(byte*) DTV_BLITTER_SRCB_MOD_HI
|
||||
(byte*) DTV_BLITTER_SRCB_MOD_LO
|
||||
(byte*) DTV_BLITTER_SRCB_STEP
|
||||
(byte*) DTV_BLITTER_TRANSPARANCY
|
||||
(byte) DTV_BLIT_ADD
|
||||
(byte) DTV_BLIT_AND
|
||||
(byte) DTV_BLIT_CIA_IRQ
|
||||
(byte) DTV_BLIT_CLEAR_IRQ
|
||||
(byte) DTV_BLIT_DEST_CONT
|
||||
(byte) DTV_BLIT_DEST_FWD
|
||||
(byte) DTV_BLIT_DISABLE_B
|
||||
(byte) DTV_BLIT_FORCE_START
|
||||
(byte) DTV_BLIT_IRQ_EN
|
||||
(byte) DTV_BLIT_NAND
|
||||
(byte) DTV_BLIT_NOR
|
||||
(byte) DTV_BLIT_OR
|
||||
(byte) DTV_BLIT_SHIFT0
|
||||
(byte) DTV_BLIT_SHIFT1
|
||||
(byte) DTV_BLIT_SHIFT2
|
||||
(byte) DTV_BLIT_SHIFT3
|
||||
(byte) DTV_BLIT_SHIFT4
|
||||
(byte) DTV_BLIT_SHIFT5
|
||||
(byte) DTV_BLIT_SHIFT6
|
||||
(byte) DTV_BLIT_SHIFT7
|
||||
(byte) DTV_BLIT_SRCA_CONT
|
||||
(byte) DTV_BLIT_SRCA_FWD
|
||||
(byte) DTV_BLIT_SRCB_CONT
|
||||
(byte) DTV_BLIT_SRCB_FWD
|
||||
(byte) DTV_BLIT_STATUS_BUSY
|
||||
(byte) DTV_BLIT_STATUS_IRQ
|
||||
(byte) DTV_BLIT_SUB
|
||||
(byte) DTV_BLIT_TRANSPARANCY_NONE
|
||||
(byte) DTV_BLIT_VBLANK
|
||||
(byte) DTV_BLIT_VIC_IRQ
|
||||
(byte) DTV_BLIT_WRITE_NONTRANSPARENT
|
||||
(byte) DTV_BLIT_WRITE_TRANSPARENT
|
||||
(byte) DTV_BLIT_XNOR
|
||||
(byte) DTV_BLIT_XOR
|
||||
(byte) DTV_BORDER_OFF
|
||||
(const byte) DTV_BORDER_OFF#0 DTV_BORDER_OFF = (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) DTV_CHUNKY
|
||||
@ -45,8 +123,10 @@
|
||||
(const byte*) DTV_CONTROL#0 DTV_CONTROL = ((byte*))(word/dword/signed dword) 53308
|
||||
(byte*) DTV_FEATURE
|
||||
(const byte*) DTV_FEATURE#0 DTV_FEATURE = ((byte*))(word/dword/signed dword) 53311
|
||||
(byte) DTV_FEATURE_DISABLE_TIL_RESET
|
||||
(byte) DTV_FEATURE_ENABLE
|
||||
(const byte) DTV_FEATURE_ENABLE#0 DTV_FEATURE_ENABLE = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*) DTV_GRAPHICS_HICOL_BANK
|
||||
(byte*) DTV_GRAPHICS_VIC_BANK
|
||||
(const byte*) DTV_GRAPHICS_VIC_BANK#0 DTV_GRAPHICS_VIC_BANK = ((byte*))(word/dword/signed dword) 53309
|
||||
(byte) DTV_HIGHCOLOR
|
||||
@ -83,6 +163,7 @@
|
||||
(const byte*) DTV_PLANEB_START_MI#0 DTV_PLANEB_START_MI = ((byte*))(word/dword/signed dword) 53322
|
||||
(byte*) DTV_PLANEB_STEP
|
||||
(const byte*) DTV_PLANEB_STEP#0 DTV_PLANEB_STEP = ((byte*))(word/dword/signed dword) 53324
|
||||
(byte*) DTV_SPRITE_BANK
|
||||
(byte*) FORM_CHARSET
|
||||
(const byte*) FORM_CHARSET#0 FORM_CHARSET = ((byte*))(word/signed word/dword/signed dword) 6144
|
||||
(byte[]) FORM_COLS
|
||||
@ -93,6 +174,35 @@
|
||||
(const byte*) FORM_SCREEN#0 FORM_SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(byte[]) FORM_TEXT
|
||||
(const byte[]) FORM_TEXT#0 FORM_TEXT = (string) " C64 DTV Graphics Mode Explorer @"+(string) " @"+(string) " PRESET 0 Standard Charset @"+(string) " @"+(string) " CONTROL PLANE A VIC II @"+(string) " bmm 0 pattern p0 screen s0 @"+(string) " mcm 0 start 00 gfx g0 @"+(string) " ecm 0 step 00 colors c0 @"+(string) " hicolor 0 modulo 00 @"+(string) " linear 0 COLORS @"+(string) " color off 0 PLANE B palet 0 @"+(string) " chunky 0 pattern p0 bgcol0 00 @"+(string) " border off 0 start 00 bgcol1 00 @"+(string) " overscan 0 step 00 bgcol2 00 @"+(string) " modulo 00 bgcol3 00 @"+(string) "@"
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte) KEY_0
|
||||
(byte) KEY_1
|
||||
(byte) KEY_2
|
||||
(byte) KEY_3
|
||||
(byte) KEY_4
|
||||
(byte) KEY_5
|
||||
(byte) KEY_6
|
||||
(byte) KEY_7
|
||||
(byte) KEY_8
|
||||
(byte) KEY_9
|
||||
(byte) KEY_A
|
||||
(byte) KEY_ARROW_LEFT
|
||||
(byte) KEY_ARROW_UP
|
||||
(byte) KEY_ASTERISK
|
||||
(byte) KEY_AT
|
||||
(byte) KEY_B
|
||||
(byte) KEY_C
|
||||
(byte) KEY_COLON
|
||||
(byte) KEY_COMMA
|
||||
(byte) KEY_COMMODORE
|
||||
(const byte) KEY_COMMODORE#0 KEY_COMMODORE = (byte/signed byte/word/signed word/dword/signed dword) 61
|
||||
(byte) KEY_CRSR_DOWN
|
||||
@ -101,8 +211,27 @@
|
||||
(const byte) KEY_CRSR_RIGHT#0 KEY_CRSR_RIGHT = (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) KEY_CTRL
|
||||
(const byte) KEY_CTRL#0 KEY_CTRL = (byte/signed byte/word/signed word/dword/signed dword) 58
|
||||
(byte) KEY_D
|
||||
(byte) KEY_DEL
|
||||
(byte) KEY_DOT
|
||||
(byte) KEY_E
|
||||
(byte) KEY_EQUALS
|
||||
(byte) KEY_F
|
||||
(byte) KEY_F1
|
||||
(byte) KEY_F3
|
||||
(byte) KEY_F5
|
||||
(byte) KEY_F7
|
||||
(byte) KEY_G
|
||||
(byte) KEY_H
|
||||
(byte) KEY_HOME
|
||||
(byte) KEY_I
|
||||
(byte) KEY_J
|
||||
(byte) KEY_K
|
||||
(byte) KEY_L
|
||||
(byte) KEY_LSHIFT
|
||||
(const byte) KEY_LSHIFT#0 KEY_LSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 15
|
||||
(byte) KEY_M
|
||||
(byte) KEY_MINUS
|
||||
(byte) KEY_MODIFIER_COMMODORE
|
||||
(const byte) KEY_MODIFIER_COMMODORE#0 KEY_MODIFIER_COMMODORE = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) KEY_MODIFIER_CTRL
|
||||
@ -113,10 +242,36 @@
|
||||
(const byte) KEY_MODIFIER_RSHIFT#0 KEY_MODIFIER_RSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) KEY_MODIFIER_SHIFT
|
||||
(const byte) KEY_MODIFIER_SHIFT#0 KEY_MODIFIER_SHIFT = (const byte) KEY_MODIFIER_LSHIFT#0|(const byte) KEY_MODIFIER_RSHIFT#0
|
||||
(byte) KEY_N
|
||||
(byte) KEY_O
|
||||
(byte) KEY_P
|
||||
(byte) KEY_PLUS
|
||||
(byte) KEY_POUND
|
||||
(byte) KEY_Q
|
||||
(byte) KEY_R
|
||||
(byte) KEY_RETURN
|
||||
(byte) KEY_RSHIFT
|
||||
(const byte) KEY_RSHIFT#0 KEY_RSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 52
|
||||
(byte) KEY_RUNSTOP
|
||||
(byte) KEY_S
|
||||
(byte) KEY_SEMICOLON
|
||||
(byte) KEY_SLASH
|
||||
(byte) KEY_SPACE
|
||||
(const byte) KEY_SPACE#0 KEY_SPACE = (byte/signed byte/word/signed word/dword/signed dword) 60
|
||||
(byte) KEY_T
|
||||
(byte) KEY_U
|
||||
(byte) KEY_V
|
||||
(byte) KEY_W
|
||||
(byte) KEY_X
|
||||
(byte) KEY_Y
|
||||
(byte) KEY_Z
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(dword) PLANE_8BPP_CHUNKY
|
||||
(const dword) PLANE_8BPP_CHUNKY#0 PLANE_8BPP_CHUNKY = (dword/signed dword) 131072
|
||||
(dword) PLANE_BLANK
|
||||
@ -135,16 +290,33 @@
|
||||
(const dword) PLANE_VERTICAL2#0 PLANE_VERTICAL2 = (dword/signed dword) 221184
|
||||
(byte*) PROCPORT
|
||||
(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(const byte) PROCPORT_RAM_CHARROM#0 PROCPORT_RAM_CHARROM = (byte/signed byte/word/signed word/dword/signed dword) 49
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) 53
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte*) VIC_BITMAP
|
||||
(const byte*) VIC_BITMAP#0 VIC_BITMAP = ((byte*))(word/signed word/dword/signed dword) 24576
|
||||
(byte) VIC_BMM
|
||||
@ -167,6 +339,7 @@
|
||||
(const byte*) VIC_MEMORY#0 VIC_MEMORY = ((byte*))(word/dword/signed dword) 53272
|
||||
(byte) VIC_RSEL
|
||||
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) VIC_RST8
|
||||
(byte*) VIC_SCREEN0
|
||||
(const byte*) VIC_SCREEN0#0 VIC_SCREEN0 = ((byte*))(word/signed word/dword/signed dword) 16384
|
||||
(byte*) VIC_SCREEN1
|
||||
@ -177,6 +350,8 @@
|
||||
(const byte*) VIC_SCREEN3#0 VIC_SCREEN3 = ((byte*))(word/signed word/dword/signed dword) 19456
|
||||
(byte*) VIC_SCREEN4
|
||||
(const byte*) VIC_SCREEN4#0 VIC_SCREEN4 = ((byte*))(word/signed word/dword/signed dword) 20480
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) apply_preset((byte) apply_preset::idx)
|
||||
(label) apply_preset::@22
|
||||
(label) apply_preset::@23
|
||||
@ -847,16 +1022,17 @@
|
||||
(byte) gfx_init_plane_fill::by#1 by zp ZP_BYTE:7 16.5
|
||||
(byte) gfx_init_plane_fill::by#4 by zp ZP_BYTE:7 3.6666666666666665
|
||||
(byte) gfx_init_plane_fill::fill
|
||||
(byte) gfx_init_plane_fill::fill#6 fill zp ZP_BYTE:2 5.611111111111111
|
||||
(byte) gfx_init_plane_fill::fill#6 fill zp ZP_BYTE:2 5.315789473684211
|
||||
(byte*) gfx_init_plane_fill::gfxb
|
||||
(byte*) gfx_init_plane_fill::gfxb#1 gfxb zp ZP_WORD:3 42.599999999999994
|
||||
(byte*) gfx_init_plane_fill::gfxb#2 gfxb zp ZP_WORD:3 157.0
|
||||
(byte*) gfx_init_plane_fill::gfxb#3 gfxb zp ZP_WORD:3 24.0
|
||||
(byte*~) gfx_init_plane_fill::gfxb#6 gfxb zp ZP_WORD:3 4.0
|
||||
(byte) gfx_init_plane_fill::gfxbCpuBank
|
||||
(byte) gfx_init_plane_fill::gfxbCpuBank#0 reg byte a 4.0
|
||||
(byte) gfx_init_plane_fill::gfxbCpuBank#0 reg byte x 2.0
|
||||
(byte) gfx_init_plane_fill::gfxbCpuBank#1 reg byte x 20.0
|
||||
(dword) gfx_init_plane_fill::plane_addr
|
||||
(dword) gfx_init_plane_fill::plane_addr#3 plane_addr zp ZP_DWORD:10 0.6666666666666666
|
||||
(dword) gfx_init_plane_fill::plane_addr#3 plane_addr zp ZP_DWORD:10 0.5714285714285714
|
||||
(void()) gfx_init_plane_full()
|
||||
(label) gfx_init_plane_full::@return
|
||||
(void()) gfx_init_plane_horisontal()
|
||||
@ -1157,6 +1333,7 @@
|
||||
(byte) gfx_mode::vic_control#5 reg byte y 2.0
|
||||
(byte) gfx_mode::vic_control2
|
||||
(byte) gfx_mode::vic_control2#2 reg byte a 2.0
|
||||
(byte[]) keyboard_char_keycodes
|
||||
(byte()) keyboard_event_get()
|
||||
(label) keyboard_event_get::@3
|
||||
(label) keyboard_event_get::@return
|
||||
@ -1492,7 +1669,8 @@ reg byte a [ form_set_screen::$0 ]
|
||||
reg byte a [ form_set_screen::$1 ]
|
||||
reg byte a [ print_str_lines::ch#0 ]
|
||||
zp ZP_DWORD:19 [ gfx_init_plane_fill::$0 ]
|
||||
reg byte a [ gfx_init_plane_fill::gfxbCpuBank#0 ]
|
||||
reg byte x [ gfx_init_plane_fill::gfxbCpuBank#0 ]
|
||||
reg byte x [ gfx_init_plane_fill::gfxbCpuBank#1 ]
|
||||
reg byte a [ gfx_init_plane_horisontal2::$5 ]
|
||||
reg byte a [ gfx_init_plane_horisontal2::row#0 ]
|
||||
reg byte a [ gfx_init_plane_horisontal::$5 ]
|
||||
|
@ -1,13 +1,13 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@53
|
||||
@53: scope:[] from @begin
|
||||
to:@54
|
||||
@54: scope:[] from @begin
|
||||
[1] phi()
|
||||
[2] call main
|
||||
to:@end
|
||||
@end: scope:[] from @53
|
||||
@end: scope:[] from @54
|
||||
[3] phi()
|
||||
main: scope:[main] from @53
|
||||
main: scope:[main] from @54
|
||||
asm { sei }
|
||||
[5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0
|
||||
[6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0
|
||||
@ -1502,7 +1502,7 @@ print_str_lines: scope:[print_str_lines] from menu::@48
|
||||
to:print_str_lines::@1
|
||||
print_str_lines::@1: scope:[print_str_lines] from print_str_lines print_str_lines::@9
|
||||
[866] (byte*) print_line_cursor#17 ← phi( print_str_lines/(const byte*) menu::SCREEN#0 print_str_lines::@9/(byte*) print_line_cursor#19 )
|
||||
[866] (byte*) print_char_cursor#19 ← phi( print_str_lines/(const byte*) menu::SCREEN#0 print_str_lines::@9/(byte*~) print_char_cursor#101 )
|
||||
[866] (byte*) print_char_cursor#19 ← phi( print_str_lines/(const byte*) menu::SCREEN#0 print_str_lines::@9/(byte*~) print_char_cursor#103 )
|
||||
[866] (byte*) print_str_lines::str#2 ← phi( print_str_lines/(const byte[]) MENU_TEXT#0 print_str_lines::@9/(byte*) print_str_lines::str#0 )
|
||||
[867] if(*((byte*) print_str_lines::str#2)!=(byte) '@') goto print_str_lines::@4
|
||||
to:print_str_lines::@return
|
||||
@ -1527,7 +1527,7 @@ print_str_lines::@5: scope:[print_str_lines] from print_str_lines::@4 print_str
|
||||
print_str_lines::@9: scope:[print_str_lines] from print_str_lines::@5
|
||||
[877] phi()
|
||||
[878] call print_ln
|
||||
[879] (byte*~) print_char_cursor#101 ← (byte*) print_line_cursor#19
|
||||
[879] (byte*~) print_char_cursor#103 ← (byte*) print_line_cursor#19
|
||||
to:print_str_lines::@1
|
||||
print_ln: scope:[print_ln] from print_str_lines::@9
|
||||
[880] phi()
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
||||
(label) @53
|
||||
(label) @54
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
@ -17,16 +17,95 @@
|
||||
(const byte) BLUE#0 BLUE = (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(const byte*) CIA1_PORT_A#0 CIA1_PORT_A = ((byte*))(word/dword/signed dword) 56320
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(const byte*) CIA1_PORT_B#0 CIA1_PORT_B = ((byte*))(word/dword/signed dword) 56321
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) 56576
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) 56578
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(const byte*) COLS#0 COLS = ((byte*))(word/dword/signed dword) 55296
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) DTV_BADLINE_OFF
|
||||
(byte*) DTV_BLITTER_ALU
|
||||
(byte*) DTV_BLITTER_CONTROL
|
||||
(byte*) DTV_BLITTER_CONTROL2
|
||||
(byte*) DTV_BLITTER_DEST_HI
|
||||
(byte*) DTV_BLITTER_DEST_LIN_HI
|
||||
(byte*) DTV_BLITTER_DEST_LIN_LO
|
||||
(byte*) DTV_BLITTER_DEST_LO
|
||||
(byte*) DTV_BLITTER_DEST_MI
|
||||
(byte*) DTV_BLITTER_DEST_MOD_HI
|
||||
(byte*) DTV_BLITTER_DEST_MOD_LO
|
||||
(byte*) DTV_BLITTER_DEST_STEP
|
||||
(byte*) DTV_BLITTER_LEN_HI
|
||||
(byte*) DTV_BLITTER_LEN_LO
|
||||
(byte*) DTV_BLITTER_SRCA_HI
|
||||
(byte*) DTV_BLITTER_SRCA_LIN_HI
|
||||
(byte*) DTV_BLITTER_SRCA_LIN_LO
|
||||
(byte*) DTV_BLITTER_SRCA_LO
|
||||
(byte*) DTV_BLITTER_SRCA_MI
|
||||
(byte*) DTV_BLITTER_SRCA_MOD_HI
|
||||
(byte*) DTV_BLITTER_SRCA_MOD_LO
|
||||
(byte*) DTV_BLITTER_SRCA_STEP
|
||||
(byte*) DTV_BLITTER_SRCB_HI
|
||||
(byte*) DTV_BLITTER_SRCB_LIN_HI
|
||||
(byte*) DTV_BLITTER_SRCB_LIN_LO
|
||||
(byte*) DTV_BLITTER_SRCB_LO
|
||||
(byte*) DTV_BLITTER_SRCB_MI
|
||||
(byte*) DTV_BLITTER_SRCB_MOD_HI
|
||||
(byte*) DTV_BLITTER_SRCB_MOD_LO
|
||||
(byte*) DTV_BLITTER_SRCB_STEP
|
||||
(byte*) DTV_BLITTER_TRANSPARANCY
|
||||
(byte) DTV_BLIT_ADD
|
||||
(byte) DTV_BLIT_AND
|
||||
(byte) DTV_BLIT_CIA_IRQ
|
||||
(byte) DTV_BLIT_CLEAR_IRQ
|
||||
(byte) DTV_BLIT_DEST_CONT
|
||||
(byte) DTV_BLIT_DEST_FWD
|
||||
(byte) DTV_BLIT_DISABLE_B
|
||||
(byte) DTV_BLIT_FORCE_START
|
||||
(byte) DTV_BLIT_IRQ_EN
|
||||
(byte) DTV_BLIT_NAND
|
||||
(byte) DTV_BLIT_NOR
|
||||
(byte) DTV_BLIT_OR
|
||||
(byte) DTV_BLIT_SHIFT0
|
||||
(byte) DTV_BLIT_SHIFT1
|
||||
(byte) DTV_BLIT_SHIFT2
|
||||
(byte) DTV_BLIT_SHIFT3
|
||||
(byte) DTV_BLIT_SHIFT4
|
||||
(byte) DTV_BLIT_SHIFT5
|
||||
(byte) DTV_BLIT_SHIFT6
|
||||
(byte) DTV_BLIT_SHIFT7
|
||||
(byte) DTV_BLIT_SRCA_CONT
|
||||
(byte) DTV_BLIT_SRCA_FWD
|
||||
(byte) DTV_BLIT_SRCB_CONT
|
||||
(byte) DTV_BLIT_SRCB_FWD
|
||||
(byte) DTV_BLIT_STATUS_BUSY
|
||||
(byte) DTV_BLIT_STATUS_IRQ
|
||||
(byte) DTV_BLIT_SUB
|
||||
(byte) DTV_BLIT_TRANSPARANCY_NONE
|
||||
(byte) DTV_BLIT_VBLANK
|
||||
(byte) DTV_BLIT_VIC_IRQ
|
||||
(byte) DTV_BLIT_WRITE_NONTRANSPARENT
|
||||
(byte) DTV_BLIT_WRITE_TRANSPARENT
|
||||
(byte) DTV_BLIT_XNOR
|
||||
(byte) DTV_BLIT_XOR
|
||||
(byte) DTV_BORDER_OFF
|
||||
(const byte) DTV_BORDER_OFF#0 DTV_BORDER_OFF = (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) DTV_CHUNKY
|
||||
@ -43,8 +122,10 @@
|
||||
(const byte*) DTV_CONTROL#0 DTV_CONTROL = ((byte*))(word/dword/signed dword) 53308
|
||||
(byte*) DTV_FEATURE
|
||||
(const byte*) DTV_FEATURE#0 DTV_FEATURE = ((byte*))(word/dword/signed dword) 53311
|
||||
(byte) DTV_FEATURE_DISABLE_TIL_RESET
|
||||
(byte) DTV_FEATURE_ENABLE
|
||||
(const byte) DTV_FEATURE_ENABLE#0 DTV_FEATURE_ENABLE = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*) DTV_GRAPHICS_HICOL_BANK
|
||||
(byte*) DTV_GRAPHICS_VIC_BANK
|
||||
(const byte*) DTV_GRAPHICS_VIC_BANK#0 DTV_GRAPHICS_VIC_BANK = ((byte*))(word/dword/signed dword) 53309
|
||||
(byte) DTV_HIGHCOLOR
|
||||
@ -81,8 +162,18 @@
|
||||
(const byte*) DTV_PLANEB_START_MI#0 DTV_PLANEB_START_MI = ((byte*))(word/dword/signed dword) 53322
|
||||
(byte*) DTV_PLANEB_STEP
|
||||
(const byte*) DTV_PLANEB_STEP#0 DTV_PLANEB_STEP = ((byte*))(word/dword/signed dword) 53324
|
||||
(byte*) DTV_SPRITE_BANK
|
||||
(byte) GREEN
|
||||
(const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte) KEY_0
|
||||
(const byte) KEY_0#0 KEY_0 = (byte/signed byte/word/signed word/dword/signed dword) 35
|
||||
(byte) KEY_1
|
||||
@ -93,48 +184,122 @@
|
||||
(const byte) KEY_3#0 KEY_3 = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) KEY_4
|
||||
(const byte) KEY_4#0 KEY_4 = (byte/signed byte/word/signed word/dword/signed dword) 11
|
||||
(byte) KEY_5
|
||||
(byte) KEY_6
|
||||
(const byte) KEY_6#0 KEY_6 = (byte/signed byte/word/signed word/dword/signed dword) 19
|
||||
(byte) KEY_7
|
||||
(const byte) KEY_7#0 KEY_7 = (byte/signed byte/word/signed word/dword/signed dword) 24
|
||||
(byte) KEY_8
|
||||
(const byte) KEY_8#0 KEY_8 = (byte/signed byte/word/signed word/dword/signed dword) 27
|
||||
(byte) KEY_9
|
||||
(byte) KEY_A
|
||||
(const byte) KEY_A#0 KEY_A = (byte/signed byte/word/signed word/dword/signed dword) 10
|
||||
(byte) KEY_ARROW_LEFT
|
||||
(byte) KEY_ARROW_UP
|
||||
(byte) KEY_ASTERISK
|
||||
(byte) KEY_AT
|
||||
(byte) KEY_B
|
||||
(const byte) KEY_B#0 KEY_B = (byte/signed byte/word/signed word/dword/signed dword) 28
|
||||
(byte) KEY_C
|
||||
(const byte) KEY_C#0 KEY_C = (byte/signed byte/word/signed word/dword/signed dword) 20
|
||||
(byte) KEY_COLON
|
||||
(byte) KEY_COMMA
|
||||
(byte) KEY_COMMODORE
|
||||
(byte) KEY_CRSR_DOWN
|
||||
(byte) KEY_CRSR_RIGHT
|
||||
(byte) KEY_CTRL
|
||||
(byte) KEY_D
|
||||
(const byte) KEY_D#0 KEY_D = (byte/signed byte/word/signed word/dword/signed dword) 18
|
||||
(byte) KEY_DEL
|
||||
(byte) KEY_DOT
|
||||
(byte) KEY_E
|
||||
(const byte) KEY_E#0 KEY_E = (byte/signed byte/word/signed word/dword/signed dword) 14
|
||||
(byte) KEY_EQUALS
|
||||
(byte) KEY_F
|
||||
(byte) KEY_F1
|
||||
(byte) KEY_F3
|
||||
(byte) KEY_F5
|
||||
(byte) KEY_F7
|
||||
(byte) KEY_G
|
||||
(byte) KEY_H
|
||||
(const byte) KEY_H#0 KEY_H = (byte/signed byte/word/signed word/dword/signed dword) 29
|
||||
(byte) KEY_HOME
|
||||
(byte) KEY_I
|
||||
(byte) KEY_J
|
||||
(byte) KEY_K
|
||||
(byte) KEY_L
|
||||
(const byte) KEY_L#0 KEY_L = (byte/signed byte/word/signed word/dword/signed dword) 42
|
||||
(byte) KEY_LSHIFT
|
||||
(byte) KEY_M
|
||||
(byte) KEY_MINUS
|
||||
(byte) KEY_MODIFIER_COMMODORE
|
||||
(byte) KEY_MODIFIER_CTRL
|
||||
(byte) KEY_MODIFIER_LSHIFT
|
||||
(byte) KEY_MODIFIER_RSHIFT
|
||||
(byte) KEY_MODIFIER_SHIFT
|
||||
(byte) KEY_N
|
||||
(byte) KEY_O
|
||||
(const byte) KEY_O#0 KEY_O = (byte/signed byte/word/signed word/dword/signed dword) 38
|
||||
(byte) KEY_P
|
||||
(byte) KEY_PLUS
|
||||
(byte) KEY_POUND
|
||||
(byte) KEY_Q
|
||||
(byte) KEY_R
|
||||
(byte) KEY_RETURN
|
||||
(byte) KEY_RSHIFT
|
||||
(byte) KEY_RUNSTOP
|
||||
(byte) KEY_S
|
||||
(byte) KEY_SEMICOLON
|
||||
(byte) KEY_SLASH
|
||||
(byte) KEY_SPACE
|
||||
(const byte) KEY_SPACE#0 KEY_SPACE = (byte/signed byte/word/signed word/dword/signed dword) 60
|
||||
(byte) KEY_T
|
||||
(byte) KEY_U
|
||||
(const byte) KEY_U#0 KEY_U = (byte/signed byte/word/signed word/dword/signed dword) 30
|
||||
(byte) KEY_V
|
||||
(byte) KEY_W
|
||||
(byte) KEY_X
|
||||
(byte) KEY_Y
|
||||
(byte) KEY_Z
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(const byte) LIGHT_GREEN#0 LIGHT_GREEN = (byte/signed byte/word/signed word/dword/signed dword) 13
|
||||
(byte) LIGHT_GREY
|
||||
(byte[]) MENU_TEXT
|
||||
(const byte[]) MENU_TEXT#0 MENU_TEXT = (string) "C64DTV Graphics Modes CCLHBME@"+(string) " OHIIMCC@"+(string) " LUNCMMM@"+(string) "----------------------------------------@"+(string) "1. Standard Char (V) 0000000@"+(string) "2. Extended Color Char (V) 0000001@"+(string) "3. Multicolor Char (V) 0000010@"+(string) "4. Standard Bitmap (V) 0000100@"+(string) "5. Multicolor Bitmap (V) 0000110@"+(string) "6. High Color Standard Char (H) 0001000@"+(string) "7. High Extended Color Char (H) 0001001@"+(string) "8. High Multicolor Char (H) 0001010@"+(string) "9. High Multicolor Bitmap (H) 0001110@"+(string) "a. Sixs Fred 2 (D) 0010111@"+(string) "b. Two Plane Bitmap (D) 0011101@"+(string) "c. Sixs Fred (2 Plane MC BM) (D) 0011111@"+(string) "d. 8bpp Pixel Cell (D) 0111011@"+(string) "e. Chunky 8bpp Bitmap (D) 1111011@"+(string) "----------------------------------------@"+(string) " (V) vicII (H) vicII+hicol (D) c64dtv@"+(string) "@"
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(const byte) PROCPORT_RAM_CHARROM#0 PROCPORT_RAM_CHARROM = (byte/signed byte/word/signed word/dword/signed dword) 49
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) 53
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(const byte) VIC_BMM#0 VIC_BMM = (byte/signed byte/word/signed word/dword/signed dword) 32
|
||||
(byte*) VIC_CONTROL
|
||||
@ -153,6 +318,9 @@
|
||||
(const byte*) VIC_MEMORY#0 VIC_MEMORY = ((byte*))(word/dword/signed dword) 53272
|
||||
(byte) VIC_RSEL
|
||||
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) bitmap_clear()
|
||||
(word~) bitmap_clear::$3 $3 zp ZP_WORD:2 2.0
|
||||
(label) bitmap_clear::@1
|
||||
@ -425,6 +593,9 @@
|
||||
(byte) dtv_control#114 dtv_control zp ZP_BYTE:4 42.099999999999994
|
||||
(byte) dtv_control#145 dtv_control zp ZP_BYTE:4 2.0
|
||||
(byte) dtv_control#17 dtv_control zp ZP_BYTE:4 67.33333333333333
|
||||
(byte[]) keyboard_char_keycodes
|
||||
(byte[8]) keyboard_events
|
||||
(byte) keyboard_events_size
|
||||
(byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key)
|
||||
(byte~) keyboard_key_pressed::$2 reg byte a 4.0
|
||||
(label) keyboard_key_pressed::@2
|
||||
@ -469,6 +640,8 @@
|
||||
(byte) keyboard_matrix_read::rowid#0 reg byte y 4.0
|
||||
(byte[8]) keyboard_matrix_row_bitmask
|
||||
(const byte[8]) keyboard_matrix_row_bitmask#0 keyboard_matrix_row_bitmask = { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 }
|
||||
(byte) keyboard_modifiers
|
||||
(byte[8]) keyboard_scan_values
|
||||
(void()) main()
|
||||
(label) main::@2
|
||||
(void()) menu()
|
||||
@ -1143,7 +1316,7 @@
|
||||
(byte) mode_twoplanebitmap::i#2 reg byte x 202.0
|
||||
(byte*) print_char_cursor
|
||||
(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:5 2002.0
|
||||
(byte*~) print_char_cursor#101 print_char_cursor zp ZP_WORD:5 202.0
|
||||
(byte*~) print_char_cursor#103 print_char_cursor zp ZP_WORD:5 202.0
|
||||
(byte*) print_char_cursor#17 print_char_cursor zp ZP_WORD:5 821.0
|
||||
(byte*) print_char_cursor#19 print_char_cursor zp ZP_WORD:5 101.0
|
||||
(byte*) print_char_cursor#32 print_char_cursor zp ZP_WORD:5 572.0
|
||||
@ -1153,6 +1326,7 @@
|
||||
(byte*) print_cls::sc
|
||||
(byte*) print_cls::sc#1 sc zp ZP_WORD:2 151.5
|
||||
(byte*) print_cls::sc#2 sc zp ZP_WORD:2 151.5
|
||||
(byte[]) print_hextab
|
||||
(byte*) print_line_cursor
|
||||
(byte*) print_line_cursor#17 print_line_cursor zp ZP_WORD:13 8.583333333333332
|
||||
(byte*) print_line_cursor#18 print_line_cursor zp ZP_WORD:13 2004.0
|
||||
@ -1183,7 +1357,7 @@ zp ZP_WORD:2 [ menu::c#2 menu::c#1 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x
|
||||
reg byte x [ mode_8bppchunkybmm::i#2 mode_8bppchunkybmm::i#1 ]
|
||||
zp ZP_BYTE:4 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 dtv_control#114 dtv_control#145 dtv_control#17 mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 mode_sixsfred::cy#4 mode_sixsfred::cy#1 mode_sixsfred::ay#4 mode_sixsfred::ay#1 mode_sixsfred::by#4 mode_sixsfred::by#1 mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 mode_twoplanebitmap::ay#4 mode_twoplanebitmap::ay#1 mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 mode_sixsfred2::by#4 mode_sixsfred2::by#1 mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 mode_stdbitmap::l#2 mode_stdbitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 mode_mcchar::cy#4 mode_mcchar::cy#1 mode_ecmchar::cy#4 mode_ecmchar::cy#1 mode_stdchar::cy#4 mode_stdchar::cy#1 bitmap_init::$6 ]
|
||||
reg byte x [ mode_8bppchunkybmm::gfxbCpuBank#4 mode_8bppchunkybmm::gfxbCpuBank#7 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::gfxbCpuBank#2 ]
|
||||
zp ZP_WORD:5 [ mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 print_char_cursor#17 print_char_cursor#19 print_char_cursor#101 print_char_cursor#32 print_char_cursor#1 bitmap_plot::plotter_y#0 ]
|
||||
zp ZP_WORD:5 [ mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 print_char_cursor#17 print_char_cursor#19 print_char_cursor#103 print_char_cursor#32 print_char_cursor#1 bitmap_plot::plotter_y#0 ]
|
||||
reg byte x [ mode_ctrl::ctrl#14 mode_ctrl::ctrl#22 mode_ctrl::ctrl#6 mode_ctrl::ctrl#13 mode_ctrl::ctrl#5 mode_ctrl::ctrl#12 mode_ctrl::ctrl#4 mode_ctrl::ctrl#11 mode_ctrl::ctrl#3 mode_ctrl::ctrl#10 mode_ctrl::ctrl#2 mode_ctrl::ctrl#17 mode_ctrl::ctrl#1 mode_ctrl::ctrl#0 ]
|
||||
reg byte y [ keyboard_key_pressed::key#20 ]
|
||||
reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#1 ]
|
||||
|
@ -50,7 +50,7 @@ assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes
|
||||
[22] (signed byte) assert_sbyte::b#5 ← phi( test_sbytes/(const signed byte) test_sbytes::bb#0 test_sbytes::@1/(const signed byte) test_sbytes::bc#0 test_sbytes::@2/(const signed byte) test_sbytes::bd#0 test_sbytes::@3/(const signed byte) test_sbytes::be#0 test_sbytes::@4/(const signed byte) test_sbytes::bf#0 )
|
||||
[22] (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(const string) test_sbytes::msg test_sbytes::@1/(const string) test_sbytes::msg1 test_sbytes::@2/(const string) test_sbytes::msg2 test_sbytes::@3/(const string) test_sbytes::msg3 test_sbytes::@4/(const string) test_sbytes::msg4 )
|
||||
[23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5
|
||||
[24] (byte*~) print_char_cursor#86 ← (byte*) print_line_cursor#1
|
||||
[24] (byte*~) print_char_cursor#87 ← (byte*) print_line_cursor#1
|
||||
[25] call print_str
|
||||
to:assert_sbyte::@5
|
||||
assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte
|
||||
@ -76,7 +76,7 @@ assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6
|
||||
[35] call print_str
|
||||
to:assert_sbyte::@2
|
||||
print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5
|
||||
[36] (byte*) print_char_cursor#80 ← phi( assert_byte/(byte*) print_char_cursor#70 assert_byte::@1/(byte*) print_char_cursor#2 assert_byte::@3/(byte*) print_char_cursor#2 assert_byte::@5/(byte*) print_char_cursor#2 assert_sbyte/(byte*~) print_char_cursor#86 assert_sbyte::@1/(byte*) print_char_cursor#2 assert_sbyte::@3/(byte*) print_char_cursor#2 assert_sbyte::@5/(byte*) print_char_cursor#2 )
|
||||
[36] (byte*) print_char_cursor#80 ← phi( assert_byte/(byte*) print_char_cursor#70 assert_byte::@1/(byte*) print_char_cursor#2 assert_byte::@3/(byte*) print_char_cursor#2 assert_byte::@5/(byte*) print_char_cursor#2 assert_sbyte/(byte*~) print_char_cursor#87 assert_sbyte::@1/(byte*) print_char_cursor#2 assert_sbyte::@3/(byte*) print_char_cursor#2 assert_sbyte::@5/(byte*) print_char_cursor#2 )
|
||||
[36] (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(const string) assert_byte::str1 assert_byte::@3/(const string) assert_byte::str2 assert_byte::@5/(const string) assert_byte::str assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(const string) assert_sbyte::str1 assert_sbyte::@3/(const string) assert_sbyte::str2 assert_sbyte::@5/(const string) assert_sbyte::str )
|
||||
to:print_str::@1
|
||||
print_str::@1: scope:[print_str] from print_str print_str::@2
|
||||
@ -108,11 +108,11 @@ test_bytes: scope:[test_bytes] from main::@1
|
||||
[49] call assert_byte
|
||||
to:test_bytes::@1
|
||||
test_bytes::@1: scope:[test_bytes] from test_bytes
|
||||
[50] (byte*~) print_char_cursor#92 ← (byte*) print_line_cursor#1
|
||||
[50] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1
|
||||
[51] call assert_byte
|
||||
to:test_bytes::@2
|
||||
test_bytes::@2: scope:[test_bytes] from test_bytes::@1
|
||||
[52] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1
|
||||
[52] (byte*~) print_char_cursor#94 ← (byte*) print_line_cursor#1
|
||||
[53] call assert_byte
|
||||
to:test_bytes::@return
|
||||
test_bytes::@return: scope:[test_bytes] from test_bytes::@2
|
||||
@ -122,7 +122,7 @@ assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2
|
||||
[55] (byte*) print_line_cursor#50 ← phi( test_bytes/((byte*))(word/signed word/dword/signed dword) 1024 test_bytes::@1/(byte*) print_line_cursor#1 test_bytes::@2/(byte*) print_line_cursor#1 )
|
||||
[55] (byte) assert_byte::c#3 ← phi( test_bytes/(byte/signed byte/word/signed word/dword/signed dword) 0 test_bytes::@1/(byte/signed byte/word/signed word/dword/signed dword) 2 test_bytes::@2/(byte/word/signed word/dword/signed dword) 254 )
|
||||
[55] (byte) assert_byte::b#3 ← phi( test_bytes/(const byte) test_bytes::bb#0 test_bytes::@1/(const byte) test_bytes::bc#0 test_bytes::@2/(const byte) test_bytes::bd#0 )
|
||||
[55] (byte*) print_char_cursor#70 ← phi( test_bytes/((byte*))(word/signed word/dword/signed dword) 1024 test_bytes::@1/(byte*~) print_char_cursor#92 test_bytes::@2/(byte*~) print_char_cursor#93 )
|
||||
[55] (byte*) print_char_cursor#70 ← phi( test_bytes/((byte*))(word/signed word/dword/signed dword) 1024 test_bytes::@1/(byte*~) print_char_cursor#93 test_bytes::@2/(byte*~) print_char_cursor#94 )
|
||||
[55] (byte*) assert_byte::msg#3 ← phi( test_bytes/(const string) test_bytes::msg test_bytes::@1/(const string) test_bytes::msg1 test_bytes::@2/(const string) test_bytes::msg2 )
|
||||
[56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3
|
||||
[57] call print_str
|
||||
|
@ -4,7 +4,7 @@ CONTROL FLOW GRAPH SSA
|
||||
(byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
|
||||
(byte*) print_line_cursor#0 ← (byte*) print_screen#0
|
||||
(byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0
|
||||
to:@19
|
||||
to:@12
|
||||
print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5
|
||||
(byte*) print_char_cursor#80 ← phi( assert_byte/(byte*) print_char_cursor#70 assert_byte::@1/(byte*) print_char_cursor#71 assert_byte::@3/(byte*) print_char_cursor#72 assert_byte::@5/(byte*) print_char_cursor#15 assert_sbyte/(byte*) print_char_cursor#75 assert_sbyte::@1/(byte*) print_char_cursor#76 assert_sbyte::@3/(byte*) print_char_cursor#77 assert_sbyte::@5/(byte*) print_char_cursor#27 )
|
||||
(byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(byte*) print_str::str#3 assert_byte::@3/(byte*) print_str::str#4 assert_byte::@5/(byte*) print_str::str#2 assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(byte*) print_str::str#7 assert_sbyte::@3/(byte*) print_str::str#8 assert_sbyte::@5/(byte*) print_str::str#6 )
|
||||
@ -50,6 +50,12 @@ print_ln::@return: scope:[print_ln] from print_ln::@2
|
||||
(byte*) print_char_cursor#4 ← (byte*) print_char_cursor#37
|
||||
return
|
||||
to:@return
|
||||
@12: scope:[] from @begin
|
||||
(byte*) print_screen#7 ← phi( @begin/(byte*) print_screen#0 )
|
||||
(byte*) print_char_cursor#82 ← phi( @begin/(byte*) print_char_cursor#0 )
|
||||
(byte*) print_line_cursor#59 ← phi( @begin/(byte*) print_line_cursor#0 )
|
||||
(byte[]) print_hextab#0 ← (const string) $0
|
||||
to:@19
|
||||
print_cls: scope:[print_cls] from main
|
||||
(byte*) print_screen#1 ← phi( main/(byte*) print_screen#4 )
|
||||
(byte*) print_cls::sc#0 ← (byte*) print_screen#1
|
||||
@ -75,10 +81,10 @@ print_cls::@return: scope:[print_cls] from print_cls::@2
|
||||
(byte*) print_char_cursor#6 ← (byte*) print_char_cursor#38
|
||||
return
|
||||
to:@return
|
||||
@19: scope:[] from @begin
|
||||
(byte*) print_screen#6 ← phi( @begin/(byte*) print_screen#0 )
|
||||
(byte*) print_char_cursor#81 ← phi( @begin/(byte*) print_char_cursor#0 )
|
||||
(byte*) print_line_cursor#58 ← phi( @begin/(byte*) print_line_cursor#0 )
|
||||
@19: scope:[] from @12
|
||||
(byte*) print_screen#6 ← phi( @12/(byte*) print_screen#7 )
|
||||
(byte*) print_char_cursor#81 ← phi( @12/(byte*) print_char_cursor#82 )
|
||||
(byte*) print_line_cursor#58 ← phi( @12/(byte*) print_line_cursor#59 )
|
||||
(byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281
|
||||
(byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
@ -168,7 +174,7 @@ test_bytes::@return: scope:[test_bytes] from test_bytes::@3
|
||||
return
|
||||
to:@return
|
||||
assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2
|
||||
(byte*) print_line_cursor#67 ← phi( test_bytes/(byte*) print_line_cursor#49 test_bytes::@1/(byte*) print_line_cursor#9 test_bytes::@2/(byte*) print_line_cursor#10 )
|
||||
(byte*) print_line_cursor#68 ← phi( test_bytes/(byte*) print_line_cursor#49 test_bytes::@1/(byte*) print_line_cursor#9 test_bytes::@2/(byte*) print_line_cursor#10 )
|
||||
(byte) assert_byte::c#5 ← phi( test_bytes/(byte) assert_byte::c#0 test_bytes::@1/(byte) assert_byte::c#1 test_bytes::@2/(byte) assert_byte::c#2 )
|
||||
(byte) assert_byte::b#5 ← phi( test_bytes/(byte) assert_byte::b#0 test_bytes::@1/(byte) assert_byte::b#1 test_bytes::@2/(byte) assert_byte::b#2 )
|
||||
(byte*) print_char_cursor#70 ← phi( test_bytes/(byte*) print_char_cursor#69 test_bytes::@1/(byte*) print_char_cursor#11 test_bytes::@2/(byte*) print_char_cursor#12 )
|
||||
@ -177,7 +183,7 @@ assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2
|
||||
call print_str
|
||||
to:assert_byte::@5
|
||||
assert_byte::@5: scope:[assert_byte] from assert_byte
|
||||
(byte*) print_line_cursor#65 ← phi( assert_byte/(byte*) print_line_cursor#67 )
|
||||
(byte*) print_line_cursor#66 ← phi( assert_byte/(byte*) print_line_cursor#68 )
|
||||
(byte) assert_byte::c#4 ← phi( assert_byte/(byte) assert_byte::c#5 )
|
||||
(byte) assert_byte::b#4 ← phi( assert_byte/(byte) assert_byte::b#5 )
|
||||
(byte*) print_char_cursor#47 ← phi( assert_byte/(byte*) print_char_cursor#2 )
|
||||
@ -186,7 +192,7 @@ assert_byte::@5: scope:[assert_byte] from assert_byte
|
||||
call print_str
|
||||
to:assert_byte::@6
|
||||
assert_byte::@6: scope:[assert_byte] from assert_byte::@5
|
||||
(byte*) print_line_cursor#63 ← phi( assert_byte::@5/(byte*) print_line_cursor#65 )
|
||||
(byte*) print_line_cursor#64 ← phi( assert_byte::@5/(byte*) print_line_cursor#66 )
|
||||
(byte) assert_byte::c#3 ← phi( assert_byte::@5/(byte) assert_byte::c#4 )
|
||||
(byte) assert_byte::b#3 ← phi( assert_byte::@5/(byte) assert_byte::b#4 )
|
||||
(byte*) print_char_cursor#48 ← phi( assert_byte::@5/(byte*) print_char_cursor#2 )
|
||||
@ -195,25 +201,25 @@ assert_byte::@6: scope:[assert_byte] from assert_byte::@5
|
||||
if((bool~) assert_byte::$2) goto assert_byte::@1
|
||||
to:assert_byte::@3
|
||||
assert_byte::@1: scope:[assert_byte] from assert_byte::@6
|
||||
(byte*) print_line_cursor#59 ← phi( assert_byte::@6/(byte*) print_line_cursor#63 )
|
||||
(byte*) print_line_cursor#60 ← phi( assert_byte::@6/(byte*) print_line_cursor#64 )
|
||||
(byte*) print_char_cursor#71 ← phi( assert_byte::@6/(byte*) print_char_cursor#16 )
|
||||
*((byte*) BGCOL#0) ← (byte) RED#0
|
||||
(byte*) print_str::str#3 ← (const string) assert_byte::str1
|
||||
call print_str
|
||||
to:assert_byte::@7
|
||||
assert_byte::@7: scope:[assert_byte] from assert_byte::@1
|
||||
(byte*) print_line_cursor#54 ← phi( assert_byte::@1/(byte*) print_line_cursor#59 )
|
||||
(byte*) print_line_cursor#54 ← phi( assert_byte::@1/(byte*) print_line_cursor#60 )
|
||||
(byte*) print_char_cursor#49 ← phi( assert_byte::@1/(byte*) print_char_cursor#2 )
|
||||
(byte*) print_char_cursor#17 ← (byte*) print_char_cursor#49
|
||||
to:assert_byte::@2
|
||||
assert_byte::@3: scope:[assert_byte] from assert_byte::@6
|
||||
(byte*) print_line_cursor#60 ← phi( assert_byte::@6/(byte*) print_line_cursor#63 )
|
||||
(byte*) print_line_cursor#61 ← phi( assert_byte::@6/(byte*) print_line_cursor#64 )
|
||||
(byte*) print_char_cursor#72 ← phi( assert_byte::@6/(byte*) print_char_cursor#16 )
|
||||
(byte*) print_str::str#4 ← (const string) assert_byte::str2
|
||||
call print_str
|
||||
to:assert_byte::@8
|
||||
assert_byte::@8: scope:[assert_byte] from assert_byte::@3
|
||||
(byte*) print_line_cursor#55 ← phi( assert_byte::@3/(byte*) print_line_cursor#60 )
|
||||
(byte*) print_line_cursor#55 ← phi( assert_byte::@3/(byte*) print_line_cursor#61 )
|
||||
(byte*) print_char_cursor#50 ← phi( assert_byte::@3/(byte*) print_char_cursor#2 )
|
||||
(byte*) print_char_cursor#18 ← (byte*) print_char_cursor#50
|
||||
to:assert_byte::@2
|
||||
@ -312,7 +318,7 @@ test_sbytes::@return: scope:[test_sbytes] from test_sbytes::@5
|
||||
return
|
||||
to:@return
|
||||
assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4
|
||||
(byte*) print_line_cursor#68 ← phi( test_sbytes/(byte*) print_line_cursor#51 test_sbytes::@1/(byte*) print_line_cursor#15 test_sbytes::@2/(byte*) print_line_cursor#16 test_sbytes::@3/(byte*) print_line_cursor#17 test_sbytes::@4/(byte*) print_line_cursor#18 )
|
||||
(byte*) print_line_cursor#69 ← phi( test_sbytes/(byte*) print_line_cursor#51 test_sbytes::@1/(byte*) print_line_cursor#15 test_sbytes::@2/(byte*) print_line_cursor#16 test_sbytes::@3/(byte*) print_line_cursor#17 test_sbytes::@4/(byte*) print_line_cursor#18 )
|
||||
(signed byte) assert_sbyte::c#7 ← phi( test_sbytes/(signed byte) assert_sbyte::c#0 test_sbytes::@1/(signed byte) assert_sbyte::c#1 test_sbytes::@2/(signed byte) assert_sbyte::c#2 test_sbytes::@3/(signed byte) assert_sbyte::c#3 test_sbytes::@4/(signed byte) assert_sbyte::c#4 )
|
||||
(signed byte) assert_sbyte::b#7 ← phi( test_sbytes/(signed byte) assert_sbyte::b#0 test_sbytes::@1/(signed byte) assert_sbyte::b#1 test_sbytes::@2/(signed byte) assert_sbyte::b#2 test_sbytes::@3/(signed byte) assert_sbyte::b#3 test_sbytes::@4/(signed byte) assert_sbyte::b#4 )
|
||||
(byte*) print_char_cursor#75 ← phi( test_sbytes/(byte*) print_char_cursor#74 test_sbytes::@1/(byte*) print_char_cursor#21 test_sbytes::@2/(byte*) print_char_cursor#22 test_sbytes::@3/(byte*) print_char_cursor#23 test_sbytes::@4/(byte*) print_char_cursor#24 )
|
||||
@ -321,7 +327,7 @@ assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes
|
||||
call print_str
|
||||
to:assert_sbyte::@5
|
||||
assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte
|
||||
(byte*) print_line_cursor#66 ← phi( assert_sbyte/(byte*) print_line_cursor#68 )
|
||||
(byte*) print_line_cursor#67 ← phi( assert_sbyte/(byte*) print_line_cursor#69 )
|
||||
(signed byte) assert_sbyte::c#6 ← phi( assert_sbyte/(signed byte) assert_sbyte::c#7 )
|
||||
(signed byte) assert_sbyte::b#6 ← phi( assert_sbyte/(signed byte) assert_sbyte::b#7 )
|
||||
(byte*) print_char_cursor#59 ← phi( assert_sbyte/(byte*) print_char_cursor#2 )
|
||||
@ -330,7 +336,7 @@ assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte
|
||||
call print_str
|
||||
to:assert_sbyte::@6
|
||||
assert_sbyte::@6: scope:[assert_sbyte] from assert_sbyte::@5
|
||||
(byte*) print_line_cursor#64 ← phi( assert_sbyte::@5/(byte*) print_line_cursor#66 )
|
||||
(byte*) print_line_cursor#65 ← phi( assert_sbyte::@5/(byte*) print_line_cursor#67 )
|
||||
(signed byte) assert_sbyte::c#5 ← phi( assert_sbyte::@5/(signed byte) assert_sbyte::c#6 )
|
||||
(signed byte) assert_sbyte::b#5 ← phi( assert_sbyte::@5/(signed byte) assert_sbyte::b#6 )
|
||||
(byte*) print_char_cursor#60 ← phi( assert_sbyte::@5/(byte*) print_char_cursor#2 )
|
||||
@ -339,25 +345,25 @@ assert_sbyte::@6: scope:[assert_sbyte] from assert_sbyte::@5
|
||||
if((bool~) assert_sbyte::$2) goto assert_sbyte::@1
|
||||
to:assert_sbyte::@3
|
||||
assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6
|
||||
(byte*) print_line_cursor#61 ← phi( assert_sbyte::@6/(byte*) print_line_cursor#64 )
|
||||
(byte*) print_line_cursor#62 ← phi( assert_sbyte::@6/(byte*) print_line_cursor#65 )
|
||||
(byte*) print_char_cursor#76 ← phi( assert_sbyte::@6/(byte*) print_char_cursor#28 )
|
||||
*((byte*) BGCOL#0) ← (byte) RED#0
|
||||
(byte*) print_str::str#7 ← (const string) assert_sbyte::str1
|
||||
call print_str
|
||||
to:assert_sbyte::@7
|
||||
assert_sbyte::@7: scope:[assert_sbyte] from assert_sbyte::@1
|
||||
(byte*) print_line_cursor#56 ← phi( assert_sbyte::@1/(byte*) print_line_cursor#61 )
|
||||
(byte*) print_line_cursor#56 ← phi( assert_sbyte::@1/(byte*) print_line_cursor#62 )
|
||||
(byte*) print_char_cursor#61 ← phi( assert_sbyte::@1/(byte*) print_char_cursor#2 )
|
||||
(byte*) print_char_cursor#29 ← (byte*) print_char_cursor#61
|
||||
to:assert_sbyte::@2
|
||||
assert_sbyte::@3: scope:[assert_sbyte] from assert_sbyte::@6
|
||||
(byte*) print_line_cursor#62 ← phi( assert_sbyte::@6/(byte*) print_line_cursor#64 )
|
||||
(byte*) print_line_cursor#63 ← phi( assert_sbyte::@6/(byte*) print_line_cursor#65 )
|
||||
(byte*) print_char_cursor#77 ← phi( assert_sbyte::@6/(byte*) print_char_cursor#28 )
|
||||
(byte*) print_str::str#8 ← (const string) assert_sbyte::str2
|
||||
call print_str
|
||||
to:assert_sbyte::@8
|
||||
assert_sbyte::@8: scope:[assert_sbyte] from assert_sbyte::@3
|
||||
(byte*) print_line_cursor#57 ← phi( assert_sbyte::@3/(byte*) print_line_cursor#62 )
|
||||
(byte*) print_line_cursor#57 ← phi( assert_sbyte::@3/(byte*) print_line_cursor#63 )
|
||||
(byte*) print_char_cursor#62 ← phi( assert_sbyte::@3/(byte*) print_char_cursor#2 )
|
||||
(byte*) print_char_cursor#30 ← (byte*) print_char_cursor#62
|
||||
to:assert_sbyte::@2
|
||||
@ -394,6 +400,8 @@ assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@9
|
||||
@end: scope:[] from @25
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(const string) $0 = (string) "0123456789abcdef"
|
||||
(label) @12
|
||||
(label) @19
|
||||
(label) @24
|
||||
(label) @25
|
||||
@ -564,6 +572,7 @@ SYMBOL TABLE SSA
|
||||
(byte*) print_char_cursor#8
|
||||
(byte*) print_char_cursor#80
|
||||
(byte*) print_char_cursor#81
|
||||
(byte*) print_char_cursor#82
|
||||
(byte*) print_char_cursor#9
|
||||
(void()) print_cls()
|
||||
(byte*~) print_cls::$0
|
||||
@ -575,6 +584,8 @@ SYMBOL TABLE SSA
|
||||
(byte*) print_cls::sc#0
|
||||
(byte*) print_cls::sc#1
|
||||
(byte*) print_cls::sc#2
|
||||
(byte[]) print_hextab
|
||||
(byte[]) print_hextab#0
|
||||
(byte*) print_line_cursor
|
||||
(byte*) print_line_cursor#0
|
||||
(byte*) print_line_cursor#1
|
||||
@ -642,6 +653,7 @@ SYMBOL TABLE SSA
|
||||
(byte*) print_line_cursor#66
|
||||
(byte*) print_line_cursor#67
|
||||
(byte*) print_line_cursor#68
|
||||
(byte*) print_line_cursor#69
|
||||
(byte*) print_line_cursor#7
|
||||
(byte*) print_line_cursor#8
|
||||
(byte*) print_line_cursor#9
|
||||
@ -659,6 +671,7 @@ SYMBOL TABLE SSA
|
||||
(byte*) print_screen#4
|
||||
(byte*) print_screen#5
|
||||
(byte*) print_screen#6
|
||||
(byte*) print_screen#7
|
||||
(void()) print_str((byte*) print_str::str)
|
||||
(bool~) print_str::$0
|
||||
(label) print_str::@1
|
||||
@ -730,7 +743,7 @@ SYMBOL TABLE SSA
|
||||
(const string) test_sbytes::msg3 = (string) "-(0+2-4)=2@"
|
||||
(const string) test_sbytes::msg4 = (string) "-127-127=2@"
|
||||
|
||||
Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#58 (byte*) print_char_cursor#81 (byte*) print_screen#6 (byte*) print_line_cursor#53 (byte*) print_char_cursor#79 (byte*) print_screen#5
|
||||
Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#59 (byte*) print_char_cursor#82 (byte*) print_screen#7 (byte*) print_line_cursor#58 (byte*) print_char_cursor#81 (byte*) print_screen#6 (byte*) print_line_cursor#53 (byte*) print_char_cursor#79 (byte*) print_screen#5
|
||||
Alias (byte*) print_str::str#10 = (byte*) print_str::str#9
|
||||
Alias (byte*) print_char_cursor#2 = (byte*) print_char_cursor#34 (byte*) print_char_cursor#66 (byte*) print_char_cursor#35
|
||||
Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#25 (byte*) print_char_cursor#3 (byte*) print_line_cursor#26 (byte*) print_char_cursor#37 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4
|
||||
@ -752,7 +765,7 @@ Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#45 (byte*) print_
|
||||
Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#34 (byte*) print_line_cursor#35 (byte*) print_line_cursor#12
|
||||
Alias (byte) assert_byte::b#3 = (byte) assert_byte::b#4 (byte) assert_byte::b#5
|
||||
Alias (byte) assert_byte::c#3 = (byte) assert_byte::c#4 (byte) assert_byte::c#5
|
||||
Alias (byte*) print_line_cursor#54 = (byte*) print_line_cursor#65 (byte*) print_line_cursor#67 (byte*) print_line_cursor#63 (byte*) print_line_cursor#59 (byte*) print_line_cursor#60 (byte*) print_line_cursor#55
|
||||
Alias (byte*) print_line_cursor#54 = (byte*) print_line_cursor#66 (byte*) print_line_cursor#68 (byte*) print_line_cursor#64 (byte*) print_line_cursor#60 (byte*) print_line_cursor#61 (byte*) print_line_cursor#55
|
||||
Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#47
|
||||
Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#48 (byte*) print_char_cursor#71 (byte*) print_char_cursor#72
|
||||
Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#49
|
||||
@ -777,7 +790,7 @@ Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#57 (byte*) print_
|
||||
Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#42 (byte*) print_line_cursor#43 (byte*) print_line_cursor#20
|
||||
Alias (signed byte) assert_sbyte::b#5 = (signed byte) assert_sbyte::b#6 (signed byte) assert_sbyte::b#7
|
||||
Alias (signed byte) assert_sbyte::c#5 = (signed byte) assert_sbyte::c#6 (signed byte) assert_sbyte::c#7
|
||||
Alias (byte*) print_line_cursor#56 = (byte*) print_line_cursor#66 (byte*) print_line_cursor#68 (byte*) print_line_cursor#64 (byte*) print_line_cursor#61 (byte*) print_line_cursor#62 (byte*) print_line_cursor#57
|
||||
Alias (byte*) print_line_cursor#56 = (byte*) print_line_cursor#67 (byte*) print_line_cursor#69 (byte*) print_line_cursor#65 (byte*) print_line_cursor#62 (byte*) print_line_cursor#63 (byte*) print_line_cursor#57
|
||||
Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#59
|
||||
Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#60 (byte*) print_char_cursor#76 (byte*) print_char_cursor#77
|
||||
Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#61
|
||||
@ -854,6 +867,7 @@ Simple Condition (bool~) assert_byte::$2 if((byte) assert_byte::b#3!=(byte) asse
|
||||
Simple Condition (bool~) assert_sbyte::$2 if((signed byte) assert_sbyte::b#5!=(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) print_line_cursor#0 = ((byte*))1024
|
||||
Constant (const byte[]) print_hextab#0 = $0
|
||||
Constant (const byte*) BGCOL#0 = ((byte*))53281
|
||||
Constant (const byte) GREEN#0 = 5
|
||||
Constant (const byte) RED#0 = 2
|
||||
@ -907,7 +921,10 @@ Constant (const signed byte) assert_sbyte::b#3 = test_sbytes::be#0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte) assert_byte::b#2 = test_bytes::bd#0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Culled Empty Block (label) print_ln::@2
|
||||
Culled Empty Block (label) @12
|
||||
Culled Empty Block (label) print_cls::@2
|
||||
Culled Empty Block (label) @19
|
||||
Culled Empty Block (label) main::@3
|
||||
@ -1015,27 +1032,27 @@ Calls in [assert_byte] to print_str:69 print_str:71 print_str:74 print_ln:76 pri
|
||||
|
||||
Created 15 initial phi equivalence classes
|
||||
Coalesced [24] print_str::str#13 ← print_str::str#5
|
||||
Not coalescing [25] print_char_cursor#86 ← print_line_cursor#1
|
||||
Coalesced [27] print_char_cursor#89 ← print_char_cursor#2
|
||||
Coalesced (already) [30] print_char_cursor#88 ← print_char_cursor#2
|
||||
Coalesced [32] print_line_cursor#70 ← print_line_cursor#1
|
||||
Coalesced (already) [36] print_char_cursor#87 ← print_char_cursor#2
|
||||
Not coalescing [25] print_char_cursor#87 ← print_line_cursor#1
|
||||
Coalesced [27] print_char_cursor#90 ← print_char_cursor#2
|
||||
Coalesced (already) [30] print_char_cursor#89 ← print_char_cursor#2
|
||||
Coalesced [32] print_line_cursor#71 ← print_line_cursor#1
|
||||
Coalesced (already) [36] print_char_cursor#88 ← print_char_cursor#2
|
||||
Coalesced [39] print_str::str#14 ← print_str::str#11
|
||||
Coalesced (already) [40] print_char_cursor#90 ← print_char_cursor#80
|
||||
Coalesced (already) [40] print_char_cursor#91 ← print_char_cursor#80
|
||||
Coalesced [47] print_str::str#15 ← print_str::str#0
|
||||
Coalesced [48] print_char_cursor#91 ← print_char_cursor#1
|
||||
Coalesced [50] print_line_cursor#71 ← print_line_cursor#47
|
||||
Coalesced (already) [55] print_line_cursor#72 ← print_line_cursor#1
|
||||
Not coalescing [58] print_char_cursor#92 ← print_line_cursor#1
|
||||
Coalesced [59] print_line_cursor#73 ← print_line_cursor#1
|
||||
Not coalescing [61] print_char_cursor#93 ← print_line_cursor#1
|
||||
Coalesced (already) [62] print_line_cursor#74 ← print_line_cursor#1
|
||||
Coalesced [48] print_char_cursor#92 ← print_char_cursor#1
|
||||
Coalesced [50] print_line_cursor#72 ← print_line_cursor#47
|
||||
Coalesced (already) [55] print_line_cursor#73 ← print_line_cursor#1
|
||||
Not coalescing [58] print_char_cursor#93 ← print_line_cursor#1
|
||||
Coalesced [59] print_line_cursor#74 ← print_line_cursor#1
|
||||
Not coalescing [61] print_char_cursor#94 ← print_line_cursor#1
|
||||
Coalesced (already) [62] print_line_cursor#75 ← print_line_cursor#1
|
||||
Coalesced [67] print_str::str#12 ← print_str::str#1
|
||||
Coalesced [68] print_char_cursor#82 ← print_char_cursor#70
|
||||
Coalesced (already) [70] print_char_cursor#85 ← print_char_cursor#2
|
||||
Coalesced (already) [73] print_char_cursor#84 ← print_char_cursor#2
|
||||
Coalesced (already) [75] print_line_cursor#69 ← print_line_cursor#50
|
||||
Coalesced (already) [79] print_char_cursor#83 ← print_char_cursor#2
|
||||
Coalesced [68] print_char_cursor#83 ← print_char_cursor#70
|
||||
Coalesced (already) [70] print_char_cursor#86 ← print_char_cursor#2
|
||||
Coalesced (already) [73] print_char_cursor#85 ← print_char_cursor#2
|
||||
Coalesced (already) [75] print_line_cursor#70 ← print_line_cursor#50
|
||||
Coalesced (already) [79] print_char_cursor#84 ← print_char_cursor#2
|
||||
Coalesced [87] print_cls::sc#3 ← print_cls::sc#1
|
||||
Coalesced down to 10 phi equivalence classes
|
||||
Culled Empty Block (label) print_ln::@3
|
||||
@ -1112,7 +1129,7 @@ assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes
|
||||
[22] (signed byte) assert_sbyte::b#5 ← phi( test_sbytes/(const signed byte) test_sbytes::bb#0 test_sbytes::@1/(const signed byte) test_sbytes::bc#0 test_sbytes::@2/(const signed byte) test_sbytes::bd#0 test_sbytes::@3/(const signed byte) test_sbytes::be#0 test_sbytes::@4/(const signed byte) test_sbytes::bf#0 )
|
||||
[22] (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(const string) test_sbytes::msg test_sbytes::@1/(const string) test_sbytes::msg1 test_sbytes::@2/(const string) test_sbytes::msg2 test_sbytes::@3/(const string) test_sbytes::msg3 test_sbytes::@4/(const string) test_sbytes::msg4 )
|
||||
[23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5
|
||||
[24] (byte*~) print_char_cursor#86 ← (byte*) print_line_cursor#1
|
||||
[24] (byte*~) print_char_cursor#87 ← (byte*) print_line_cursor#1
|
||||
[25] call print_str
|
||||
to:assert_sbyte::@5
|
||||
assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte
|
||||
@ -1138,7 +1155,7 @@ assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6
|
||||
[35] call print_str
|
||||
to:assert_sbyte::@2
|
||||
print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5
|
||||
[36] (byte*) print_char_cursor#80 ← phi( assert_byte/(byte*) print_char_cursor#70 assert_byte::@1/(byte*) print_char_cursor#2 assert_byte::@3/(byte*) print_char_cursor#2 assert_byte::@5/(byte*) print_char_cursor#2 assert_sbyte/(byte*~) print_char_cursor#86 assert_sbyte::@1/(byte*) print_char_cursor#2 assert_sbyte::@3/(byte*) print_char_cursor#2 assert_sbyte::@5/(byte*) print_char_cursor#2 )
|
||||
[36] (byte*) print_char_cursor#80 ← phi( assert_byte/(byte*) print_char_cursor#70 assert_byte::@1/(byte*) print_char_cursor#2 assert_byte::@3/(byte*) print_char_cursor#2 assert_byte::@5/(byte*) print_char_cursor#2 assert_sbyte/(byte*~) print_char_cursor#87 assert_sbyte::@1/(byte*) print_char_cursor#2 assert_sbyte::@3/(byte*) print_char_cursor#2 assert_sbyte::@5/(byte*) print_char_cursor#2 )
|
||||
[36] (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(const string) assert_byte::str1 assert_byte::@3/(const string) assert_byte::str2 assert_byte::@5/(const string) assert_byte::str assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(const string) assert_sbyte::str1 assert_sbyte::@3/(const string) assert_sbyte::str2 assert_sbyte::@5/(const string) assert_sbyte::str )
|
||||
to:print_str::@1
|
||||
print_str::@1: scope:[print_str] from print_str print_str::@2
|
||||
@ -1170,11 +1187,11 @@ test_bytes: scope:[test_bytes] from main::@1
|
||||
[49] call assert_byte
|
||||
to:test_bytes::@1
|
||||
test_bytes::@1: scope:[test_bytes] from test_bytes
|
||||
[50] (byte*~) print_char_cursor#92 ← (byte*) print_line_cursor#1
|
||||
[50] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1
|
||||
[51] call assert_byte
|
||||
to:test_bytes::@2
|
||||
test_bytes::@2: scope:[test_bytes] from test_bytes::@1
|
||||
[52] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1
|
||||
[52] (byte*~) print_char_cursor#94 ← (byte*) print_line_cursor#1
|
||||
[53] call assert_byte
|
||||
to:test_bytes::@return
|
||||
test_bytes::@return: scope:[test_bytes] from test_bytes::@2
|
||||
@ -1184,7 +1201,7 @@ assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2
|
||||
[55] (byte*) print_line_cursor#50 ← phi( test_bytes/((byte*))(word/signed word/dword/signed dword) 1024 test_bytes::@1/(byte*) print_line_cursor#1 test_bytes::@2/(byte*) print_line_cursor#1 )
|
||||
[55] (byte) assert_byte::c#3 ← phi( test_bytes/(byte/signed byte/word/signed word/dword/signed dword) 0 test_bytes::@1/(byte/signed byte/word/signed word/dword/signed dword) 2 test_bytes::@2/(byte/word/signed word/dword/signed dword) 254 )
|
||||
[55] (byte) assert_byte::b#3 ← phi( test_bytes/(const byte) test_bytes::bb#0 test_bytes::@1/(const byte) test_bytes::bc#0 test_bytes::@2/(const byte) test_bytes::bd#0 )
|
||||
[55] (byte*) print_char_cursor#70 ← phi( test_bytes/((byte*))(word/signed word/dword/signed dword) 1024 test_bytes::@1/(byte*~) print_char_cursor#92 test_bytes::@2/(byte*~) print_char_cursor#93 )
|
||||
[55] (byte*) print_char_cursor#70 ← phi( test_bytes/((byte*))(word/signed word/dword/signed dword) 1024 test_bytes::@1/(byte*~) print_char_cursor#93 test_bytes::@2/(byte*~) print_char_cursor#94 )
|
||||
[55] (byte*) assert_byte::msg#3 ← phi( test_bytes/(const string) test_bytes::msg test_bytes::@1/(const string) test_bytes::msg1 test_bytes::@2/(const string) test_bytes::msg2 )
|
||||
[56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3
|
||||
[57] call print_str
|
||||
@ -1249,13 +1266,14 @@ VARIABLE REGISTER WEIGHTS
|
||||
(byte*) print_char_cursor#2 2.230769230769231
|
||||
(byte*) print_char_cursor#70 3.0
|
||||
(byte*) print_char_cursor#80 18.0
|
||||
(byte*~) print_char_cursor#86 4.0
|
||||
(byte*~) print_char_cursor#92 4.0
|
||||
(byte*~) print_char_cursor#87 4.0
|
||||
(byte*~) print_char_cursor#93 4.0
|
||||
(byte*~) print_char_cursor#94 4.0
|
||||
(void()) print_cls()
|
||||
(byte*) print_cls::sc
|
||||
(byte*) print_cls::sc#1 16.5
|
||||
(byte*) print_cls::sc#2 16.5
|
||||
(byte[]) print_hextab
|
||||
(byte*) print_line_cursor
|
||||
(byte*) print_line_cursor#1 1.2500000000000002
|
||||
(byte*) print_line_cursor#24 24.0
|
||||
@ -1285,7 +1303,7 @@ Initial phi equivalence classes
|
||||
[ assert_sbyte::msg#5 ]
|
||||
[ assert_sbyte::b#5 ]
|
||||
[ assert_sbyte::c#5 ]
|
||||
[ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#86 print_char_cursor#1 print_char_cursor#92 print_char_cursor#93 ]
|
||||
[ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#87 print_char_cursor#1 print_char_cursor#93 print_char_cursor#94 ]
|
||||
[ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ]
|
||||
[ print_line_cursor#24 print_line_cursor#47 print_line_cursor#50 print_line_cursor#1 ]
|
||||
[ assert_byte::msg#3 ]
|
||||
@ -1296,7 +1314,7 @@ Complete equivalence classes
|
||||
[ assert_sbyte::msg#5 ]
|
||||
[ assert_sbyte::b#5 ]
|
||||
[ assert_sbyte::c#5 ]
|
||||
[ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#86 print_char_cursor#1 print_char_cursor#92 print_char_cursor#93 ]
|
||||
[ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#87 print_char_cursor#1 print_char_cursor#93 print_char_cursor#94 ]
|
||||
[ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ]
|
||||
[ print_line_cursor#24 print_line_cursor#47 print_line_cursor#50 print_line_cursor#1 ]
|
||||
[ assert_byte::msg#3 ]
|
||||
@ -1306,7 +1324,7 @@ Complete equivalence classes
|
||||
Allocated zp ZP_WORD:2 [ assert_sbyte::msg#5 ]
|
||||
Allocated zp ZP_BYTE:4 [ assert_sbyte::b#5 ]
|
||||
Allocated zp ZP_BYTE:5 [ assert_sbyte::c#5 ]
|
||||
Allocated zp ZP_WORD:6 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#86 print_char_cursor#1 print_char_cursor#92 print_char_cursor#93 ]
|
||||
Allocated zp ZP_WORD:6 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#87 print_char_cursor#1 print_char_cursor#93 print_char_cursor#94 ]
|
||||
Allocated zp ZP_WORD:8 [ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ]
|
||||
Allocated zp ZP_WORD:10 [ print_line_cursor#24 print_line_cursor#47 print_line_cursor#50 print_line_cursor#1 ]
|
||||
Allocated zp ZP_WORD:12 [ assert_byte::msg#3 ]
|
||||
@ -1495,7 +1513,7 @@ assert_sbyte: {
|
||||
sta print_str.str
|
||||
lda msg+1
|
||||
sta print_str.str+1
|
||||
//SEG60 [24] (byte*~) print_char_cursor#86 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
//SEG60 [24] (byte*~) print_char_cursor#87 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
lda print_line_cursor
|
||||
sta print_char_cursor
|
||||
lda print_line_cursor+1
|
||||
@ -1503,7 +1521,7 @@ assert_sbyte: {
|
||||
//SEG61 [25] call print_str
|
||||
//SEG62 [36] phi from assert_sbyte to print_str [phi:assert_sbyte->print_str]
|
||||
print_str_from_assert_sbyte:
|
||||
//SEG63 [36] phi (byte*) print_char_cursor#80 = (byte*~) print_char_cursor#86 [phi:assert_sbyte->print_str#0] -- register_copy
|
||||
//SEG63 [36] phi (byte*) print_char_cursor#80 = (byte*~) print_char_cursor#87 [phi:assert_sbyte->print_str#0] -- register_copy
|
||||
//SEG64 [36] phi (byte*) print_str::str#11 = (byte*) print_str::str#5 [phi:assert_sbyte->print_str#1] -- register_copy
|
||||
jsr print_str
|
||||
//SEG65 [26] phi from assert_sbyte to assert_sbyte::@5 [phi:assert_sbyte->assert_sbyte::@5]
|
||||
@ -1684,7 +1702,7 @@ test_bytes: {
|
||||
jmp b1
|
||||
//SEG120 test_bytes::@1
|
||||
b1:
|
||||
//SEG121 [50] (byte*~) print_char_cursor#92 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
//SEG121 [50] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
lda print_line_cursor
|
||||
sta print_char_cursor
|
||||
lda print_line_cursor+1
|
||||
@ -1699,7 +1717,7 @@ test_bytes: {
|
||||
//SEG126 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bc#0 [phi:test_bytes::@1->assert_byte#2] -- vbuz1=vbuc1
|
||||
lda #bc
|
||||
sta assert_byte.b
|
||||
//SEG127 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#92 [phi:test_bytes::@1->assert_byte#3] -- register_copy
|
||||
//SEG127 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#93 [phi:test_bytes::@1->assert_byte#3] -- register_copy
|
||||
//SEG128 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg1 [phi:test_bytes::@1->assert_byte#4] -- pbuz1=pbuc1
|
||||
lda #<msg1
|
||||
sta assert_byte.msg
|
||||
@ -1709,7 +1727,7 @@ test_bytes: {
|
||||
jmp b2
|
||||
//SEG129 test_bytes::@2
|
||||
b2:
|
||||
//SEG130 [52] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
//SEG130 [52] (byte*~) print_char_cursor#94 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
lda print_line_cursor
|
||||
sta print_char_cursor
|
||||
lda print_line_cursor+1
|
||||
@ -1724,7 +1742,7 @@ test_bytes: {
|
||||
//SEG135 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bd#0 [phi:test_bytes::@2->assert_byte#2] -- vbuz1=vbuc1
|
||||
lda #bd
|
||||
sta assert_byte.b
|
||||
//SEG136 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#93 [phi:test_bytes::@2->assert_byte#3] -- register_copy
|
||||
//SEG136 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#94 [phi:test_bytes::@2->assert_byte#3] -- register_copy
|
||||
//SEG137 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg2 [phi:test_bytes::@2->assert_byte#4] -- pbuz1=pbuc1
|
||||
lda #<msg2
|
||||
sta assert_byte.msg
|
||||
@ -1874,7 +1892,7 @@ Statement [6] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 [ ] ( main:2 [ ]
|
||||
Statement [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ assert_sbyte::b#5 ]
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ assert_sbyte::c#5 ]
|
||||
Statement [24] (byte*~) print_char_cursor#86 ← (byte*) print_line_cursor#1 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#86 print_line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#86 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#86 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#86 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#86 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#86 print_line_cursor#1 ] ) always clobbers reg byte a
|
||||
Statement [24] (byte*~) print_char_cursor#87 ← (byte*) print_line_cursor#1 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#87 print_line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#87 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#87 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#87 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#87 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#87 print_line_cursor#1 ] ) always clobbers reg byte a
|
||||
Statement [34] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ print_line_cursor#1 print_char_cursor#2 ] ) always clobbers reg byte a
|
||||
Statement [38] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 [ print_char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:4 [ assert_sbyte::b#5 ]
|
||||
@ -1886,22 +1904,22 @@ Removing always clobbered register reg byte y as potential for zp ZP_BYTE:15 [ a
|
||||
Statement [40] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) [ print_char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [45] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#24 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] ) always clobbers reg byte a
|
||||
Statement [46] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] ) always clobbers reg byte a
|
||||
Statement [50] (byte*~) print_char_cursor#92 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#92 ] ( main:2::test_bytes:7 [ print_line_cursor#1 print_char_cursor#92 ] ) always clobbers reg byte a
|
||||
Statement [52] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#93 ] ( main:2::test_bytes:7 [ print_line_cursor#1 print_char_cursor#93 ] ) always clobbers reg byte a
|
||||
Statement [50] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#93 ] ( main:2::test_bytes:7 [ print_line_cursor#1 print_char_cursor#93 ] ) always clobbers reg byte a
|
||||
Statement [52] (byte*~) print_char_cursor#94 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#94 ] ( main:2::test_bytes:7 [ print_line_cursor#1 print_char_cursor#94 ] ) always clobbers reg byte a
|
||||
Statement [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] ) always clobbers reg byte a
|
||||
Statement [66] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ print_char_cursor#2 print_line_cursor#50 ] ( main:2::test_bytes:7::assert_byte:49 [ print_char_cursor#2 print_line_cursor#50 ] main:2::test_bytes:7::assert_byte:51 [ print_char_cursor#2 print_line_cursor#50 ] main:2::test_bytes:7::assert_byte:53 [ print_char_cursor#2 print_line_cursor#50 ] ) always clobbers reg byte a
|
||||
Statement [70] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [72] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a
|
||||
Statement [6] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] ) always clobbers reg byte a
|
||||
Statement [24] (byte*~) print_char_cursor#86 ← (byte*) print_line_cursor#1 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#86 print_line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#86 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#86 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#86 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#86 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#86 print_line_cursor#1 ] ) always clobbers reg byte a
|
||||
Statement [24] (byte*~) print_char_cursor#87 ← (byte*) print_line_cursor#1 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#87 print_line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#87 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#87 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#87 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#87 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#87 print_line_cursor#1 ] ) always clobbers reg byte a
|
||||
Statement [34] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ print_line_cursor#1 print_char_cursor#2 ] ) always clobbers reg byte a
|
||||
Statement [38] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 [ print_char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [40] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) [ print_char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [45] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#24 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] ) always clobbers reg byte a
|
||||
Statement [46] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] ) always clobbers reg byte a
|
||||
Statement [50] (byte*~) print_char_cursor#92 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#92 ] ( main:2::test_bytes:7 [ print_line_cursor#1 print_char_cursor#92 ] ) always clobbers reg byte a
|
||||
Statement [52] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#93 ] ( main:2::test_bytes:7 [ print_line_cursor#1 print_char_cursor#93 ] ) always clobbers reg byte a
|
||||
Statement [50] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#93 ] ( main:2::test_bytes:7 [ print_line_cursor#1 print_char_cursor#93 ] ) always clobbers reg byte a
|
||||
Statement [52] (byte*~) print_char_cursor#94 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#94 ] ( main:2::test_bytes:7 [ print_line_cursor#1 print_char_cursor#94 ] ) always clobbers reg byte a
|
||||
Statement [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] ) always clobbers reg byte a
|
||||
Statement [66] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ print_char_cursor#2 print_line_cursor#50 ] ( main:2::test_bytes:7::assert_byte:49 [ print_char_cursor#2 print_line_cursor#50 ] main:2::test_bytes:7::assert_byte:51 [ print_char_cursor#2 print_line_cursor#50 ] main:2::test_bytes:7::assert_byte:53 [ print_char_cursor#2 print_line_cursor#50 ] ) always clobbers reg byte a
|
||||
Statement [70] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y
|
||||
@ -1909,7 +1927,7 @@ Statement [72] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/sign
|
||||
Potential registers zp ZP_WORD:2 [ assert_sbyte::msg#5 ] : zp ZP_WORD:2 ,
|
||||
Potential registers zp ZP_BYTE:4 [ assert_sbyte::b#5 ] : zp ZP_BYTE:4 , reg byte x ,
|
||||
Potential registers zp ZP_BYTE:5 [ assert_sbyte::c#5 ] : zp ZP_BYTE:5 , reg byte x ,
|
||||
Potential registers zp ZP_WORD:6 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#86 print_char_cursor#1 print_char_cursor#92 print_char_cursor#93 ] : zp ZP_WORD:6 ,
|
||||
Potential registers zp ZP_WORD:6 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#87 print_char_cursor#1 print_char_cursor#93 print_char_cursor#94 ] : zp ZP_WORD:6 ,
|
||||
Potential registers zp ZP_WORD:8 [ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ] : zp ZP_WORD:8 ,
|
||||
Potential registers zp ZP_WORD:10 [ print_line_cursor#24 print_line_cursor#47 print_line_cursor#50 print_line_cursor#1 ] : zp ZP_WORD:10 ,
|
||||
Potential registers zp ZP_WORD:12 [ assert_byte::msg#3 ] : zp ZP_WORD:12 ,
|
||||
@ -1918,7 +1936,7 @@ Potential registers zp ZP_BYTE:15 [ assert_byte::c#3 ] : zp ZP_BYTE:15 , reg byt
|
||||
Potential registers zp ZP_WORD:16 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:16 ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [] 46.23: zp ZP_WORD:6 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#86 print_char_cursor#1 print_char_cursor#92 print_char_cursor#93 ] 31.8: zp ZP_WORD:10 [ print_line_cursor#24 print_line_cursor#47 print_line_cursor#50 print_line_cursor#1 ]
|
||||
Uplift Scope [] 46.23: zp ZP_WORD:6 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#87 print_char_cursor#1 print_char_cursor#93 print_char_cursor#94 ] 31.8: zp ZP_WORD:10 [ print_line_cursor#24 print_line_cursor#47 print_line_cursor#50 print_line_cursor#1 ]
|
||||
Uplift Scope [print_str] 45.5: zp ZP_WORD:8 [ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ]
|
||||
Uplift Scope [print_cls] 33: zp ZP_WORD:16 [ print_cls::sc#2 print_cls::sc#1 ]
|
||||
Uplift Scope [assert_byte] 2: zp ZP_WORD:12 [ assert_byte::msg#3 ] 0.4: zp ZP_BYTE:14 [ assert_byte::b#3 ] 0.4: zp ZP_BYTE:15 [ assert_byte::c#3 ]
|
||||
@ -1928,7 +1946,7 @@ Uplift Scope [main]
|
||||
Uplift Scope [test_bytes]
|
||||
Uplift Scope [test_sbytes]
|
||||
|
||||
Uplifting [] best 2199 combination zp ZP_WORD:6 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#86 print_char_cursor#1 print_char_cursor#92 print_char_cursor#93 ] zp ZP_WORD:10 [ print_line_cursor#24 print_line_cursor#47 print_line_cursor#50 print_line_cursor#1 ]
|
||||
Uplifting [] best 2199 combination zp ZP_WORD:6 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#87 print_char_cursor#1 print_char_cursor#93 print_char_cursor#94 ] zp ZP_WORD:10 [ print_line_cursor#24 print_line_cursor#47 print_line_cursor#50 print_line_cursor#1 ]
|
||||
Uplifting [print_str] best 2199 combination zp ZP_WORD:8 [ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ]
|
||||
Uplifting [print_cls] best 2199 combination zp ZP_WORD:16 [ print_cls::sc#2 print_cls::sc#1 ]
|
||||
Uplifting [assert_byte] best 2187 combination zp ZP_WORD:12 [ assert_byte::msg#3 ] reg byte x [ assert_byte::b#3 ] zp ZP_BYTE:15 [ assert_byte::c#3 ]
|
||||
@ -1946,7 +1964,7 @@ Coalescing zero page register with common assignment [ zp ZP_WORD:2 [ assert_sby
|
||||
Coalescing zero page register [ zp ZP_WORD:2 [ assert_sbyte::msg#5 print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 assert_byte::msg#3 ] ] with [ zp ZP_WORD:16 [ print_cls::sc#2 print_cls::sc#1 ] ]
|
||||
Coalescing zero page register [ zp ZP_BYTE:5 [ assert_sbyte::c#5 ] ] with [ zp ZP_BYTE:15 [ assert_byte::c#3 ] ]
|
||||
Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:4 [ assert_sbyte::c#5 assert_byte::c#3 ]
|
||||
Allocated (was zp ZP_WORD:6) zp ZP_WORD:5 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#86 print_char_cursor#1 print_char_cursor#92 print_char_cursor#93 ]
|
||||
Allocated (was zp ZP_WORD:6) zp ZP_WORD:5 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#87 print_char_cursor#1 print_char_cursor#93 print_char_cursor#94 ]
|
||||
Allocated (was zp ZP_WORD:10) zp ZP_WORD:7 [ print_line_cursor#24 print_line_cursor#47 print_line_cursor#50 print_line_cursor#1 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
@ -2121,7 +2139,7 @@ assert_sbyte: {
|
||||
.label c = 4
|
||||
//SEG59 [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5
|
||||
// (byte*) print_str::str#5 = (byte*) assert_sbyte::msg#5 // register copy zp ZP_WORD:2
|
||||
//SEG60 [24] (byte*~) print_char_cursor#86 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
//SEG60 [24] (byte*~) print_char_cursor#87 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
lda print_line_cursor
|
||||
sta print_char_cursor
|
||||
lda print_line_cursor+1
|
||||
@ -2129,7 +2147,7 @@ assert_sbyte: {
|
||||
//SEG61 [25] call print_str
|
||||
//SEG62 [36] phi from assert_sbyte to print_str [phi:assert_sbyte->print_str]
|
||||
print_str_from_assert_sbyte:
|
||||
//SEG63 [36] phi (byte*) print_char_cursor#80 = (byte*~) print_char_cursor#86 [phi:assert_sbyte->print_str#0] -- register_copy
|
||||
//SEG63 [36] phi (byte*) print_char_cursor#80 = (byte*~) print_char_cursor#87 [phi:assert_sbyte->print_str#0] -- register_copy
|
||||
//SEG64 [36] phi (byte*) print_str::str#11 = (byte*) print_str::str#5 [phi:assert_sbyte->print_str#1] -- register_copy
|
||||
jsr print_str
|
||||
//SEG65 [26] phi from assert_sbyte to assert_sbyte::@5 [phi:assert_sbyte->assert_sbyte::@5]
|
||||
@ -2308,7 +2326,7 @@ test_bytes: {
|
||||
jmp b1
|
||||
//SEG120 test_bytes::@1
|
||||
b1:
|
||||
//SEG121 [50] (byte*~) print_char_cursor#92 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
//SEG121 [50] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
lda print_line_cursor
|
||||
sta print_char_cursor
|
||||
lda print_line_cursor+1
|
||||
@ -2322,7 +2340,7 @@ test_bytes: {
|
||||
sta assert_byte.c
|
||||
//SEG126 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bc#0 [phi:test_bytes::@1->assert_byte#2] -- vbuxx=vbuc1
|
||||
ldx #bc
|
||||
//SEG127 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#92 [phi:test_bytes::@1->assert_byte#3] -- register_copy
|
||||
//SEG127 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#93 [phi:test_bytes::@1->assert_byte#3] -- register_copy
|
||||
//SEG128 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg1 [phi:test_bytes::@1->assert_byte#4] -- pbuz1=pbuc1
|
||||
lda #<msg1
|
||||
sta assert_byte.msg
|
||||
@ -2332,7 +2350,7 @@ test_bytes: {
|
||||
jmp b2
|
||||
//SEG129 test_bytes::@2
|
||||
b2:
|
||||
//SEG130 [52] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
//SEG130 [52] (byte*~) print_char_cursor#94 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
lda print_line_cursor
|
||||
sta print_char_cursor
|
||||
lda print_line_cursor+1
|
||||
@ -2346,7 +2364,7 @@ test_bytes: {
|
||||
sta assert_byte.c
|
||||
//SEG135 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bd#0 [phi:test_bytes::@2->assert_byte#2] -- vbuxx=vbuc1
|
||||
ldx #bd
|
||||
//SEG136 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#93 [phi:test_bytes::@2->assert_byte#3] -- register_copy
|
||||
//SEG136 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#94 [phi:test_bytes::@2->assert_byte#3] -- register_copy
|
||||
//SEG137 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg2 [phi:test_bytes::@2->assert_byte#4] -- pbuz1=pbuc1
|
||||
lda #<msg2
|
||||
sta assert_byte.msg
|
||||
@ -2650,15 +2668,16 @@ FINAL SYMBOL TABLE
|
||||
(byte*) print_char_cursor#2 print_char_cursor zp ZP_WORD:5 2.230769230769231
|
||||
(byte*) print_char_cursor#70 print_char_cursor zp ZP_WORD:5 3.0
|
||||
(byte*) print_char_cursor#80 print_char_cursor zp ZP_WORD:5 18.0
|
||||
(byte*~) print_char_cursor#86 print_char_cursor zp ZP_WORD:5 4.0
|
||||
(byte*~) print_char_cursor#92 print_char_cursor zp ZP_WORD:5 4.0
|
||||
(byte*~) print_char_cursor#87 print_char_cursor zp ZP_WORD:5 4.0
|
||||
(byte*~) print_char_cursor#93 print_char_cursor zp ZP_WORD:5 4.0
|
||||
(byte*~) print_char_cursor#94 print_char_cursor zp ZP_WORD:5 4.0
|
||||
(void()) print_cls()
|
||||
(label) print_cls::@1
|
||||
(label) print_cls::@return
|
||||
(byte*) print_cls::sc
|
||||
(byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5
|
||||
(byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5
|
||||
(byte[]) print_hextab
|
||||
(byte*) print_line_cursor
|
||||
(byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:7 1.2500000000000002
|
||||
(byte*) print_line_cursor#24 print_line_cursor zp ZP_WORD:7 24.0
|
||||
@ -2716,7 +2735,7 @@ FINAL SYMBOL TABLE
|
||||
zp ZP_WORD:2 [ assert_sbyte::msg#5 print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 assert_byte::msg#3 print_cls::sc#2 print_cls::sc#1 ]
|
||||
reg byte x [ assert_sbyte::b#5 ]
|
||||
zp ZP_BYTE:4 [ assert_sbyte::c#5 assert_byte::c#3 ]
|
||||
zp ZP_WORD:5 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#86 print_char_cursor#1 print_char_cursor#92 print_char_cursor#93 ]
|
||||
zp ZP_WORD:5 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#87 print_char_cursor#1 print_char_cursor#93 print_char_cursor#94 ]
|
||||
zp ZP_WORD:7 [ print_line_cursor#24 print_line_cursor#47 print_line_cursor#50 print_line_cursor#1 ]
|
||||
reg byte x [ assert_byte::b#3 ]
|
||||
|
||||
@ -2858,14 +2877,14 @@ assert_sbyte: {
|
||||
.label c = 4
|
||||
//SEG59 [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5
|
||||
// (byte*) print_str::str#5 = (byte*) assert_sbyte::msg#5 // register copy zp ZP_WORD:2
|
||||
//SEG60 [24] (byte*~) print_char_cursor#86 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
//SEG60 [24] (byte*~) print_char_cursor#87 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
lda print_line_cursor
|
||||
sta print_char_cursor
|
||||
lda print_line_cursor+1
|
||||
sta print_char_cursor+1
|
||||
//SEG61 [25] call print_str
|
||||
//SEG62 [36] phi from assert_sbyte to print_str [phi:assert_sbyte->print_str]
|
||||
//SEG63 [36] phi (byte*) print_char_cursor#80 = (byte*~) print_char_cursor#86 [phi:assert_sbyte->print_str#0] -- register_copy
|
||||
//SEG63 [36] phi (byte*) print_char_cursor#80 = (byte*~) print_char_cursor#87 [phi:assert_sbyte->print_str#0] -- register_copy
|
||||
//SEG64 [36] phi (byte*) print_str::str#11 = (byte*) print_str::str#5 [phi:assert_sbyte->print_str#1] -- register_copy
|
||||
jsr print_str
|
||||
//SEG65 [26] phi from assert_sbyte to assert_sbyte::@5 [phi:assert_sbyte->assert_sbyte::@5]
|
||||
@ -3013,7 +3032,7 @@ test_bytes: {
|
||||
sta assert_byte.msg+1
|
||||
jsr assert_byte
|
||||
//SEG120 test_bytes::@1
|
||||
//SEG121 [50] (byte*~) print_char_cursor#92 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
//SEG121 [50] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
lda print_line_cursor
|
||||
sta print_char_cursor
|
||||
lda print_line_cursor+1
|
||||
@ -3026,7 +3045,7 @@ test_bytes: {
|
||||
sta assert_byte.c
|
||||
//SEG126 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bc#0 [phi:test_bytes::@1->assert_byte#2] -- vbuxx=vbuc1
|
||||
ldx #bc
|
||||
//SEG127 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#92 [phi:test_bytes::@1->assert_byte#3] -- register_copy
|
||||
//SEG127 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#93 [phi:test_bytes::@1->assert_byte#3] -- register_copy
|
||||
//SEG128 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg1 [phi:test_bytes::@1->assert_byte#4] -- pbuz1=pbuc1
|
||||
lda #<msg1
|
||||
sta assert_byte.msg
|
||||
@ -3034,7 +3053,7 @@ test_bytes: {
|
||||
sta assert_byte.msg+1
|
||||
jsr assert_byte
|
||||
//SEG129 test_bytes::@2
|
||||
//SEG130 [52] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
//SEG130 [52] (byte*~) print_char_cursor#94 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
lda print_line_cursor
|
||||
sta print_char_cursor
|
||||
lda print_line_cursor+1
|
||||
@ -3047,7 +3066,7 @@ test_bytes: {
|
||||
sta assert_byte.c
|
||||
//SEG135 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bd#0 [phi:test_bytes::@2->assert_byte#2] -- vbuxx=vbuc1
|
||||
ldx #bd
|
||||
//SEG136 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#93 [phi:test_bytes::@2->assert_byte#3] -- register_copy
|
||||
//SEG136 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#94 [phi:test_bytes::@2->assert_byte#3] -- register_copy
|
||||
//SEG137 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg2 [phi:test_bytes::@2->assert_byte#4] -- pbuz1=pbuc1
|
||||
lda #<msg2
|
||||
sta assert_byte.msg
|
||||
|
@ -48,15 +48,16 @@
|
||||
(byte*) print_char_cursor#2 print_char_cursor zp ZP_WORD:5 2.230769230769231
|
||||
(byte*) print_char_cursor#70 print_char_cursor zp ZP_WORD:5 3.0
|
||||
(byte*) print_char_cursor#80 print_char_cursor zp ZP_WORD:5 18.0
|
||||
(byte*~) print_char_cursor#86 print_char_cursor zp ZP_WORD:5 4.0
|
||||
(byte*~) print_char_cursor#92 print_char_cursor zp ZP_WORD:5 4.0
|
||||
(byte*~) print_char_cursor#87 print_char_cursor zp ZP_WORD:5 4.0
|
||||
(byte*~) print_char_cursor#93 print_char_cursor zp ZP_WORD:5 4.0
|
||||
(byte*~) print_char_cursor#94 print_char_cursor zp ZP_WORD:5 4.0
|
||||
(void()) print_cls()
|
||||
(label) print_cls::@1
|
||||
(label) print_cls::@return
|
||||
(byte*) print_cls::sc
|
||||
(byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5
|
||||
(byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5
|
||||
(byte[]) print_hextab
|
||||
(byte*) print_line_cursor
|
||||
(byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:7 1.2500000000000002
|
||||
(byte*) print_line_cursor#24 print_line_cursor zp ZP_WORD:7 24.0
|
||||
@ -114,6 +115,6 @@
|
||||
zp ZP_WORD:2 [ assert_sbyte::msg#5 print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 assert_byte::msg#3 print_cls::sc#2 print_cls::sc#1 ]
|
||||
reg byte x [ assert_sbyte::b#5 ]
|
||||
zp ZP_BYTE:4 [ assert_sbyte::c#5 assert_byte::c#3 ]
|
||||
zp ZP_WORD:5 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#86 print_char_cursor#1 print_char_cursor#92 print_char_cursor#93 ]
|
||||
zp ZP_WORD:5 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#87 print_char_cursor#1 print_char_cursor#93 print_char_cursor#94 ]
|
||||
zp ZP_WORD:7 [ print_line_cursor#24 print_line_cursor#47 print_line_cursor#50 print_line_cursor#1 ]
|
||||
reg byte x [ assert_byte::b#3 ]
|
||||
|
@ -4,6 +4,7 @@
|
||||
.label B = $1000
|
||||
jsr main
|
||||
main: {
|
||||
lda #0
|
||||
b2:
|
||||
jsr menu
|
||||
jmp b2
|
||||
|
@ -9,27 +9,33 @@
|
||||
[3] phi()
|
||||
main: scope:[main] from @3
|
||||
[4] phi()
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@2
|
||||
[5] (byte) a#1 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(byte) a#12 )
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main main::@2
|
||||
[5] phi()
|
||||
[6] call menu
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1
|
||||
[6] phi()
|
||||
[7] call menu
|
||||
to:main::@1
|
||||
menu: scope:[menu] from main::@2
|
||||
[7] phi()
|
||||
[8] phi()
|
||||
to:menu::@2
|
||||
menu::@2: scope:[menu] from menu
|
||||
[8] phi()
|
||||
[9] call mode
|
||||
[9] phi()
|
||||
[10] call mode
|
||||
to:menu::@return
|
||||
menu::@return: scope:[menu] from menu::@2
|
||||
[10] return
|
||||
[11] return
|
||||
to:@return
|
||||
mode: scope:[mode] from menu::@2
|
||||
[11] phi()
|
||||
to:mode::@2
|
||||
mode::@2: scope:[mode] from mode mode::@2 mode::@4
|
||||
[12] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@4
|
||||
to:mode::@2
|
||||
mode::@4: scope:[mode] from mode::@2
|
||||
[13] phi()
|
||||
[12] phi()
|
||||
to:mode::@1
|
||||
mode::@1: scope:[mode] from mode mode::@2 mode::@7
|
||||
[13] (byte) a#12 ← phi( mode/(byte) a#1 mode::@7/(byte) a#5 )
|
||||
to:mode::@2
|
||||
mode::@2: scope:[mode] from mode::@1
|
||||
[14] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@1
|
||||
to:mode::@7
|
||||
mode::@7: scope:[mode] from mode::@2
|
||||
[15] (byte) a#5 ← *((const byte*) B#0)
|
||||
to:mode::@1
|
||||
|
@ -3,65 +3,93 @@ CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@2
|
||||
main: scope:[main] from @3
|
||||
(byte*) B#10 ← phi( @3/(byte*) B#12 )
|
||||
(byte*) B#11 ← phi( @3/(byte*) B#13 )
|
||||
(byte) a#20 ← phi( @3/(byte) a#19 )
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@7
|
||||
(byte*) B#9 ← phi( main/(byte*) B#10 main::@7/(byte*) B#11 )
|
||||
(byte*) B#10 ← phi( main/(byte*) B#11 main::@7/(byte*) B#12 )
|
||||
(byte) a#15 ← phi( main/(byte) a#20 main::@7/(byte) a#0 )
|
||||
if(true) goto main::@2
|
||||
to:main::@return
|
||||
main::@2: scope:[main] from main::@1
|
||||
(byte*) B#8 ← phi( main::@1/(byte*) B#9 )
|
||||
(byte*) B#9 ← phi( main::@1/(byte*) B#10 )
|
||||
(byte) a#14 ← phi( main::@1/(byte) a#15 )
|
||||
call menu
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main::@2
|
||||
(byte*) B#11 ← phi( main::@2/(byte*) B#8 )
|
||||
(byte*) B#12 ← phi( main::@2/(byte*) B#9 )
|
||||
(byte) a#8 ← phi( main::@2/(byte) a#3 )
|
||||
(byte) a#0 ← (byte) a#8
|
||||
to:main::@1
|
||||
main::@return: scope:[main] from main::@1
|
||||
(byte) a#9 ← phi( main::@1/(byte) a#15 )
|
||||
(byte) a#1 ← (byte) a#9
|
||||
return
|
||||
to:@return
|
||||
menu: scope:[menu] from main::@2
|
||||
(byte*) B#7 ← phi( main::@2/(byte*) B#8 )
|
||||
(byte*) B#8 ← phi( main::@2/(byte*) B#9 )
|
||||
(byte) a#21 ← phi( main::@2/(byte) a#14 )
|
||||
to:menu::@1
|
||||
menu::@1: scope:[menu] from menu
|
||||
(byte*) B#6 ← phi( menu/(byte*) B#7 )
|
||||
(byte*) B#7 ← phi( menu/(byte*) B#8 )
|
||||
(byte) a#17 ← phi( menu/(byte) a#21 )
|
||||
if(true) goto menu::@2
|
||||
to:menu::@return
|
||||
menu::@2: scope:[menu] from menu::@1
|
||||
(byte*) B#5 ← phi( menu::@1/(byte*) B#6 )
|
||||
(byte*) B#6 ← phi( menu::@1/(byte*) B#7 )
|
||||
(byte) a#16 ← phi( menu::@1/(byte) a#17 )
|
||||
call mode
|
||||
to:menu::@8
|
||||
menu::@8: scope:[menu] from menu::@2
|
||||
(byte) a#10 ← phi( menu::@2/(byte) a#6 )
|
||||
(byte) a#2 ← (byte) a#10
|
||||
to:menu::@return
|
||||
menu::@return: scope:[menu] from menu::@1 menu::@8
|
||||
(byte) a#11 ← phi( menu::@1/(byte) a#17 menu::@8/(byte) a#2 )
|
||||
(byte) a#3 ← (byte) a#11
|
||||
return
|
||||
to:@return
|
||||
@2: scope:[] from @begin
|
||||
(byte) a#4 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte*) B#0 ← ((byte*)) (word/signed word/dword/signed dword) 4096
|
||||
to:@3
|
||||
mode: scope:[mode] from menu::@2
|
||||
(byte*) B#3 ← phi( menu::@2/(byte*) B#5 )
|
||||
(byte) a#22 ← phi( menu::@2/(byte) a#16 )
|
||||
(byte*) B#4 ← phi( menu::@2/(byte*) B#6 )
|
||||
to:mode::@1
|
||||
mode::@1: scope:[mode] from mode mode::@2 mode::@4
|
||||
(byte*) B#2 ← phi( mode/(byte*) B#3 mode::@2/(byte*) B#1 mode::@4/(byte*) B#4 )
|
||||
mode::@1: scope:[mode] from mode mode::@4 mode::@7
|
||||
(byte) a#18 ← phi( mode/(byte) a#22 mode::@4/(byte) a#23 mode::@7/(byte) a#5 )
|
||||
(byte*) B#3 ← phi( mode/(byte*) B#4 mode::@4/(byte*) B#5 mode::@7/(byte*) B#2 )
|
||||
if(true) goto mode::@2
|
||||
to:mode::@return
|
||||
mode::@2: scope:[mode] from mode::@1
|
||||
(byte*) B#1 ← phi( mode::@1/(byte*) B#2 )
|
||||
(byte) a#24 ← phi( mode::@1/(byte) a#18 )
|
||||
(byte*) B#1 ← phi( mode::@1/(byte*) B#3 )
|
||||
(bool~) mode::$0 ← *((byte*) B#1) == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(bool~) mode::$1 ← ! (bool~) mode::$0
|
||||
if((bool~) mode::$1) goto mode::@4
|
||||
to:mode::@1
|
||||
to:mode::@7
|
||||
mode::@4: scope:[mode] from mode::@2
|
||||
(byte*) B#4 ← phi( mode::@2/(byte*) B#1 )
|
||||
(byte) a#23 ← phi( mode::@2/(byte) a#24 )
|
||||
(byte*) B#5 ← phi( mode::@2/(byte*) B#1 )
|
||||
to:mode::@1
|
||||
mode::@7: scope:[mode] from mode::@2
|
||||
(byte*) B#2 ← phi( mode::@2/(byte*) B#1 )
|
||||
(byte) a#5 ← *((byte*) B#2)
|
||||
to:mode::@1
|
||||
mode::@return: scope:[mode] from mode::@1
|
||||
(byte) a#12 ← phi( mode::@1/(byte) a#18 )
|
||||
(byte) a#6 ← (byte) a#12
|
||||
return
|
||||
to:@return
|
||||
@3: scope:[] from @2
|
||||
(byte*) B#12 ← phi( @2/(byte*) B#0 )
|
||||
(byte*) B#13 ← phi( @2/(byte*) B#0 )
|
||||
(byte) a#19 ← phi( @2/(byte) a#4 )
|
||||
call main
|
||||
to:@4
|
||||
@4: scope:[] from @3
|
||||
(byte) a#13 ← phi( @3/(byte) a#1 )
|
||||
(byte) a#7 ← (byte) a#13
|
||||
to:@end
|
||||
@end: scope:[] from @4
|
||||
|
||||
@ -77,6 +105,7 @@ SYMBOL TABLE SSA
|
||||
(byte*) B#10
|
||||
(byte*) B#11
|
||||
(byte*) B#12
|
||||
(byte*) B#13
|
||||
(byte*) B#2
|
||||
(byte*) B#3
|
||||
(byte*) B#4
|
||||
@ -85,6 +114,32 @@ SYMBOL TABLE SSA
|
||||
(byte*) B#7
|
||||
(byte*) B#8
|
||||
(byte*) B#9
|
||||
(byte) a
|
||||
(byte) a#0
|
||||
(byte) a#1
|
||||
(byte) a#10
|
||||
(byte) a#11
|
||||
(byte) a#12
|
||||
(byte) a#13
|
||||
(byte) a#14
|
||||
(byte) a#15
|
||||
(byte) a#16
|
||||
(byte) a#17
|
||||
(byte) a#18
|
||||
(byte) a#19
|
||||
(byte) a#2
|
||||
(byte) a#20
|
||||
(byte) a#21
|
||||
(byte) a#22
|
||||
(byte) a#23
|
||||
(byte) a#24
|
||||
(byte) a#3
|
||||
(byte) a#4
|
||||
(byte) a#5
|
||||
(byte) a#6
|
||||
(byte) a#7
|
||||
(byte) a#8
|
||||
(byte) a#9
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
@ -101,45 +156,66 @@ SYMBOL TABLE SSA
|
||||
(label) mode::@1
|
||||
(label) mode::@2
|
||||
(label) mode::@4
|
||||
(label) mode::@7
|
||||
(label) mode::@return
|
||||
|
||||
Culled Empty Block (label) menu::@8
|
||||
Culled Empty Block (label) @4
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Inversing boolean not (bool~) mode::$1 ← *((byte*) B#1) != (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) mode::$0 ← *((byte*) B#1) == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Successful SSA optimization Pass2UnaryNotSimplification
|
||||
Alias (byte*) B#11 = (byte*) B#8 (byte*) B#9
|
||||
Alias (byte*) B#5 = (byte*) B#6 (byte*) B#7
|
||||
Alias (byte*) B#1 = (byte*) B#2 (byte*) B#4
|
||||
Alias (byte*) B#0 = (byte*) B#12
|
||||
Alias (byte) a#1 = (byte) a#14 (byte) a#15 (byte) a#9
|
||||
Alias (byte*) B#10 = (byte*) B#9 (byte*) B#12
|
||||
Alias (byte) a#0 = (byte) a#8
|
||||
Alias (byte) a#16 = (byte) a#17 (byte) a#21
|
||||
Alias (byte*) B#6 = (byte*) B#7 (byte*) B#8
|
||||
Alias (byte) a#10 = (byte) a#2
|
||||
Alias (byte) a#11 = (byte) a#3
|
||||
Alias (byte*) B#1 = (byte*) B#3 (byte*) B#5 (byte*) B#2
|
||||
Alias (byte) a#12 = (byte) a#24 (byte) a#18 (byte) a#23 (byte) a#6
|
||||
Alias (byte) a#19 = (byte) a#4
|
||||
Alias (byte*) B#0 = (byte*) B#13
|
||||
Alias (byte) a#13 = (byte) a#7
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) B#11
|
||||
Self Phi Eliminated (byte*) B#10
|
||||
Self Phi Eliminated (byte*) B#1
|
||||
Self Phi Eliminated (byte*) B#1
|
||||
Self Phi Eliminated (byte) a#12
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) B#10 (byte*) B#0
|
||||
Redundant Phi (byte*) B#11 (byte*) B#10
|
||||
Redundant Phi (byte*) B#5 (byte*) B#11
|
||||
Redundant Phi (byte*) B#3 (byte*) B#5
|
||||
Redundant Phi (byte*) B#1 (byte*) B#3
|
||||
Redundant Phi (byte) a#20 (byte) a#19
|
||||
Redundant Phi (byte*) B#11 (byte*) B#0
|
||||
Redundant Phi (byte*) B#10 (byte*) B#11
|
||||
Redundant Phi (byte) a#0 (byte) a#11
|
||||
Redundant Phi (byte) a#16 (byte) a#1
|
||||
Redundant Phi (byte*) B#6 (byte*) B#10
|
||||
Redundant Phi (byte) a#10 (byte) a#12
|
||||
Redundant Phi (byte*) B#4 (byte*) B#6
|
||||
Redundant Phi (byte) a#22 (byte) a#16
|
||||
Redundant Phi (byte*) B#1 (byte*) B#4
|
||||
Redundant Phi (byte) a#13 (byte) a#1
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) mode::$1 if(*((byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@4
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte) a#19 = 0
|
||||
Constant (const byte*) B#0 = ((byte*))4096
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
if() condition always true - replacing block destination if(true) goto main::@2
|
||||
Removing PHI-reference to removed block (menu::@1) in block menu::@return
|
||||
if() condition always true - replacing block destination if(true) goto menu::@2
|
||||
if() condition always true - replacing block destination if(true) goto mode::@2
|
||||
Successful SSA optimization Pass2ConstantIfs
|
||||
Removing unused block main::@return
|
||||
Removing unused block mode::@return
|
||||
Successful SSA optimization Pass2EliminateUnusedBlocks
|
||||
Culled Empty Block (label) main::@1
|
||||
Culled Empty Block (label) main::@7
|
||||
Culled Empty Block (label) menu::@1
|
||||
Culled Empty Block (label) menu::@8
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) mode::@1
|
||||
Culled Empty Block (label) mode::@4
|
||||
Culled Empty Block (label) @4
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Redundant Phi (byte) a#11 (byte) a#12
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Inlining constant with var siblings (const byte) a#19
|
||||
Constant inlined a#19 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @3
|
||||
Adding NOP phi() at start of @end
|
||||
@ -147,15 +223,16 @@ Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@2
|
||||
Adding NOP phi() at start of menu
|
||||
Adding NOP phi() at start of menu::@2
|
||||
Adding NOP phi() at start of mode
|
||||
Adding NOP phi() at start of mode::@4
|
||||
CALL GRAPH
|
||||
Calls in [] to main:2
|
||||
Calls in [main] to menu:6
|
||||
Calls in [menu] to mode:9
|
||||
Calls in [main] to menu:7
|
||||
Calls in [menu] to mode:11
|
||||
|
||||
Created 0 initial phi equivalence classes
|
||||
Coalesced down to 0 phi equivalence classes
|
||||
Created 2 initial phi equivalence classes
|
||||
Coalesced [8] a#25 ← a#12
|
||||
Coalesced (already) [13] a#26 ← a#1
|
||||
Coalesced [17] a#27 ← a#5
|
||||
Coalesced down to 1 phi equivalence classes
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @3
|
||||
Adding NOP phi() at start of @end
|
||||
@ -164,7 +241,6 @@ Adding NOP phi() at start of main::@2
|
||||
Adding NOP phi() at start of menu
|
||||
Adding NOP phi() at start of menu::@2
|
||||
Adding NOP phi() at start of mode
|
||||
Adding NOP phi() at start of mode::@4
|
||||
|
||||
FINAL CONTROL FLOW GRAPH
|
||||
@begin: scope:[] from
|
||||
@ -178,40 +254,53 @@ FINAL CONTROL FLOW GRAPH
|
||||
[3] phi()
|
||||
main: scope:[main] from @3
|
||||
[4] phi()
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@2
|
||||
[5] (byte) a#1 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(byte) a#12 )
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main main::@2
|
||||
[5] phi()
|
||||
[6] call menu
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1
|
||||
[6] phi()
|
||||
[7] call menu
|
||||
to:main::@1
|
||||
menu: scope:[menu] from main::@2
|
||||
[7] phi()
|
||||
[8] phi()
|
||||
to:menu::@2
|
||||
menu::@2: scope:[menu] from menu
|
||||
[8] phi()
|
||||
[9] call mode
|
||||
[9] phi()
|
||||
[10] call mode
|
||||
to:menu::@return
|
||||
menu::@return: scope:[menu] from menu::@2
|
||||
[10] return
|
||||
[11] return
|
||||
to:@return
|
||||
mode: scope:[mode] from menu::@2
|
||||
[11] phi()
|
||||
to:mode::@2
|
||||
mode::@2: scope:[mode] from mode mode::@2 mode::@4
|
||||
[12] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@4
|
||||
to:mode::@2
|
||||
mode::@4: scope:[mode] from mode::@2
|
||||
[13] phi()
|
||||
[12] phi()
|
||||
to:mode::@1
|
||||
mode::@1: scope:[mode] from mode mode::@2 mode::@7
|
||||
[13] (byte) a#12 ← phi( mode/(byte) a#1 mode::@7/(byte) a#5 )
|
||||
to:mode::@2
|
||||
mode::@2: scope:[mode] from mode::@1
|
||||
[14] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@1
|
||||
to:mode::@7
|
||||
mode::@7: scope:[mode] from mode::@2
|
||||
[15] (byte) a#5 ← *((const byte*) B#0)
|
||||
to:mode::@1
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte*) B
|
||||
(byte) a
|
||||
(byte) a#1 2.6
|
||||
(byte) a#12 38.0
|
||||
(byte) a#5 202.0
|
||||
(void()) main()
|
||||
(void()) menu()
|
||||
(void()) mode()
|
||||
|
||||
Initial phi equivalence classes
|
||||
[ a#1 a#12 a#5 ]
|
||||
Complete equivalence classes
|
||||
[ a#1 a#12 a#5 ]
|
||||
Allocated zp ZP_BYTE:2 [ a#1 a#12 a#5 ]
|
||||
|
||||
INITIAL ASM
|
||||
//SEG0 Basic Upstart
|
||||
@ -220,6 +309,7 @@ INITIAL ASM
|
||||
.pc = $80d "Program"
|
||||
//SEG1 Global Constants & labels
|
||||
.label B = $1000
|
||||
.label a = 2
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @3 [phi:@begin->@3]
|
||||
@ -238,66 +328,87 @@ bend_from_b3:
|
||||
bend:
|
||||
//SEG9 main
|
||||
main: {
|
||||
//SEG10 [5] phi from main main::@2 to main::@2 [phi:main/main::@2->main::@2]
|
||||
b2_from_main:
|
||||
b2_from_b2:
|
||||
//SEG10 [5] phi from main to main::@1 [phi:main->main::@1]
|
||||
b1_from_main:
|
||||
//SEG11 [5] phi (byte) a#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1
|
||||
lda #0
|
||||
sta a
|
||||
jmp b1
|
||||
//SEG12 main::@1
|
||||
b1:
|
||||
//SEG13 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
|
||||
b2_from_b1:
|
||||
jmp b2
|
||||
//SEG11 main::@2
|
||||
//SEG14 main::@2
|
||||
b2:
|
||||
//SEG12 [6] call menu
|
||||
//SEG13 [7] phi from main::@2 to menu [phi:main::@2->menu]
|
||||
//SEG15 [7] call menu
|
||||
//SEG16 [8] phi from main::@2 to menu [phi:main::@2->menu]
|
||||
menu_from_b2:
|
||||
jsr menu
|
||||
jmp b2_from_b2
|
||||
//SEG17 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
|
||||
b1_from_b2:
|
||||
//SEG18 [5] phi (byte) a#1 = (byte) a#12 [phi:main::@2->main::@1#0] -- register_copy
|
||||
jmp b1
|
||||
}
|
||||
//SEG14 menu
|
||||
//SEG19 menu
|
||||
menu: {
|
||||
//SEG15 [8] phi from menu to menu::@2 [phi:menu->menu::@2]
|
||||
//SEG20 [9] phi from menu to menu::@2 [phi:menu->menu::@2]
|
||||
b2_from_menu:
|
||||
jmp b2
|
||||
//SEG16 menu::@2
|
||||
//SEG21 menu::@2
|
||||
b2:
|
||||
//SEG17 [9] call mode
|
||||
//SEG18 [11] phi from menu::@2 to mode [phi:menu::@2->mode]
|
||||
//SEG22 [10] call mode
|
||||
//SEG23 [12] phi from menu::@2 to mode [phi:menu::@2->mode]
|
||||
mode_from_b2:
|
||||
jsr mode
|
||||
jmp breturn
|
||||
//SEG19 menu::@return
|
||||
//SEG24 menu::@return
|
||||
breturn:
|
||||
//SEG20 [10] return
|
||||
//SEG25 [11] return
|
||||
rts
|
||||
}
|
||||
//SEG21 mode
|
||||
//SEG26 mode
|
||||
mode: {
|
||||
//SEG27 [13] phi from mode mode::@7 to mode::@1 [phi:mode/mode::@7->mode::@1]
|
||||
b1_from_mode:
|
||||
b1_from_b7:
|
||||
//SEG28 [13] phi (byte) a#12 = (byte) a#1 [phi:mode/mode::@7->mode::@1#0] -- register_copy
|
||||
jmp b1
|
||||
//SEG29 [13] phi from mode::@2 to mode::@1 [phi:mode::@2->mode::@1]
|
||||
b1_from_b2:
|
||||
jmp b1
|
||||
//SEG30 mode::@1
|
||||
b1:
|
||||
jmp b2
|
||||
//SEG22 mode::@2
|
||||
//SEG31 mode::@2
|
||||
b2:
|
||||
//SEG23 [12] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@4 -- _deref_pbuc1_neq_0_then_la1
|
||||
//SEG32 [14] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@1 -- _deref_pbuc1_neq_0_then_la1
|
||||
lda B
|
||||
cmp #0
|
||||
bne b4_from_b2
|
||||
jmp b2
|
||||
//SEG24 [13] phi from mode::@2 to mode::@4 [phi:mode::@2->mode::@4]
|
||||
b4_from_b2:
|
||||
jmp b4
|
||||
//SEG25 mode::@4
|
||||
b4:
|
||||
jmp b2
|
||||
bne b1_from_b2
|
||||
jmp b7
|
||||
//SEG33 mode::@7
|
||||
b7:
|
||||
//SEG34 [15] (byte) a#5 ← *((const byte*) B#0) -- vbuz1=_deref_pbuc1
|
||||
lda B
|
||||
sta a
|
||||
jmp b1_from_b7
|
||||
}
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [12] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@4 [ ] ( main:2::menu:6::mode:9 [ ] ) always clobbers reg byte a
|
||||
Statement [14] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@1 [ ] ( main:2::menu:7::mode:10 [ ] ) always clobbers reg byte a
|
||||
Potential registers zp ZP_BYTE:2 [ a#1 a#12 a#5 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [] 242.6: zp ZP_BYTE:2 [ a#1 a#12 a#5 ]
|
||||
Uplift Scope [main]
|
||||
Uplift Scope [menu]
|
||||
Uplift Scope [mode]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 11929 combination
|
||||
Uplifting [menu] best 11929 combination
|
||||
Uplifting [mode] best 11929 combination
|
||||
Uplifting [] best 11929 combination
|
||||
Uplifting [] best 18376 combination reg byte a [ a#1 a#12 a#5 ]
|
||||
Uplifting [main] best 18376 combination
|
||||
Uplifting [menu] best 18376 combination
|
||||
Uplifting [mode] best 18376 combination
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
//SEG0 Basic Upstart
|
||||
@ -324,86 +435,116 @@ bend_from_b3:
|
||||
bend:
|
||||
//SEG9 main
|
||||
main: {
|
||||
//SEG10 [5] phi from main main::@2 to main::@2 [phi:main/main::@2->main::@2]
|
||||
b2_from_main:
|
||||
b2_from_b2:
|
||||
//SEG10 [5] phi from main to main::@1 [phi:main->main::@1]
|
||||
b1_from_main:
|
||||
//SEG11 [5] phi (byte) a#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuaa=vbuc1
|
||||
lda #0
|
||||
jmp b1
|
||||
//SEG12 main::@1
|
||||
b1:
|
||||
//SEG13 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
|
||||
b2_from_b1:
|
||||
jmp b2
|
||||
//SEG11 main::@2
|
||||
//SEG14 main::@2
|
||||
b2:
|
||||
//SEG12 [6] call menu
|
||||
//SEG13 [7] phi from main::@2 to menu [phi:main::@2->menu]
|
||||
//SEG15 [7] call menu
|
||||
//SEG16 [8] phi from main::@2 to menu [phi:main::@2->menu]
|
||||
menu_from_b2:
|
||||
jsr menu
|
||||
jmp b2_from_b2
|
||||
//SEG17 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
|
||||
b1_from_b2:
|
||||
//SEG18 [5] phi (byte) a#1 = (byte) a#12 [phi:main::@2->main::@1#0] -- register_copy
|
||||
jmp b1
|
||||
}
|
||||
//SEG14 menu
|
||||
//SEG19 menu
|
||||
menu: {
|
||||
//SEG15 [8] phi from menu to menu::@2 [phi:menu->menu::@2]
|
||||
//SEG20 [9] phi from menu to menu::@2 [phi:menu->menu::@2]
|
||||
b2_from_menu:
|
||||
jmp b2
|
||||
//SEG16 menu::@2
|
||||
//SEG21 menu::@2
|
||||
b2:
|
||||
//SEG17 [9] call mode
|
||||
//SEG18 [11] phi from menu::@2 to mode [phi:menu::@2->mode]
|
||||
//SEG22 [10] call mode
|
||||
//SEG23 [12] phi from menu::@2 to mode [phi:menu::@2->mode]
|
||||
mode_from_b2:
|
||||
jsr mode
|
||||
jmp breturn
|
||||
//SEG19 menu::@return
|
||||
//SEG24 menu::@return
|
||||
breturn:
|
||||
//SEG20 [10] return
|
||||
//SEG25 [11] return
|
||||
rts
|
||||
}
|
||||
//SEG21 mode
|
||||
//SEG26 mode
|
||||
mode: {
|
||||
//SEG27 [13] phi from mode mode::@7 to mode::@1 [phi:mode/mode::@7->mode::@1]
|
||||
b1_from_mode:
|
||||
b1_from_b7:
|
||||
//SEG28 [13] phi (byte) a#12 = (byte) a#1 [phi:mode/mode::@7->mode::@1#0] -- register_copy
|
||||
jmp b1
|
||||
//SEG29 [13] phi from mode::@2 to mode::@1 [phi:mode::@2->mode::@1]
|
||||
b1_from_b2:
|
||||
jmp b1
|
||||
//SEG30 mode::@1
|
||||
b1:
|
||||
jmp b2
|
||||
//SEG22 mode::@2
|
||||
//SEG31 mode::@2
|
||||
b2:
|
||||
//SEG23 [12] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@4 -- _deref_pbuc1_neq_0_then_la1
|
||||
//SEG32 [14] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@1 -- _deref_pbuc1_neq_0_then_la1
|
||||
lda B
|
||||
cmp #0
|
||||
bne b4_from_b2
|
||||
jmp b2
|
||||
//SEG24 [13] phi from mode::@2 to mode::@4 [phi:mode::@2->mode::@4]
|
||||
b4_from_b2:
|
||||
jmp b4
|
||||
//SEG25 mode::@4
|
||||
b4:
|
||||
jmp b2
|
||||
bne b1_from_b2
|
||||
jmp b7
|
||||
//SEG33 mode::@7
|
||||
b7:
|
||||
//SEG34 [15] (byte) a#5 ← *((const byte*) B#0) -- vbuaa=_deref_pbuc1
|
||||
lda B
|
||||
jmp b1_from_b7
|
||||
}
|
||||
|
||||
ASSEMBLER OPTIMIZATIONS
|
||||
Removing instruction jmp b3
|
||||
Removing instruction jmp bend
|
||||
Removing instruction jmp b1
|
||||
Removing instruction jmp b2
|
||||
Removing instruction jmp b2
|
||||
Removing instruction jmp breturn
|
||||
Removing instruction jmp b1
|
||||
Removing instruction jmp b2
|
||||
Removing instruction jmp b4
|
||||
Removing instruction jmp b7
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Replacing label b2_from_b2 with b2
|
||||
Replacing label b4_from_b2 with b4
|
||||
Replacing label b1 with b2
|
||||
Replacing label b1 with b2
|
||||
Replacing label b1_from_b2 with b2
|
||||
Removing instruction bbegin:
|
||||
Removing instruction b3_from_bbegin:
|
||||
Removing instruction main_from_b3:
|
||||
Removing instruction bend_from_b3:
|
||||
Removing instruction b2_from_main:
|
||||
Removing instruction b2_from_b2:
|
||||
Removing instruction b1:
|
||||
Removing instruction b2_from_b1:
|
||||
Removing instruction menu_from_b2:
|
||||
Removing instruction b2_from_menu:
|
||||
Removing instruction mode_from_b2:
|
||||
Removing instruction b4_from_b2:
|
||||
Removing instruction b1_from_mode:
|
||||
Removing instruction b1_from_b2:
|
||||
Removing instruction b1:
|
||||
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||
Removing instruction b3:
|
||||
Removing instruction bend:
|
||||
Removing instruction b1_from_main:
|
||||
Removing instruction b1_from_b2:
|
||||
Removing instruction b2:
|
||||
Removing instruction breturn:
|
||||
Removing instruction b7:
|
||||
Succesful ASM optimization Pass5UnusedLabelElimination
|
||||
Skipping double jump to b2 in bne b4
|
||||
Skipping double jump to b2 in jmp b1_from_b7
|
||||
Succesful ASM optimization Pass5DoubleJumpElimination
|
||||
Removing instruction b4:
|
||||
Succesful ASM optimization Pass5UnusedLabelElimination
|
||||
Removing unreachable instruction jmp b2
|
||||
Succesful ASM optimization Pass5UnreachableCodeElimination
|
||||
Relabelling long label b1_from_b7 to b1
|
||||
Succesful ASM optimization Pass5RelabelLongLabels
|
||||
Removing instruction jmp b2
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Removing instruction lda B
|
||||
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
||||
Removing instruction b1:
|
||||
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(label) @3
|
||||
@ -411,19 +552,26 @@ FINAL SYMBOL TABLE
|
||||
(label) @end
|
||||
(byte*) B
|
||||
(const byte*) B#0 B = ((byte*))(word/signed word/dword/signed dword) 4096
|
||||
(byte) a
|
||||
(byte) a#1 reg byte a 2.6
|
||||
(byte) a#12 reg byte a 38.0
|
||||
(byte) a#5 reg byte a 202.0
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(void()) menu()
|
||||
(label) menu::@2
|
||||
(label) menu::@return
|
||||
(void()) mode()
|
||||
(label) mode::@1
|
||||
(label) mode::@2
|
||||
(label) mode::@4
|
||||
(label) mode::@7
|
||||
|
||||
reg byte a [ a#1 a#12 a#5 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 11527
|
||||
Score: 8874
|
||||
|
||||
//SEG0 Basic Upstart
|
||||
.pc = $801 "Basic"
|
||||
@ -441,35 +589,45 @@ Score: 11527
|
||||
//SEG8 @end
|
||||
//SEG9 main
|
||||
main: {
|
||||
//SEG10 [5] phi from main main::@2 to main::@2 [phi:main/main::@2->main::@2]
|
||||
//SEG11 main::@2
|
||||
//SEG10 [5] phi from main to main::@1 [phi:main->main::@1]
|
||||
//SEG11 [5] phi (byte) a#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuaa=vbuc1
|
||||
lda #0
|
||||
//SEG12 main::@1
|
||||
//SEG13 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
|
||||
//SEG14 main::@2
|
||||
b2:
|
||||
//SEG12 [6] call menu
|
||||
//SEG13 [7] phi from main::@2 to menu [phi:main::@2->menu]
|
||||
//SEG15 [7] call menu
|
||||
//SEG16 [8] phi from main::@2 to menu [phi:main::@2->menu]
|
||||
jsr menu
|
||||
//SEG17 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
|
||||
//SEG18 [5] phi (byte) a#1 = (byte) a#12 [phi:main::@2->main::@1#0] -- register_copy
|
||||
jmp b2
|
||||
}
|
||||
//SEG14 menu
|
||||
//SEG19 menu
|
||||
menu: {
|
||||
//SEG15 [8] phi from menu to menu::@2 [phi:menu->menu::@2]
|
||||
//SEG16 menu::@2
|
||||
//SEG17 [9] call mode
|
||||
//SEG18 [11] phi from menu::@2 to mode [phi:menu::@2->mode]
|
||||
//SEG20 [9] phi from menu to menu::@2 [phi:menu->menu::@2]
|
||||
//SEG21 menu::@2
|
||||
//SEG22 [10] call mode
|
||||
//SEG23 [12] phi from menu::@2 to mode [phi:menu::@2->mode]
|
||||
jsr mode
|
||||
//SEG19 menu::@return
|
||||
//SEG20 [10] return
|
||||
//SEG24 menu::@return
|
||||
//SEG25 [11] return
|
||||
rts
|
||||
}
|
||||
//SEG21 mode
|
||||
//SEG26 mode
|
||||
mode: {
|
||||
//SEG22 mode::@2
|
||||
//SEG27 [13] phi from mode mode::@7 to mode::@1 [phi:mode/mode::@7->mode::@1]
|
||||
//SEG28 [13] phi (byte) a#12 = (byte) a#1 [phi:mode/mode::@7->mode::@1#0] -- register_copy
|
||||
//SEG29 [13] phi from mode::@2 to mode::@1 [phi:mode::@2->mode::@1]
|
||||
//SEG30 mode::@1
|
||||
//SEG31 mode::@2
|
||||
b2:
|
||||
//SEG23 [12] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@4 -- _deref_pbuc1_neq_0_then_la1
|
||||
//SEG32 [14] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@1 -- _deref_pbuc1_neq_0_then_la1
|
||||
lda B
|
||||
cmp #0
|
||||
bne b2
|
||||
//SEG33 mode::@7
|
||||
//SEG34 [15] (byte) a#5 ← *((const byte*) B#0) -- vbuaa=_deref_pbuc1
|
||||
jmp b2
|
||||
//SEG24 [13] phi from mode::@2 to mode::@4 [phi:mode::@2->mode::@4]
|
||||
//SEG25 mode::@4
|
||||
}
|
||||
|
||||
|
@ -3,12 +3,19 @@
|
||||
(label) @end
|
||||
(byte*) B
|
||||
(const byte*) B#0 B = ((byte*))(word/signed word/dword/signed dword) 4096
|
||||
(byte) a
|
||||
(byte) a#1 reg byte a 2.6
|
||||
(byte) a#12 reg byte a 38.0
|
||||
(byte) a#5 reg byte a 202.0
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(void()) menu()
|
||||
(label) menu::@2
|
||||
(label) menu::@return
|
||||
(void()) mode()
|
||||
(label) mode::@1
|
||||
(label) mode::@2
|
||||
(label) mode::@4
|
||||
(label) mode::@7
|
||||
|
||||
reg byte a [ a#1 a#12 a#5 ]
|
||||
|
@ -10,7 +10,7 @@
|
||||
.const GREEN = 5
|
||||
.const LIGHT_BLUE = $e
|
||||
.const LIGHT_GREY = $f
|
||||
.label print_screen = $400
|
||||
.label print_line_cursor = $400
|
||||
.label xr = $f0
|
||||
.label yr = $f1
|
||||
.label zr = $f2
|
||||
@ -154,77 +154,77 @@ debug_print: {
|
||||
.label c = 4
|
||||
.label i = 5
|
||||
ldx sx
|
||||
lda #<print_screen+print_sbyte_pos1_row*$28+print_sbyte_pos1_col
|
||||
lda #<print_line_cursor+print_sbyte_pos1_row*$28+print_sbyte_pos1_col
|
||||
sta print_sbyte_at.at
|
||||
lda #>print_screen+print_sbyte_pos1_row*$28+print_sbyte_pos1_col
|
||||
lda #>print_line_cursor+print_sbyte_pos1_row*$28+print_sbyte_pos1_col
|
||||
sta print_sbyte_at.at+1
|
||||
jsr print_sbyte_at
|
||||
lda sy
|
||||
tax
|
||||
lda #<print_screen+print_sbyte_pos2_row*$28+print_sbyte_pos2_col
|
||||
lda #<print_line_cursor+print_sbyte_pos2_row*$28+print_sbyte_pos2_col
|
||||
sta print_sbyte_at.at
|
||||
lda #>print_screen+print_sbyte_pos2_row*$28+print_sbyte_pos2_col
|
||||
lda #>print_line_cursor+print_sbyte_pos2_row*$28+print_sbyte_pos2_col
|
||||
sta print_sbyte_at.at+1
|
||||
jsr print_sbyte_at
|
||||
lda #<print_screen+print_sbyte_pos3_row*$28+print_sbyte_pos3_col
|
||||
lda #<print_line_cursor+print_sbyte_pos3_row*$28+print_sbyte_pos3_col
|
||||
sta print_sbyte_at.at
|
||||
lda #>print_screen+print_sbyte_pos3_row*$28+print_sbyte_pos3_col
|
||||
lda #>print_line_cursor+print_sbyte_pos3_row*$28+print_sbyte_pos3_col
|
||||
sta print_sbyte_at.at+1
|
||||
ldx #sz
|
||||
jsr print_sbyte_at
|
||||
lda rotation_matrix
|
||||
tax
|
||||
lda #<print_screen+print_sbyte_pos4_row*$28+print_sbyte_pos4_col
|
||||
lda #<print_line_cursor+print_sbyte_pos4_row*$28+print_sbyte_pos4_col
|
||||
sta print_sbyte_at.at
|
||||
lda #>print_screen+print_sbyte_pos4_row*$28+print_sbyte_pos4_col
|
||||
lda #>print_line_cursor+print_sbyte_pos4_row*$28+print_sbyte_pos4_col
|
||||
sta print_sbyte_at.at+1
|
||||
jsr print_sbyte_at
|
||||
ldx rotation_matrix+1
|
||||
lda #<print_screen+print_sbyte_pos5_row*$28+print_sbyte_pos5_col
|
||||
lda #<print_line_cursor+print_sbyte_pos5_row*$28+print_sbyte_pos5_col
|
||||
sta print_sbyte_at.at
|
||||
lda #>print_screen+print_sbyte_pos5_row*$28+print_sbyte_pos5_col
|
||||
lda #>print_line_cursor+print_sbyte_pos5_row*$28+print_sbyte_pos5_col
|
||||
sta print_sbyte_at.at+1
|
||||
jsr print_sbyte_at
|
||||
ldx rotation_matrix+2
|
||||
lda #<print_screen+print_sbyte_pos6_row*$28+print_sbyte_pos6_col
|
||||
lda #<print_line_cursor+print_sbyte_pos6_row*$28+print_sbyte_pos6_col
|
||||
sta print_sbyte_at.at
|
||||
lda #>print_screen+print_sbyte_pos6_row*$28+print_sbyte_pos6_col
|
||||
lda #>print_line_cursor+print_sbyte_pos6_row*$28+print_sbyte_pos6_col
|
||||
sta print_sbyte_at.at+1
|
||||
jsr print_sbyte_at
|
||||
ldx rotation_matrix+3
|
||||
lda #<print_screen+print_sbyte_pos7_row*$28+print_sbyte_pos7_col
|
||||
lda #<print_line_cursor+print_sbyte_pos7_row*$28+print_sbyte_pos7_col
|
||||
sta print_sbyte_at.at
|
||||
lda #>print_screen+print_sbyte_pos7_row*$28+print_sbyte_pos7_col
|
||||
lda #>print_line_cursor+print_sbyte_pos7_row*$28+print_sbyte_pos7_col
|
||||
sta print_sbyte_at.at+1
|
||||
jsr print_sbyte_at
|
||||
ldx rotation_matrix+4
|
||||
lda #<print_screen+print_sbyte_pos8_row*$28+print_sbyte_pos8_col
|
||||
lda #<print_line_cursor+print_sbyte_pos8_row*$28+print_sbyte_pos8_col
|
||||
sta print_sbyte_at.at
|
||||
lda #>print_screen+print_sbyte_pos8_row*$28+print_sbyte_pos8_col
|
||||
lda #>print_line_cursor+print_sbyte_pos8_row*$28+print_sbyte_pos8_col
|
||||
sta print_sbyte_at.at+1
|
||||
jsr print_sbyte_at
|
||||
ldx rotation_matrix+5
|
||||
lda #<print_screen+print_sbyte_pos9_row*$28+print_sbyte_pos9_col
|
||||
lda #<print_line_cursor+print_sbyte_pos9_row*$28+print_sbyte_pos9_col
|
||||
sta print_sbyte_at.at
|
||||
lda #>print_screen+print_sbyte_pos9_row*$28+print_sbyte_pos9_col
|
||||
lda #>print_line_cursor+print_sbyte_pos9_row*$28+print_sbyte_pos9_col
|
||||
sta print_sbyte_at.at+1
|
||||
jsr print_sbyte_at
|
||||
ldx rotation_matrix+6
|
||||
lda #<print_screen+print_sbyte_pos10_row*$28+print_sbyte_pos10_col
|
||||
lda #<print_line_cursor+print_sbyte_pos10_row*$28+print_sbyte_pos10_col
|
||||
sta print_sbyte_at.at
|
||||
lda #>print_screen+print_sbyte_pos10_row*$28+print_sbyte_pos10_col
|
||||
lda #>print_line_cursor+print_sbyte_pos10_row*$28+print_sbyte_pos10_col
|
||||
sta print_sbyte_at.at+1
|
||||
jsr print_sbyte_at
|
||||
ldx rotation_matrix+7
|
||||
lda #<print_screen+print_sbyte_pos11_row*$28+print_sbyte_pos11_col
|
||||
lda #<print_line_cursor+print_sbyte_pos11_row*$28+print_sbyte_pos11_col
|
||||
sta print_sbyte_at.at
|
||||
lda #>print_screen+print_sbyte_pos11_row*$28+print_sbyte_pos11_col
|
||||
lda #>print_line_cursor+print_sbyte_pos11_row*$28+print_sbyte_pos11_col
|
||||
sta print_sbyte_at.at+1
|
||||
jsr print_sbyte_at
|
||||
ldx rotation_matrix+8
|
||||
lda #<print_screen+print_sbyte_pos12_row*$28+print_sbyte_pos12_col
|
||||
lda #<print_line_cursor+print_sbyte_pos12_row*$28+print_sbyte_pos12_col
|
||||
sta print_sbyte_at.at
|
||||
lda #>print_screen+print_sbyte_pos12_row*$28+print_sbyte_pos12_col
|
||||
lda #>print_line_cursor+print_sbyte_pos12_row*$28+print_sbyte_pos12_col
|
||||
sta print_sbyte_at.at+1
|
||||
jsr print_sbyte_at
|
||||
lda #0
|
||||
@ -1025,9 +1025,9 @@ print_str_at: {
|
||||
}
|
||||
print_cls: {
|
||||
.label sc = 6
|
||||
lda #<print_screen
|
||||
lda #<print_line_cursor
|
||||
sta sc
|
||||
lda #>print_screen
|
||||
lda #>print_line_cursor
|
||||
sta sc+1
|
||||
b1:
|
||||
lda #' '
|
||||
@ -1038,10 +1038,10 @@ print_cls: {
|
||||
inc sc+1
|
||||
!:
|
||||
lda sc+1
|
||||
cmp #>print_screen+$3e8
|
||||
cmp #>print_line_cursor+$3e8
|
||||
bne b1
|
||||
lda sc
|
||||
cmp #<print_screen+$3e8
|
||||
cmp #<print_line_cursor+$3e8
|
||||
bne b1
|
||||
rts
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@32
|
||||
@32: scope:[] from @begin
|
||||
to:@33
|
||||
@33: scope:[] from @begin
|
||||
kickasm(location (const byte*) mulf_sqr1#0) {{ .for(var i=0;i<$200;i++) {
|
||||
.if(i<=159) { .byte round((i*i)/256) }
|
||||
.if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) }
|
||||
@ -94,9 +94,9 @@
|
||||
}}
|
||||
[11] call main
|
||||
to:@end
|
||||
@end: scope:[] from @32
|
||||
@end: scope:[] from @33
|
||||
[12] phi()
|
||||
main: scope:[main] from @32
|
||||
main: scope:[main] from @33
|
||||
asm { sei }
|
||||
[14] call sprites_init
|
||||
to:main::@1
|
||||
@ -292,7 +292,7 @@ debug_print::@return: scope:[debug_print] from debug_print::@32
|
||||
[113] return
|
||||
to:@return
|
||||
print_sbyte_at: scope:[print_sbyte_at] from debug_print::@1 debug_print::@27 debug_print::@28 debug_print::@29 debug_print::@30 debug_print::@31 debug_print::print_sbyte_pos1 debug_print::print_sbyte_pos10 debug_print::print_sbyte_pos11 debug_print::print_sbyte_pos12 debug_print::print_sbyte_pos2 debug_print::print_sbyte_pos3 debug_print::print_sbyte_pos4 debug_print::print_sbyte_pos5 debug_print::print_sbyte_pos6 debug_print::print_sbyte_pos7 debug_print::print_sbyte_pos8 debug_print::print_sbyte_pos9 debug_print_init::@1 debug_print_init::@18 debug_print_init::@19
|
||||
[114] (byte*) print_sbyte_at::at#21 ← phi( debug_print::@1/(byte*) print_sbyte_at::at#15 debug_print::@27/(byte*) print_sbyte_at::at#16 debug_print::@28/(byte*) print_sbyte_at::at#17 debug_print::@29/(byte*) print_sbyte_at::at#18 debug_print::@30/(byte*) print_sbyte_at::at#19 debug_print::@31/(byte*) print_sbyte_at::at#20 debug_print::print_sbyte_pos1/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos1_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos1_col#0 debug_print::print_sbyte_pos10/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos10_col#0 debug_print::print_sbyte_pos11/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos11_col#0 debug_print::print_sbyte_pos12/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos12_col#0 debug_print::print_sbyte_pos2/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos2_col#0 debug_print::print_sbyte_pos3/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos3_col#0 debug_print::print_sbyte_pos4/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos4_col#0 debug_print::print_sbyte_pos5/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos5_col#0 debug_print::print_sbyte_pos6/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos6_col#0 debug_print::print_sbyte_pos7/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos7_col#0 debug_print::print_sbyte_pos8/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos8_col#0 debug_print::print_sbyte_pos9/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos9_col#0 debug_print_init::@1/(byte*) print_sbyte_at::at#0 debug_print_init::@18/(byte*) print_sbyte_at::at#1 debug_print_init::@19/(byte*) print_sbyte_at::at#2 )
|
||||
[114] (byte*) print_sbyte_at::at#21 ← phi( debug_print::@1/(byte*) print_sbyte_at::at#15 debug_print::@27/(byte*) print_sbyte_at::at#16 debug_print::@28/(byte*) print_sbyte_at::at#17 debug_print::@29/(byte*) print_sbyte_at::at#18 debug_print::@30/(byte*) print_sbyte_at::at#19 debug_print::@31/(byte*) print_sbyte_at::at#20 debug_print::print_sbyte_pos1/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos1_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos1_col#0 debug_print::print_sbyte_pos10/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos10_col#0 debug_print::print_sbyte_pos11/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos11_col#0 debug_print::print_sbyte_pos12/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos12_col#0 debug_print::print_sbyte_pos2/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos2_col#0 debug_print::print_sbyte_pos3/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos3_col#0 debug_print::print_sbyte_pos4/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos4_col#0 debug_print::print_sbyte_pos5/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos5_col#0 debug_print::print_sbyte_pos6/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos6_col#0 debug_print::print_sbyte_pos7/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos7_col#0 debug_print::print_sbyte_pos8/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos8_col#0 debug_print::print_sbyte_pos9/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos9_col#0 debug_print_init::@1/(byte*) print_sbyte_at::at#0 debug_print_init::@18/(byte*) print_sbyte_at::at#1 debug_print_init::@19/(byte*) print_sbyte_at::at#2 )
|
||||
[114] (signed byte) print_sbyte_at::b#22 ← phi( debug_print::@1/(signed byte) print_sbyte_at::b#16 debug_print::@27/(signed byte) print_sbyte_at::b#17 debug_print::@28/(signed byte) print_sbyte_at::b#18 debug_print::@29/(signed byte) print_sbyte_at::b#19 debug_print::@30/(signed byte) print_sbyte_at::b#20 debug_print::@31/(signed byte) print_sbyte_at::b#21 debug_print::print_sbyte_pos1/(signed byte) print_sbyte_at::b#4 debug_print::print_sbyte_pos10/(signed byte) print_sbyte_at::b#13 debug_print::print_sbyte_pos11/(signed byte) print_sbyte_at::b#14 debug_print::print_sbyte_pos12/(signed byte) print_sbyte_at::b#15 debug_print::print_sbyte_pos2/(signed byte) print_sbyte_at::b#5 debug_print::print_sbyte_pos3/(const signed byte) sz#0 debug_print::print_sbyte_pos4/(signed byte) print_sbyte_at::b#7 debug_print::print_sbyte_pos5/(signed byte) print_sbyte_at::b#8 debug_print::print_sbyte_pos6/(signed byte) print_sbyte_at::b#9 debug_print::print_sbyte_pos7/(signed byte) print_sbyte_at::b#10 debug_print::print_sbyte_pos8/(signed byte) print_sbyte_at::b#11 debug_print::print_sbyte_pos9/(signed byte) print_sbyte_at::b#12 debug_print_init::@1/(signed byte) print_sbyte_at::b#1 debug_print_init::@18/(signed byte) print_sbyte_at::b#2 debug_print_init::@19/(signed byte) print_sbyte_at::b#3 )
|
||||
[115] if((signed byte) print_sbyte_at::b#22<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte_at::@1
|
||||
to:print_sbyte_at::@3
|
||||
@ -533,10 +533,10 @@ print_cls: scope:[print_cls] from debug_print_init
|
||||
[267] phi()
|
||||
to:print_cls::@1
|
||||
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
|
||||
[268] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_screen#0 print_cls::@1/(byte*) print_cls::sc#1 )
|
||||
[268] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_line_cursor#0 print_cls::@1/(byte*) print_cls::sc#1 )
|
||||
[269] *((byte*) print_cls::sc#2) ← (byte) ' '
|
||||
[270] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
|
||||
[271] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1
|
||||
[271] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1
|
||||
to:print_cls::@return
|
||||
print_cls::@return: scope:[print_cls] from print_cls::@1
|
||||
[272] return
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,22 +1,76 @@
|
||||
(label) @32
|
||||
(label) @33
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(signed byte*) COSH
|
||||
(const signed byte*) COSH#0 COSH = (const signed byte*) SINH#0+(byte/signed byte/word/signed word/dword/signed dword) 64
|
||||
(byte*) COSH_HI
|
||||
(byte*) COSH_LO
|
||||
(signed byte*) COSQ
|
||||
(const signed byte*) COSQ#0 COSQ = (const signed byte*) SINQ#0+(byte/signed byte/word/signed word/dword/signed dword) 64
|
||||
(byte*) COSQ_HI
|
||||
(byte*) COSQ_LO
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(const byte) LIGHT_BLUE#0 LIGHT_BLUE = (byte/signed byte/word/signed word/dword/signed dword) 14
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(const byte) LIGHT_GREY#0 LIGHT_GREY = (byte/signed byte/word/signed word/dword/signed dword) 15
|
||||
(byte) ORANGE
|
||||
(signed byte*) PERSP_Z
|
||||
(const signed byte*) PERSP_Z#0 PERSP_Z = ((signed byte*))(word/signed word/dword/signed dword) 10240
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(signed byte*) SINH
|
||||
@ -37,10 +91,30 @@
|
||||
(const byte*) SPRITES_COLS#0 SPRITES_COLS = ((byte*))(word/dword/signed dword) 53287
|
||||
(byte*) SPRITES_ENABLE
|
||||
(const byte*) SPRITES_ENABLE#0 SPRITES_ENABLE = ((byte*))(word/dword/signed dword) 53269
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word/dword/signed dword) 53248
|
||||
(byte*) SPRITES_YPOS
|
||||
(const byte*) SPRITES_YPOS#0 SPRITES_YPOS = ((byte*))(word/dword/signed dword) 53249
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) anim()
|
||||
(byte/word/signed word/dword/signed dword~) anim::$10 reg byte a 202.0
|
||||
(byte/word/signed word/dword/signed dword~) anim::$8 reg byte a 202.0
|
||||
@ -355,6 +429,7 @@
|
||||
(byte) print_char_at::ch#2 ch zp ZP_BYTE:8 2.0
|
||||
(byte) print_char_at::ch#3 ch zp ZP_BYTE:8 4.0
|
||||
(byte) print_char_at::ch#4 ch zp ZP_BYTE:8 6.0
|
||||
(byte*) print_char_cursor
|
||||
(void()) print_cls()
|
||||
(label) print_cls::@1
|
||||
(label) print_cls::@return
|
||||
@ -363,6 +438,8 @@
|
||||
(byte*) print_cls::sc#2 sc zp ZP_WORD:6 16.5
|
||||
(byte[]) print_hextab
|
||||
(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef"
|
||||
(byte*) print_line_cursor
|
||||
(const byte*) print_line_cursor#0 print_line_cursor = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(void()) print_sbyte_at((signed byte) print_sbyte_at::b , (byte*) print_sbyte_at::at)
|
||||
(label) print_sbyte_at::@1
|
||||
(label) print_sbyte_at::@2
|
||||
@ -405,7 +482,6 @@
|
||||
(signed byte) print_sbyte_at::b#8 reg byte x 4.0
|
||||
(signed byte) print_sbyte_at::b#9 reg byte x 4.0
|
||||
(byte*) print_screen
|
||||
(const byte*) print_screen#0 print_screen = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(void()) print_str_at((byte*) print_str_at::str , (byte*) print_str_at::at)
|
||||
(label) print_str_at::@1
|
||||
(label) print_str_at::@2
|
||||
|
@ -1,7 +1,7 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@26
|
||||
@26: scope:[] from @begin
|
||||
to:@27
|
||||
@27: scope:[] from @begin
|
||||
kickasm(location (const signed byte*) PERSP_Z#0) {{ {
|
||||
.var d = 256.0
|
||||
.var z0 = 5.0
|
||||
@ -16,9 +16,9 @@
|
||||
}}
|
||||
[2] call main
|
||||
to:@end
|
||||
@end: scope:[] from @26
|
||||
@end: scope:[] from @27
|
||||
[3] phi()
|
||||
main: scope:[main] from @26
|
||||
main: scope:[main] from @27
|
||||
asm { sei }
|
||||
[5] call mulf_init
|
||||
to:main::@1
|
||||
|
@ -4,12 +4,91 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@3
|
||||
@3: scope:[] from @begin
|
||||
(byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48
|
||||
(byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53
|
||||
(byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49
|
||||
(byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55
|
||||
(byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248
|
||||
(word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016
|
||||
(byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248
|
||||
(byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249
|
||||
(byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264
|
||||
(byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266
|
||||
(byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269
|
||||
(byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271
|
||||
(byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275
|
||||
(byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276
|
||||
(byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277
|
||||
(byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280
|
||||
(byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281
|
||||
(byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281
|
||||
(byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282
|
||||
(byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283
|
||||
(byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284
|
||||
(byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285
|
||||
(byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286
|
||||
(byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287
|
||||
(byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265
|
||||
(byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265
|
||||
(byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128
|
||||
(byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64
|
||||
(byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32
|
||||
(byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16
|
||||
(byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270
|
||||
(byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270
|
||||
(byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16
|
||||
(byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272
|
||||
(byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272
|
||||
(byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267
|
||||
(byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268
|
||||
(byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273
|
||||
(byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274
|
||||
(byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296
|
||||
(byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320
|
||||
(byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321
|
||||
(byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322
|
||||
(byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323
|
||||
(byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333
|
||||
(byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127
|
||||
(byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576
|
||||
(byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577
|
||||
(byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578
|
||||
(byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579
|
||||
(byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589
|
||||
(void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788
|
||||
(void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534
|
||||
(byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9
|
||||
(byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10
|
||||
(byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11
|
||||
(byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12
|
||||
(byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13
|
||||
(byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14
|
||||
(byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15
|
||||
to:@4
|
||||
@4: scope:[] from @begin
|
||||
(byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
|
||||
(byte*) print_line_cursor#0 ← (byte*) print_screen#0
|
||||
(byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0
|
||||
to:@15
|
||||
to:@16
|
||||
print_str: scope:[print_str] from do_perspective do_perspective::@11 do_perspective::@2 do_perspective::@4 do_perspective::@6 do_perspective::@9
|
||||
(byte*) print_char_cursor#74 ← phi( do_perspective/(byte*) print_char_cursor#71 do_perspective::@11/(byte*) print_char_cursor#28 do_perspective::@2/(byte*) print_char_cursor#20 do_perspective::@4/(byte*) print_char_cursor#22 do_perspective::@6/(byte*) print_char_cursor#24 do_perspective::@9/(byte*) print_char_cursor#26 )
|
||||
(byte*) print_str::str#9 ← phi( do_perspective/(byte*) print_str::str#1 do_perspective::@11/(byte*) print_str::str#6 do_perspective::@2/(byte*) print_str::str#2 do_perspective::@4/(byte*) print_str::str#3 do_perspective::@6/(byte*) print_str::str#4 do_perspective::@9/(byte*) print_str::str#5 )
|
||||
@ -101,12 +180,12 @@ print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@7
|
||||
(byte*) print_char_cursor#8 ← (byte*) print_char_cursor#40
|
||||
return
|
||||
to:@return
|
||||
@15: scope:[] from @3
|
||||
(byte*) print_screen#9 ← phi( @3/(byte*) print_screen#0 )
|
||||
(byte*) print_char_cursor#79 ← phi( @3/(byte*) print_char_cursor#0 )
|
||||
(byte*) print_line_cursor#30 ← phi( @3/(byte*) print_line_cursor#0 )
|
||||
@16: scope:[] from @4
|
||||
(byte*) print_screen#9 ← phi( @4/(byte*) print_screen#0 )
|
||||
(byte*) print_char_cursor#79 ← phi( @4/(byte*) print_char_cursor#0 )
|
||||
(byte*) print_line_cursor#30 ← phi( @4/(byte*) print_line_cursor#0 )
|
||||
(byte[]) print_hextab#0 ← (const string) $0
|
||||
to:@22
|
||||
to:@23
|
||||
print_byte: scope:[print_byte] from do_perspective::@10 do_perspective::@8 print_sbyte::@2
|
||||
(byte*) print_char_cursor#69 ← phi( do_perspective::@10/(byte*) print_char_cursor#27 do_perspective::@8/(byte*) print_char_cursor#72 print_sbyte::@2/(byte*) print_char_cursor#68 )
|
||||
(byte) print_byte::b#3 ← phi( do_perspective::@10/(byte) print_byte::b#2 do_perspective::@8/(byte) print_byte::b#1 print_sbyte::@2/(byte) print_byte::b#0 )
|
||||
@ -167,25 +246,25 @@ print_cls::@return: scope:[print_cls] from print_cls::@2
|
||||
(byte*) print_char_cursor#15 ← (byte*) print_char_cursor#46
|
||||
return
|
||||
to:@return
|
||||
@22: scope:[] from @15
|
||||
(byte*) print_screen#8 ← phi( @15/(byte*) print_screen#9 )
|
||||
(byte*) print_char_cursor#78 ← phi( @15/(byte*) print_char_cursor#79 )
|
||||
(byte*) print_line_cursor#29 ← phi( @15/(byte*) print_line_cursor#30 )
|
||||
@23: scope:[] from @16
|
||||
(byte*) print_screen#8 ← phi( @16/(byte*) print_screen#9 )
|
||||
(byte*) print_char_cursor#78 ← phi( @16/(byte*) print_char_cursor#79 )
|
||||
(byte*) print_line_cursor#29 ← phi( @16/(byte*) print_line_cursor#30 )
|
||||
(signed byte*) xr#0 ← ((signed byte*)) (byte/word/signed word/dword/signed dword) 240
|
||||
(signed byte*) yr#0 ← ((signed byte*)) (byte/word/signed word/dword/signed dword) 241
|
||||
(signed byte*) zr#0 ← ((signed byte*)) (byte/word/signed word/dword/signed dword) 242
|
||||
(word*) psp1#0 ← ((word*)) (byte/word/signed word/dword/signed dword) 243
|
||||
(word*) psp2#0 ← ((word*)) (byte/word/signed word/dword/signed dword) 245
|
||||
to:@25
|
||||
main: scope:[main] from @26
|
||||
(signed byte*) zr#12 ← phi( @26/(signed byte*) zr#13 )
|
||||
(signed byte*) yr#15 ← phi( @26/(signed byte*) yr#16 )
|
||||
(signed byte*) xr#13 ← phi( @26/(signed byte*) xr#14 )
|
||||
(byte*) print_char_cursor#76 ← phi( @26/(byte*) print_char_cursor#73 )
|
||||
(byte*) print_line_cursor#25 ← phi( @26/(byte*) print_line_cursor#24 )
|
||||
(byte*) print_screen#5 ← phi( @26/(byte*) print_screen#6 )
|
||||
(word*) psp2#2 ← phi( @26/(word*) psp2#3 )
|
||||
(word*) psp1#2 ← phi( @26/(word*) psp1#3 )
|
||||
to:@26
|
||||
main: scope:[main] from @27
|
||||
(signed byte*) zr#12 ← phi( @27/(signed byte*) zr#13 )
|
||||
(signed byte*) yr#15 ← phi( @27/(signed byte*) yr#16 )
|
||||
(signed byte*) xr#13 ← phi( @27/(signed byte*) xr#14 )
|
||||
(byte*) print_char_cursor#76 ← phi( @27/(byte*) print_char_cursor#73 )
|
||||
(byte*) print_line_cursor#25 ← phi( @27/(byte*) print_line_cursor#24 )
|
||||
(byte*) print_screen#5 ← phi( @27/(byte*) print_screen#6 )
|
||||
(word*) psp2#2 ← phi( @27/(word*) psp2#3 )
|
||||
(word*) psp1#2 ← phi( @27/(word*) psp1#3 )
|
||||
asm { sei }
|
||||
call mulf_init
|
||||
to:main::@1
|
||||
@ -403,18 +482,18 @@ perspective: scope:[perspective] from do_perspective::@7
|
||||
perspective::@return: scope:[perspective] from perspective
|
||||
return
|
||||
to:@return
|
||||
@25: scope:[] from @22
|
||||
(signed byte*) zr#14 ← phi( @22/(signed byte*) zr#0 )
|
||||
(signed byte*) yr#17 ← phi( @22/(signed byte*) yr#0 )
|
||||
(signed byte*) xr#15 ← phi( @22/(signed byte*) xr#0 )
|
||||
(byte*) print_screen#7 ← phi( @22/(byte*) print_screen#8 )
|
||||
(word*) psp2#4 ← phi( @22/(word*) psp2#0 )
|
||||
(word*) psp1#4 ← phi( @22/(word*) psp1#0 )
|
||||
(byte*) print_char_cursor#77 ← phi( @22/(byte*) print_char_cursor#78 )
|
||||
(byte*) print_line_cursor#27 ← phi( @22/(byte*) print_line_cursor#29 )
|
||||
@26: scope:[] from @23
|
||||
(signed byte*) zr#14 ← phi( @23/(signed byte*) zr#0 )
|
||||
(signed byte*) yr#17 ← phi( @23/(signed byte*) yr#0 )
|
||||
(signed byte*) xr#15 ← phi( @23/(signed byte*) xr#0 )
|
||||
(byte*) print_screen#7 ← phi( @23/(byte*) print_screen#8 )
|
||||
(word*) psp2#4 ← phi( @23/(word*) psp2#0 )
|
||||
(word*) psp1#4 ← phi( @23/(word*) psp1#0 )
|
||||
(byte*) print_char_cursor#77 ← phi( @23/(byte*) print_char_cursor#78 )
|
||||
(byte*) print_line_cursor#27 ← phi( @23/(byte*) print_line_cursor#29 )
|
||||
(byte[512]) mulf_sqr1#0 ← { fill( 512, 0) }
|
||||
(byte[512]) mulf_sqr2#0 ← { fill( 512, 0) }
|
||||
to:@26
|
||||
to:@27
|
||||
mulf_init: scope:[mulf_init] from main
|
||||
(signed word) mulf_init::sqr#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(signed word) mulf_init::add#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
@ -453,15 +532,15 @@ mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@1
|
||||
mulf_init::@return: scope:[mulf_init] from mulf_init::@1
|
||||
return
|
||||
to:@return
|
||||
@26: scope:[] from @25
|
||||
(signed byte*) zr#13 ← phi( @25/(signed byte*) zr#14 )
|
||||
(signed byte*) yr#16 ← phi( @25/(signed byte*) yr#17 )
|
||||
(signed byte*) xr#14 ← phi( @25/(signed byte*) xr#15 )
|
||||
(byte*) print_screen#6 ← phi( @25/(byte*) print_screen#7 )
|
||||
(word*) psp2#3 ← phi( @25/(word*) psp2#4 )
|
||||
(word*) psp1#3 ← phi( @25/(word*) psp1#4 )
|
||||
(byte*) print_char_cursor#73 ← phi( @25/(byte*) print_char_cursor#77 )
|
||||
(byte*) print_line_cursor#24 ← phi( @25/(byte*) print_line_cursor#27 )
|
||||
@27: scope:[] from @26
|
||||
(signed byte*) zr#13 ← phi( @26/(signed byte*) zr#14 )
|
||||
(signed byte*) yr#16 ← phi( @26/(signed byte*) yr#17 )
|
||||
(signed byte*) xr#14 ← phi( @26/(signed byte*) xr#15 )
|
||||
(byte*) print_screen#6 ← phi( @26/(byte*) print_screen#7 )
|
||||
(word*) psp2#3 ← phi( @26/(word*) psp2#4 )
|
||||
(word*) psp1#3 ← phi( @26/(word*) psp1#4 )
|
||||
(byte*) print_char_cursor#73 ← phi( @26/(byte*) print_char_cursor#77 )
|
||||
(byte*) print_line_cursor#24 ← phi( @26/(byte*) print_line_cursor#27 )
|
||||
(signed byte*) PERSP_Z#0 ← ((signed byte*)) (word/signed word/dword/signed dword) 9216
|
||||
kickasm(location (signed byte*) PERSP_Z#0) {{ {
|
||||
.var d = 256.0
|
||||
@ -476,27 +555,185 @@ mulf_init::@return: scope:[mulf_init] from mulf_init::@1
|
||||
}
|
||||
}}
|
||||
call main
|
||||
to:@27
|
||||
@27: scope:[] from @26
|
||||
(byte*) print_char_cursor#63 ← phi( @26/(byte*) print_char_cursor#18 )
|
||||
(byte*) print_line_cursor#20 ← phi( @26/(byte*) print_line_cursor#7 )
|
||||
to:@28
|
||||
@28: scope:[] from @27
|
||||
(byte*) print_char_cursor#63 ← phi( @27/(byte*) print_char_cursor#18 )
|
||||
(byte*) print_line_cursor#20 ← phi( @27/(byte*) print_line_cursor#7 )
|
||||
(byte*) print_line_cursor#10 ← (byte*) print_line_cursor#20
|
||||
(byte*) print_char_cursor#32 ← (byte*) print_char_cursor#63
|
||||
to:@end
|
||||
@end: scope:[] from @27
|
||||
@end: scope:[] from @28
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(const string) $0 = (string) "0123456789abcdef"
|
||||
(label) @15
|
||||
(label) @22
|
||||
(label) @25
|
||||
(label) @16
|
||||
(label) @23
|
||||
(label) @26
|
||||
(label) @27
|
||||
(label) @3
|
||||
(label) @28
|
||||
(label) @4
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL#0
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL1#0
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL2#0
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL3#0
|
||||
(byte*) BGCOL4
|
||||
(byte*) BGCOL4#0
|
||||
(byte) BLACK
|
||||
(byte) BLACK#0
|
||||
(byte) BLUE
|
||||
(byte) BLUE#0
|
||||
(byte*) BORDERCOL
|
||||
(byte*) BORDERCOL#0
|
||||
(byte) BROWN
|
||||
(byte) BROWN#0
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHARGEN#0
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_INTERRUPT#0
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A#0
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_A_DDR#0
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B#0
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA1_PORT_B_DDR#0
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_INTERRUPT#0
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A#0
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_A_DDR#0
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B#0
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte*) CIA2_PORT_B_DDR#0
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte) CIA_INTERRUPT_CLEAR#0
|
||||
(byte*) COLS
|
||||
(byte*) COLS#0
|
||||
(byte) CYAN
|
||||
(byte) CYAN#0
|
||||
(byte*) D011
|
||||
(byte*) D011#0
|
||||
(byte*) D016
|
||||
(byte*) D016#0
|
||||
(byte*) D018
|
||||
(byte*) D018#0
|
||||
(byte) DARK_GREY
|
||||
(byte) DARK_GREY#0
|
||||
(byte) GREEN
|
||||
(byte) GREEN#0
|
||||
(byte) GREY
|
||||
(byte) GREY#0
|
||||
(void()**) HARDWARE_IRQ
|
||||
(void()**) HARDWARE_IRQ#0
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_BG#0
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte) IRQ_COLLISION_SPRITE#0
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte*) IRQ_ENABLE#0
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_LIGHTPEN#0
|
||||
(byte) IRQ_RASTER
|
||||
(byte) IRQ_RASTER#0
|
||||
(byte*) IRQ_STATUS
|
||||
(byte*) IRQ_STATUS#0
|
||||
(void()**) KERNEL_IRQ
|
||||
(void()**) KERNEL_IRQ#0
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_X#0
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte*) LIGHTPEN_Y#0
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_BLUE#0
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREEN#0
|
||||
(byte) LIGHT_GREY
|
||||
(byte) LIGHT_GREY#0
|
||||
(byte) ORANGE
|
||||
(byte) ORANGE#0
|
||||
(signed byte*) PERSP_Z
|
||||
(signed byte*) PERSP_Z#0
|
||||
(byte) PINK
|
||||
(byte) PINK#0
|
||||
(byte*) PROCPORT
|
||||
(byte*) PROCPORT#0
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte*) PROCPORT_DDR#0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_KERNEL_IO#0
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_ALL#0
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_CHARROM#0
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PROCPORT_RAM_IO#0
|
||||
(byte) PURPLE
|
||||
(byte) PURPLE#0
|
||||
(byte*) RASTER
|
||||
(byte*) RASTER#0
|
||||
(byte) RED
|
||||
(byte) RED#0
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_COLS#0
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_ENABLE#0
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_X#0
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_EXPAND_Y#0
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC#0
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC1#0
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_MC2#0
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_PRIORITY#0
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XMSB#0
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_XPOS#0
|
||||
(byte*) SPRITES_YPOS
|
||||
(byte*) SPRITES_YPOS#0
|
||||
(word) SPRITE_PTRS
|
||||
(word) SPRITE_PTRS#0
|
||||
(byte) VIC_BMM
|
||||
(byte) VIC_BMM#0
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL#0
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte*) VIC_CONTROL2#0
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_CSEL#0
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_DEN#0
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_ECM#0
|
||||
(byte) VIC_MCM
|
||||
(byte) VIC_MCM#0
|
||||
(byte*) VIC_MEMORY
|
||||
(byte*) VIC_MEMORY#0
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RSEL#0
|
||||
(byte) VIC_RST8
|
||||
(byte) VIC_RST8#0
|
||||
(byte) WHITE
|
||||
(byte) WHITE#0
|
||||
(byte) YELLOW
|
||||
(byte) YELLOW#0
|
||||
(void()) do_perspective((signed byte) do_perspective::x , (signed byte) do_perspective::y , (signed byte) do_perspective::z)
|
||||
(byte~) do_perspective::$11
|
||||
(byte~) do_perspective::$8
|
||||
@ -1001,6 +1238,85 @@ Simple Condition (bool~) print_sbyte::$0 if((signed byte) print_sbyte::b#4<(byte
|
||||
Simple Condition (bool~) print_cls::$1 if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1
|
||||
Simple Condition (bool~) mulf_init::$11 if((byte) mulf_init::i#1!=rangelast(0,128)) goto mulf_init::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
|
||||
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
|
||||
Constant (const byte*) PROCPORT#0 = ((byte*))1
|
||||
Constant (const byte) PROCPORT_RAM_ALL#0 = 48
|
||||
Constant (const byte) PROCPORT_RAM_IO#0 = 53
|
||||
Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49
|
||||
Constant (const byte) PROCPORT_KERNEL_IO#0 = 54
|
||||
Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55
|
||||
Constant (const byte*) CHARGEN#0 = ((byte*))53248
|
||||
Constant (const word) SPRITE_PTRS#0 = 1016
|
||||
Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248
|
||||
Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249
|
||||
Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264
|
||||
Constant (const byte*) RASTER#0 = ((byte*))53266
|
||||
Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269
|
||||
Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271
|
||||
Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275
|
||||
Constant (const byte*) SPRITES_MC#0 = ((byte*))53276
|
||||
Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277
|
||||
Constant (const byte*) BORDERCOL#0 = ((byte*))53280
|
||||
Constant (const byte*) BGCOL#0 = ((byte*))53281
|
||||
Constant (const byte*) BGCOL1#0 = ((byte*))53281
|
||||
Constant (const byte*) BGCOL2#0 = ((byte*))53282
|
||||
Constant (const byte*) BGCOL3#0 = ((byte*))53283
|
||||
Constant (const byte*) BGCOL4#0 = ((byte*))53284
|
||||
Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285
|
||||
Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286
|
||||
Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287
|
||||
Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265
|
||||
Constant (const byte*) D011#0 = ((byte*))53265
|
||||
Constant (const byte) VIC_RST8#0 = 128
|
||||
Constant (const byte) VIC_ECM#0 = 64
|
||||
Constant (const byte) VIC_BMM#0 = 32
|
||||
Constant (const byte) VIC_DEN#0 = 16
|
||||
Constant (const byte) VIC_RSEL#0 = 8
|
||||
Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270
|
||||
Constant (const byte*) D016#0 = ((byte*))53270
|
||||
Constant (const byte) VIC_MCM#0 = 16
|
||||
Constant (const byte) VIC_CSEL#0 = 8
|
||||
Constant (const byte*) D018#0 = ((byte*))53272
|
||||
Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272
|
||||
Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267
|
||||
Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268
|
||||
Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273
|
||||
Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274
|
||||
Constant (const byte) IRQ_RASTER#0 = 1
|
||||
Constant (const byte) IRQ_COLLISION_BG#0 = 2
|
||||
Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4
|
||||
Constant (const byte) IRQ_LIGHTPEN#0 = 8
|
||||
Constant (const byte*) COLS#0 = ((byte*))55296
|
||||
Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320
|
||||
Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321
|
||||
Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322
|
||||
Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323
|
||||
Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333
|
||||
Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127
|
||||
Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576
|
||||
Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577
|
||||
Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578
|
||||
Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579
|
||||
Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589
|
||||
Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788
|
||||
Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534
|
||||
Constant (const byte) BLACK#0 = 0
|
||||
Constant (const byte) WHITE#0 = 1
|
||||
Constant (const byte) RED#0 = 2
|
||||
Constant (const byte) CYAN#0 = 3
|
||||
Constant (const byte) PURPLE#0 = 4
|
||||
Constant (const byte) GREEN#0 = 5
|
||||
Constant (const byte) BLUE#0 = 6
|
||||
Constant (const byte) YELLOW#0 = 7
|
||||
Constant (const byte) ORANGE#0 = 8
|
||||
Constant (const byte) BROWN#0 = 9
|
||||
Constant (const byte) PINK#0 = 10
|
||||
Constant (const byte) DARK_GREY#0 = 11
|
||||
Constant (const byte) GREY#0 = 12
|
||||
Constant (const byte) LIGHT_GREEN#0 = 13
|
||||
Constant (const byte) LIGHT_BLUE#0 = 14
|
||||
Constant (const byte) LIGHT_GREY#0 = 15
|
||||
Constant (const byte*) print_line_cursor#0 = ((byte*))1024
|
||||
Constant (const byte) print_char::ch#0 = '-'
|
||||
Constant (const byte) print_char::ch#1 = ' '
|
||||
@ -1046,24 +1362,25 @@ Consolidated array index constant in assignment *(mulf_init::$6+1 + mulf_init::$
|
||||
Successful SSA optimization Pass2ConstantAdditionElimination
|
||||
Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) mulf_init::$5 ← (byte) mulf_init::i#2
|
||||
Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) mulf_init::$7 ← (byte) mulf_init::i#2
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Eliminating Noop Cast (byte) print_byte::b#0 ← ((byte)) (signed byte) print_sbyte::b#6
|
||||
Eliminating Noop Cast (byte) print_byte::b#1 ← ((byte)) *((const signed byte*) xr#0)
|
||||
Eliminating Noop Cast (byte) print_byte::b#2 ← ((byte)) *((const signed byte*) yr#0)
|
||||
Successful SSA optimization Pass2NopCastElimination
|
||||
Resolved ranged next value mulf_init::i#1 ← ++ mulf_init::i#2 to ++
|
||||
Resolved ranged comparison value if(mulf_init::i#1!=rangelast(0,128)) goto mulf_init::@1 to (byte/word/signed word/dword/signed dword) 129
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) print_ln::@2
|
||||
Culled Empty Block (label) print_sbyte::@6
|
||||
Culled Empty Block (label) print_sbyte::@7
|
||||
Culled Empty Block (label) @15
|
||||
Culled Empty Block (label) @16
|
||||
Culled Empty Block (label) print_byte::@2
|
||||
Culled Empty Block (label) print_cls::@2
|
||||
Culled Empty Block (label) @22
|
||||
Culled Empty Block (label) @23
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) do_perspective::@13
|
||||
Culled Empty Block (label) @25
|
||||
Culled Empty Block (label) @27
|
||||
Culled Empty Block (label) @26
|
||||
Culled Empty Block (label) @28
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte) mulf_init::i#2 = (byte~) mulf_init::$5 (byte~) mulf_init::$7
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
@ -1186,8 +1503,8 @@ Adding NOP phi() at start of mulf_init
|
||||
FINAL CONTROL FLOW GRAPH
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@26
|
||||
@26: scope:[] from @begin
|
||||
to:@27
|
||||
@27: scope:[] from @begin
|
||||
kickasm(location (const signed byte*) PERSP_Z#0) {{ {
|
||||
.var d = 256.0
|
||||
.var z0 = 5.0
|
||||
@ -1202,9 +1519,9 @@ FINAL CONTROL FLOW GRAPH
|
||||
}}
|
||||
[2] call main
|
||||
to:@end
|
||||
@end: scope:[] from @26
|
||||
@end: scope:[] from @27
|
||||
[3] phi()
|
||||
main: scope:[main] from @26
|
||||
main: scope:[main] from @27
|
||||
asm { sei }
|
||||
[5] call mulf_init
|
||||
to:main::@1
|
||||
@ -1402,7 +1719,86 @@ mulf_init::@return: scope:[mulf_init] from mulf_init::@1
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(signed byte*) PERSP_Z
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) do_perspective((signed byte) do_perspective::x , (signed byte) do_perspective::y , (signed byte) do_perspective::z)
|
||||
(signed byte) do_perspective::x
|
||||
(signed byte) do_perspective::y
|
||||
@ -1546,14 +1942,14 @@ INITIAL ASM
|
||||
.label print_line_cursor = 2
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
jmp b26
|
||||
//SEG3 @26
|
||||
b26:
|
||||
jmp b27
|
||||
//SEG3 @27
|
||||
b27:
|
||||
//SEG4 kickasm(location (const signed byte*) PERSP_Z#0) {{ { .var d = 256.0 .var z0 = 5.0 .for(var z=0;z<$100;z++) { .if(z>127) { .byte round(d / (z0 - ((z - 256) / 64.0))); } else { .byte round(d / (z0 - (z / 64.0))); } } } }}
|
||||
//SEG5 [2] call main
|
||||
jsr main
|
||||
//SEG6 [3] phi from @26 to @end [phi:@26->@end]
|
||||
bend_from_b26:
|
||||
//SEG6 [3] phi from @27 to @end [phi:@27->@end]
|
||||
bend_from_b27:
|
||||
jmp bend
|
||||
//SEG7 @end
|
||||
bend:
|
||||
@ -2335,14 +2731,14 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.label print_line_cursor = 2
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
jmp b26
|
||||
//SEG3 @26
|
||||
b26:
|
||||
jmp b27
|
||||
//SEG3 @27
|
||||
b27:
|
||||
//SEG4 kickasm(location (const signed byte*) PERSP_Z#0) {{ { .var d = 256.0 .var z0 = 5.0 .for(var z=0;z<$100;z++) { .if(z>127) { .byte round(d / (z0 - ((z - 256) / 64.0))); } else { .byte round(d / (z0 - (z / 64.0))); } } } }}
|
||||
//SEG5 [2] call main
|
||||
jsr main
|
||||
//SEG6 [3] phi from @26 to @end [phi:@26->@end]
|
||||
bend_from_b26:
|
||||
//SEG6 [3] phi from @27 to @end [phi:@27->@end]
|
||||
bend_from_b27:
|
||||
jmp bend
|
||||
//SEG7 @end
|
||||
bend:
|
||||
@ -2958,7 +3354,7 @@ mulf_init: {
|
||||
|
||||
|
||||
ASSEMBLER OPTIMIZATIONS
|
||||
Removing instruction jmp b26
|
||||
Removing instruction jmp b27
|
||||
Removing instruction jmp bend
|
||||
Removing instruction jmp b1
|
||||
Removing instruction jmp b2
|
||||
@ -3013,7 +3409,7 @@ Replacing label b1_from_b1 with b1
|
||||
Replacing label b1_from_b1 with b1
|
||||
Replacing label b1_from_b1 with b1
|
||||
Removing instruction bbegin:
|
||||
Removing instruction bend_from_b26:
|
||||
Removing instruction bend_from_b27:
|
||||
Removing instruction b2_from_b1:
|
||||
Removing instruction do_perspective_from_b2:
|
||||
Removing instruction b1_from_do_perspective:
|
||||
@ -3047,7 +3443,7 @@ Removing instruction print_char_from_b1:
|
||||
Removing instruction b1_from_b1:
|
||||
Removing instruction b1_from_b1:
|
||||
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||
Removing instruction b26:
|
||||
Removing instruction b27:
|
||||
Removing instruction bend:
|
||||
Removing instruction mulf_init_from_main:
|
||||
Removing instruction b1:
|
||||
@ -3094,11 +3490,90 @@ Removing instruction jmp b1
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(label) @26
|
||||
(label) @27
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(signed byte*) PERSP_Z
|
||||
(const signed byte*) PERSP_Z#0 PERSP_Z = ((signed byte*))(word/signed word/dword/signed dword) 9216
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) do_perspective((signed byte) do_perspective::x , (signed byte) do_perspective::y , (signed byte) do_perspective::z)
|
||||
(label) do_perspective::@1
|
||||
(label) do_perspective::@10
|
||||
@ -3255,11 +3730,11 @@ Score: 3787
|
||||
.label print_char_cursor = 4
|
||||
.label print_line_cursor = 2
|
||||
//SEG2 @begin
|
||||
//SEG3 @26
|
||||
//SEG3 @27
|
||||
//SEG4 kickasm(location (const signed byte*) PERSP_Z#0) {{ { .var d = 256.0 .var z0 = 5.0 .for(var z=0;z<$100;z++) { .if(z>127) { .byte round(d / (z0 - ((z - 256) / 64.0))); } else { .byte round(d / (z0 - (z / 64.0))); } } } }}
|
||||
//SEG5 [2] call main
|
||||
jsr main
|
||||
//SEG6 [3] phi from @26 to @end [phi:@26->@end]
|
||||
//SEG6 [3] phi from @27 to @end [phi:@27->@end]
|
||||
//SEG7 @end
|
||||
//SEG8 main
|
||||
main: {
|
||||
|
@ -1,8 +1,87 @@
|
||||
(label) @26
|
||||
(label) @27
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(signed byte*) PERSP_Z
|
||||
(const signed byte*) PERSP_Z#0 PERSP_Z = ((signed byte*))(word/signed word/dword/signed dword) 9216
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) do_perspective((signed byte) do_perspective::x , (signed byte) do_perspective::y , (signed byte) do_perspective::z)
|
||||
(label) do_perspective::@1
|
||||
(label) do_perspective::@10
|
||||
|
@ -1,13 +1,13 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@14
|
||||
@14: scope:[] from @begin
|
||||
to:@15
|
||||
@15: scope:[] from @begin
|
||||
[1] phi()
|
||||
[2] call main
|
||||
to:@end
|
||||
@end: scope:[] from @14
|
||||
@end: scope:[] from @15
|
||||
[3] phi()
|
||||
main: scope:[main] from @14
|
||||
main: scope:[main] from @15
|
||||
[4] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
[5] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
[6] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
|
@ -2,21 +2,93 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48
|
||||
(byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53
|
||||
(byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49
|
||||
(byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55
|
||||
(byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248
|
||||
(word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016
|
||||
(byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248
|
||||
(byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249
|
||||
(byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264
|
||||
(byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266
|
||||
(byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269
|
||||
(byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271
|
||||
(byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275
|
||||
(byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276
|
||||
(byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277
|
||||
(byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280
|
||||
(byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281
|
||||
(byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281
|
||||
(byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282
|
||||
(byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283
|
||||
(byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284
|
||||
(byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285
|
||||
(byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286
|
||||
(byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287
|
||||
(byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265
|
||||
(byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265
|
||||
(byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128
|
||||
(byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64
|
||||
(byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32
|
||||
(byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16
|
||||
(byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270
|
||||
(byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270
|
||||
(byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16
|
||||
(byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272
|
||||
(byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272
|
||||
to:@3
|
||||
@3: scope:[] from @begin
|
||||
(byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267
|
||||
(byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268
|
||||
(byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273
|
||||
(byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274
|
||||
(byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296
|
||||
(byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320
|
||||
(byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321
|
||||
(byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322
|
||||
(byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323
|
||||
(byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333
|
||||
(byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127
|
||||
(byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576
|
||||
(byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577
|
||||
(byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578
|
||||
(byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579
|
||||
(byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589
|
||||
(void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788
|
||||
(void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534
|
||||
(byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9
|
||||
(byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10
|
||||
(byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11
|
||||
(byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12
|
||||
(byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13
|
||||
(byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14
|
||||
(byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15
|
||||
to:@4
|
||||
@4: scope:[] from @begin
|
||||
(byte[256]) bitmap_plot_xlo#0 ← { fill( 256, 0) }
|
||||
(byte[256]) bitmap_plot_xhi#0 ← { fill( 256, 0) }
|
||||
(byte[256]) bitmap_plot_ylo#0 ← { fill( 256, 0) }
|
||||
(byte[256]) bitmap_plot_yhi#0 ← { fill( 256, 0) }
|
||||
(byte[256]) bitmap_plot_bit#0 ← { fill( 256, 0) }
|
||||
to:@11
|
||||
to:@12
|
||||
bitmap_init: scope:[bitmap_init] from main
|
||||
(byte*) bitmap_init::bitmap#2 ← phi( main/(byte*) bitmap_init::bitmap#0 )
|
||||
(byte) bitmap_init::bits#0 ← (byte/word/signed word/dword/signed dword) 128
|
||||
@ -560,15 +632,15 @@ bitmap_line_ydxd::@3: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@5
|
||||
bitmap_line_ydxd::@return: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@2
|
||||
return
|
||||
to:@return
|
||||
@11: scope:[] from @3
|
||||
@12: scope:[] from @4
|
||||
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
|
||||
(byte*) BITMAP#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192
|
||||
(byte[]) lines_x#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 110, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 40, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 40, (byte/signed byte/word/signed word/dword/signed dword) 60 }
|
||||
(byte[]) lines_y#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 40, (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 110, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 40, (byte/signed byte/word/signed word/dword/signed dword) 10 }
|
||||
(byte) lines_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
to:@14
|
||||
main: scope:[main] from @14
|
||||
(byte) lines_cnt#9 ← phi( @14/(byte) lines_cnt#10 )
|
||||
to:@15
|
||||
main: scope:[main] from @15
|
||||
(byte) lines_cnt#9 ← phi( @15/(byte) lines_cnt#10 )
|
||||
*((byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
*((byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte~) main::$0 ← (byte) VIC_BMM#0 | (byte) VIC_DEN#0
|
||||
@ -648,39 +720,183 @@ init_screen::@1: scope:[init_screen] from init_screen init_screen::@1
|
||||
init_screen::@return: scope:[init_screen] from init_screen::@1
|
||||
return
|
||||
to:@return
|
||||
@14: scope:[] from @11
|
||||
(byte) lines_cnt#10 ← phi( @11/(byte) lines_cnt#0 )
|
||||
@15: scope:[] from @12
|
||||
(byte) lines_cnt#10 ← phi( @12/(byte) lines_cnt#0 )
|
||||
call main
|
||||
to:@15
|
||||
@15: scope:[] from @14
|
||||
to:@16
|
||||
@16: scope:[] from @15
|
||||
to:@end
|
||||
@end: scope:[] from @15
|
||||
@end: scope:[] from @16
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @11
|
||||
(label) @14
|
||||
(label) @12
|
||||
(label) @15
|
||||
(label) @3
|
||||
(label) @16
|
||||
(label) @4
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL#0
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL1#0
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL2#0
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL3#0
|
||||
(byte*) BGCOL4
|
||||
(byte*) BGCOL4#0
|
||||
(byte*) BITMAP
|
||||
(byte*) BITMAP#0
|
||||
(byte) BLACK
|
||||
(byte) BLACK#0
|
||||
(byte) BLUE
|
||||
(byte) BLUE#0
|
||||
(byte*) BORDERCOL
|
||||
(byte*) BORDERCOL#0
|
||||
(byte) BROWN
|
||||
(byte) BROWN#0
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHARGEN#0
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_INTERRUPT#0
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A#0
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_A_DDR#0
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B#0
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA1_PORT_B_DDR#0
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_INTERRUPT#0
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A#0
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_A_DDR#0
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B#0
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte*) CIA2_PORT_B_DDR#0
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte) CIA_INTERRUPT_CLEAR#0
|
||||
(byte*) COLS
|
||||
(byte*) COLS#0
|
||||
(byte) CYAN
|
||||
(byte) CYAN#0
|
||||
(byte*) D011
|
||||
(byte*) D011#0
|
||||
(byte*) D016
|
||||
(byte*) D016#0
|
||||
(byte*) D018
|
||||
(byte*) D018#0
|
||||
(byte) DARK_GREY
|
||||
(byte) DARK_GREY#0
|
||||
(byte) GREEN
|
||||
(byte) GREEN#0
|
||||
(byte) GREY
|
||||
(byte) GREY#0
|
||||
(void()**) HARDWARE_IRQ
|
||||
(void()**) HARDWARE_IRQ#0
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_BG#0
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte) IRQ_COLLISION_SPRITE#0
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte*) IRQ_ENABLE#0
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_LIGHTPEN#0
|
||||
(byte) IRQ_RASTER
|
||||
(byte) IRQ_RASTER#0
|
||||
(byte*) IRQ_STATUS
|
||||
(byte*) IRQ_STATUS#0
|
||||
(void()**) KERNEL_IRQ
|
||||
(void()**) KERNEL_IRQ#0
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_X#0
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte*) LIGHTPEN_Y#0
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_BLUE#0
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREEN#0
|
||||
(byte) LIGHT_GREY
|
||||
(byte) LIGHT_GREY#0
|
||||
(byte) ORANGE
|
||||
(byte) ORANGE#0
|
||||
(byte) PINK
|
||||
(byte) PINK#0
|
||||
(byte*) PROCPORT
|
||||
(byte*) PROCPORT#0
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte*) PROCPORT_DDR#0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_KERNEL_IO#0
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_ALL#0
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_CHARROM#0
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PROCPORT_RAM_IO#0
|
||||
(byte) PURPLE
|
||||
(byte) PURPLE#0
|
||||
(byte*) RASTER
|
||||
(byte*) RASTER#0
|
||||
(byte) RED
|
||||
(byte) RED#0
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_COLS#0
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_ENABLE#0
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_X#0
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_EXPAND_Y#0
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC#0
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC1#0
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_MC2#0
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_PRIORITY#0
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XMSB#0
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_XPOS#0
|
||||
(byte*) SPRITES_YPOS
|
||||
(byte*) SPRITES_YPOS#0
|
||||
(word) SPRITE_PTRS
|
||||
(word) SPRITE_PTRS#0
|
||||
(byte) VIC_BMM
|
||||
(byte) VIC_BMM#0
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL#0
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte*) VIC_CONTROL2#0
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_CSEL#0
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_DEN#0
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_ECM#0
|
||||
(byte) VIC_MCM
|
||||
(byte) VIC_MCM#0
|
||||
(byte*) VIC_MEMORY
|
||||
(byte*) VIC_MEMORY#0
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RSEL#0
|
||||
(byte) VIC_RST8
|
||||
(byte) VIC_RST8#0
|
||||
(byte) WHITE
|
||||
(byte) WHITE#0
|
||||
(byte) YELLOW
|
||||
(byte) YELLOW#0
|
||||
(void()) bitmap_clear()
|
||||
(byte*~) bitmap_clear::$0
|
||||
(bool~) bitmap_clear::$1
|
||||
@ -1234,7 +1450,7 @@ Culled Empty Block (label) bitmap_line::@33
|
||||
Culled Empty Block (label) bitmap_line::@34
|
||||
Culled Empty Block (label) bitmap_line::@35
|
||||
Culled Empty Block (label) bitmap_line::@36
|
||||
Culled Empty Block (label) @15
|
||||
Culled Empty Block (label) @16
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Inversing boolean not (bool~) bitmap_init::$4 ← (byte) bitmap_init::bits#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) bitmap_init::$3 ← (byte) bitmap_init::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not (bool~) bitmap_init::$12 ← (byte~) bitmap_init::$10 != (byte/signed byte/word/signed word/dword/signed dword) 7 from (bool~) bitmap_init::$11 ← (byte~) bitmap_init::$10 == (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
@ -1393,13 +1609,85 @@ Simple Condition (bool~) bitmap_line_ydxd::$7 if((byte) bitmap_line_ydxd::y#3!=(
|
||||
Simple Condition (bool~) lines::$3 if((byte) lines::l#1<(byte) lines_cnt#0) goto lines::@1
|
||||
Simple Condition (bool~) init_screen::$1 if((byte*) init_screen::c#1!=(byte*~) init_screen::$0) goto init_screen::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
|
||||
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
|
||||
Constant (const byte*) PROCPORT#0 = ((byte*))1
|
||||
Constant (const byte) PROCPORT_RAM_ALL#0 = 48
|
||||
Constant (const byte) PROCPORT_RAM_IO#0 = 53
|
||||
Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49
|
||||
Constant (const byte) PROCPORT_KERNEL_IO#0 = 54
|
||||
Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55
|
||||
Constant (const byte*) CHARGEN#0 = ((byte*))53248
|
||||
Constant (const word) SPRITE_PTRS#0 = 1016
|
||||
Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248
|
||||
Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249
|
||||
Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264
|
||||
Constant (const byte*) RASTER#0 = ((byte*))53266
|
||||
Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269
|
||||
Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271
|
||||
Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275
|
||||
Constant (const byte*) SPRITES_MC#0 = ((byte*))53276
|
||||
Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277
|
||||
Constant (const byte*) BORDERCOL#0 = ((byte*))53280
|
||||
Constant (const byte*) BGCOL#0 = ((byte*))53281
|
||||
Constant (const byte*) BGCOL1#0 = ((byte*))53281
|
||||
Constant (const byte*) BGCOL2#0 = ((byte*))53282
|
||||
Constant (const byte*) BGCOL3#0 = ((byte*))53283
|
||||
Constant (const byte*) BGCOL4#0 = ((byte*))53284
|
||||
Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285
|
||||
Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286
|
||||
Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287
|
||||
Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265
|
||||
Constant (const byte*) D011#0 = ((byte*))53265
|
||||
Constant (const byte) VIC_RST8#0 = 128
|
||||
Constant (const byte) VIC_ECM#0 = 64
|
||||
Constant (const byte) VIC_BMM#0 = 32
|
||||
Constant (const byte) VIC_DEN#0 = 16
|
||||
Constant (const byte) VIC_RSEL#0 = 8
|
||||
Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270
|
||||
Constant (const byte*) D016#0 = ((byte*))53270
|
||||
Constant (const byte) VIC_MCM#0 = 16
|
||||
Constant (const byte) VIC_CSEL#0 = 8
|
||||
Constant (const byte*) D018#0 = ((byte*))53272
|
||||
Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272
|
||||
Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267
|
||||
Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268
|
||||
Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273
|
||||
Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274
|
||||
Constant (const byte) IRQ_RASTER#0 = 1
|
||||
Constant (const byte) IRQ_COLLISION_BG#0 = 2
|
||||
Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4
|
||||
Constant (const byte) IRQ_LIGHTPEN#0 = 8
|
||||
Constant (const byte*) COLS#0 = ((byte*))55296
|
||||
Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320
|
||||
Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321
|
||||
Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322
|
||||
Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323
|
||||
Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333
|
||||
Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127
|
||||
Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576
|
||||
Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577
|
||||
Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578
|
||||
Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579
|
||||
Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589
|
||||
Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788
|
||||
Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534
|
||||
Constant (const byte) BLACK#0 = 0
|
||||
Constant (const byte) WHITE#0 = 1
|
||||
Constant (const byte) RED#0 = 2
|
||||
Constant (const byte) CYAN#0 = 3
|
||||
Constant (const byte) PURPLE#0 = 4
|
||||
Constant (const byte) GREEN#0 = 5
|
||||
Constant (const byte) BLUE#0 = 6
|
||||
Constant (const byte) YELLOW#0 = 7
|
||||
Constant (const byte) ORANGE#0 = 8
|
||||
Constant (const byte) BROWN#0 = 9
|
||||
Constant (const byte) PINK#0 = 10
|
||||
Constant (const byte) DARK_GREY#0 = 11
|
||||
Constant (const byte) GREY#0 = 12
|
||||
Constant (const byte) LIGHT_GREEN#0 = 13
|
||||
Constant (const byte) LIGHT_BLUE#0 = 14
|
||||
Constant (const byte) LIGHT_GREY#0 = 15
|
||||
Constant (const byte[256]) bitmap_plot_xlo#0 = { fill( 256, 0) }
|
||||
Constant (const byte[256]) bitmap_plot_xhi#0 = { fill( 256, 0) }
|
||||
Constant (const byte[256]) bitmap_plot_ylo#0 = { fill( 256, 0) }
|
||||
@ -1451,6 +1739,7 @@ Fixing inline constructor with bitmap_plot::$3 ← *(bitmap_plot_yhi#0 + bitmap_
|
||||
Successful SSA optimization Pass2FixInlineConstructors
|
||||
Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) lines::$0 ← (byte) lines::l#2
|
||||
Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) lines::$1 ← (byte) lines::l#2
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Eliminating Noop Cast (byte*) bitmap_clear::bitmap#0 ← ((byte*)) (word~) bitmap_clear::$3
|
||||
Eliminating Noop Cast (byte*) bitmap_plot::plotter#0 ← ((byte*)) (word~) bitmap_plot::$0
|
||||
Successful SSA optimization Pass2NopCastElimination
|
||||
@ -1464,9 +1753,9 @@ Resolved ranged next value bitmap_clear::x#1 ← ++ bitmap_clear::x#2 to ++
|
||||
Resolved ranged comparison value if(bitmap_clear::x#1!=rangelast(0,199)) goto bitmap_clear::@2 to (byte/word/signed word/dword/signed dword) 200
|
||||
Resolved ranged next value bitmap_clear::y#1 ← ++ bitmap_clear::y#4 to ++
|
||||
Resolved ranged comparison value if(bitmap_clear::y#1!=rangelast(0,39)) goto bitmap_clear::@1 to (byte/signed byte/word/signed word/dword/signed dword) 40
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) bitmap_init::@6
|
||||
Culled Empty Block (label) @11
|
||||
Culled Empty Block (label) @12
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@6
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
@ -1530,7 +1819,7 @@ Added new block during phi lifting bitmap_init::@10(between bitmap_init::@1 and
|
||||
Added new block during phi lifting bitmap_init::@11(between bitmap_init::@4 and bitmap_init::@3)
|
||||
Added new block during phi lifting bitmap_init::@12(between bitmap_init::@3 and bitmap_init::@4)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @14
|
||||
Adding NOP phi() at start of @15
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main::@3
|
||||
Adding NOP phi() at start of main::@4
|
||||
@ -1670,7 +1959,7 @@ Culled Empty Block (label) bitmap_init::@11
|
||||
Culled Empty Block (label) bitmap_init::@12
|
||||
Culled Empty Block (label) bitmap_init::@9
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @14
|
||||
Adding NOP phi() at start of @15
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main::@3
|
||||
Adding NOP phi() at start of main::@4
|
||||
@ -1683,14 +1972,14 @@ Adding NOP phi() at start of bitmap_init::@10
|
||||
FINAL CONTROL FLOW GRAPH
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@14
|
||||
@14: scope:[] from @begin
|
||||
to:@15
|
||||
@15: scope:[] from @begin
|
||||
[1] phi()
|
||||
[2] call main
|
||||
to:@end
|
||||
@end: scope:[] from @14
|
||||
@end: scope:[] from @15
|
||||
[3] phi()
|
||||
main: scope:[main] from @14
|
||||
main: scope:[main] from @15
|
||||
[4] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
[5] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
[6] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
@ -2052,14 +2341,86 @@ bitmap_init::@10: scope:[bitmap_init] from bitmap_init::@1
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte*) BITMAP
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) bitmap_clear()
|
||||
(word~) bitmap_clear::$3 2.0
|
||||
(byte*) bitmap_clear::bitmap
|
||||
@ -2483,15 +2844,15 @@ INITIAL ASM
|
||||
.const lines_cnt = 8
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @14 [phi:@begin->@14]
|
||||
b14_from_bbegin:
|
||||
jmp b14
|
||||
//SEG4 @14
|
||||
b14:
|
||||
//SEG3 [1] phi from @begin to @15 [phi:@begin->@15]
|
||||
b15_from_bbegin:
|
||||
jmp b15
|
||||
//SEG4 @15
|
||||
b15:
|
||||
//SEG5 [2] call main
|
||||
jsr main
|
||||
//SEG6 [3] phi from @14 to @end [phi:@14->@end]
|
||||
bend_from_b14:
|
||||
//SEG6 [3] phi from @15 to @end [phi:@15->@end]
|
||||
bend_from_b15:
|
||||
jmp bend
|
||||
//SEG7 @end
|
||||
bend:
|
||||
@ -3903,15 +4264,15 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.const lines_cnt = 8
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @14 [phi:@begin->@14]
|
||||
b14_from_bbegin:
|
||||
jmp b14
|
||||
//SEG4 @14
|
||||
b14:
|
||||
//SEG3 [1] phi from @begin to @15 [phi:@begin->@15]
|
||||
b15_from_bbegin:
|
||||
jmp b15
|
||||
//SEG4 @15
|
||||
b15:
|
||||
//SEG5 [2] call main
|
||||
jsr main
|
||||
//SEG6 [3] phi from @14 to @end [phi:@14->@end]
|
||||
bend_from_b14:
|
||||
//SEG6 [3] phi from @15 to @end [phi:@15->@end]
|
||||
bend_from_b15:
|
||||
jmp bend
|
||||
//SEG7 @end
|
||||
bend:
|
||||
@ -4858,7 +5219,7 @@ bitmap_init: {
|
||||
lines_y: .byte $a, $28, $3c, $50, $6e, $50, $3c, $28, $a
|
||||
|
||||
ASSEMBLER OPTIMIZATIONS
|
||||
Removing instruction jmp b14
|
||||
Removing instruction jmp b15
|
||||
Removing instruction jmp bend
|
||||
Removing instruction jmp b3
|
||||
Removing instruction jmp b4
|
||||
@ -4940,8 +5301,8 @@ Replacing label b1_from_b2 with b1
|
||||
Replacing label b4_from_b3 with b4
|
||||
Replacing label b3_from_b4 with b3
|
||||
Removing instruction bbegin:
|
||||
Removing instruction b14_from_bbegin:
|
||||
Removing instruction bend_from_b14:
|
||||
Removing instruction b15_from_bbegin:
|
||||
Removing instruction bend_from_b15:
|
||||
Removing instruction b3_from_main:
|
||||
Removing instruction b4_from_b3:
|
||||
Removing instruction init_screen_from_b4:
|
||||
@ -4976,7 +5337,7 @@ Removing instruction b4_from_b7:
|
||||
Removing instruction b10_from_b1:
|
||||
Removing instruction b2_from_b10:
|
||||
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||
Removing instruction b14:
|
||||
Removing instruction b15:
|
||||
Removing instruction bend:
|
||||
Removing instruction bitmap_init_from_main:
|
||||
Removing instruction b3:
|
||||
@ -5044,27 +5405,99 @@ Removing unreachable instruction jmp b2
|
||||
Succesful ASM optimization Pass5UnreachableCodeElimination
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(label) @14
|
||||
(label) @15
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte*) BITMAP
|
||||
(const byte*) BITMAP#0 BITMAP = ((byte*))(word/signed word/dword/signed dword) 8192
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(const byte*) D011#0 D011 = ((byte*))(word/dword/signed dword) 53265
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(const byte) VIC_BMM#0 VIC_BMM = (byte/signed byte/word/signed word/dword/signed dword) 32
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(const byte) VIC_DEN#0 VIC_DEN = (byte/signed byte/word/signed word/dword/signed dword) 16
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(const byte*) VIC_MEMORY#0 VIC_MEMORY = ((byte*))(word/dword/signed dword) 53272
|
||||
(byte) VIC_RSEL
|
||||
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) bitmap_clear()
|
||||
(word~) bitmap_clear::$3 $3 zp ZP_WORD:9 2.0
|
||||
(label) bitmap_clear::@1
|
||||
@ -5399,11 +5832,11 @@ Score: 221049
|
||||
.label BITMAP = $2000
|
||||
.const lines_cnt = 8
|
||||
//SEG2 @begin
|
||||
//SEG3 [1] phi from @begin to @14 [phi:@begin->@14]
|
||||
//SEG4 @14
|
||||
//SEG3 [1] phi from @begin to @15 [phi:@begin->@15]
|
||||
//SEG4 @15
|
||||
//SEG5 [2] call main
|
||||
jsr main
|
||||
//SEG6 [3] phi from @14 to @end [phi:@14->@end]
|
||||
//SEG6 [3] phi from @15 to @end [phi:@15->@end]
|
||||
//SEG7 @end
|
||||
//SEG8 main
|
||||
main: {
|
||||
|
@ -1,24 +1,96 @@
|
||||
(label) @14
|
||||
(label) @15
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte*) BITMAP
|
||||
(const byte*) BITMAP#0 BITMAP = ((byte*))(word/signed word/dword/signed dword) 8192
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(const byte*) D011#0 D011 = ((byte*))(word/dword/signed dword) 53265
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(const byte) VIC_BMM#0 VIC_BMM = (byte/signed byte/word/signed word/dword/signed dword) 32
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(const byte) VIC_DEN#0 VIC_DEN = (byte/signed byte/word/signed word/dword/signed dword) 16
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(const byte*) VIC_MEMORY#0 VIC_MEMORY = ((byte*))(word/dword/signed dword) 53272
|
||||
(byte) VIC_RSEL
|
||||
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) bitmap_clear()
|
||||
(word~) bitmap_clear::$3 $3 zp ZP_WORD:9 2.0
|
||||
(label) bitmap_clear::@1
|
||||
|
@ -1,13 +1,13 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@18
|
||||
@18: scope:[] from @begin
|
||||
to:@19
|
||||
@19: scope:[] from @begin
|
||||
[1] phi()
|
||||
[2] call main
|
||||
to:@end
|
||||
@end: scope:[] from @18
|
||||
@end: scope:[] from @19
|
||||
[3] phi()
|
||||
main: scope:[main] from @18
|
||||
main: scope:[main] from @19
|
||||
[4] phi()
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@1
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,12 +1,46 @@
|
||||
(label) @18
|
||||
(label) @19
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(const byte*) CHARGEN#0 CHARGEN = ((byte*))(word/dword/signed dword) 53248
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(const byte*) CIA1_PORT_A#0 CIA1_PORT_A = ((byte*))(word/dword/signed dword) 56320
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(const byte*) CIA1_PORT_B#0 CIA1_PORT_B = ((byte*))(word/dword/signed dword) 56321
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte) KEY_0
|
||||
(const byte) KEY_0#0 KEY_0 = (byte/signed byte/word/signed word/dword/signed dword) 35
|
||||
(byte) KEY_1
|
||||
@ -45,8 +79,13 @@
|
||||
(const byte) KEY_COLON#0 KEY_COLON = (byte/signed byte/word/signed word/dword/signed dword) 45
|
||||
(byte) KEY_COMMA
|
||||
(const byte) KEY_COMMA#0 KEY_COMMA = (byte/signed byte/word/signed word/dword/signed dword) 47
|
||||
(byte) KEY_COMMODORE
|
||||
(byte) KEY_CRSR_DOWN
|
||||
(byte) KEY_CRSR_RIGHT
|
||||
(byte) KEY_CTRL
|
||||
(byte) KEY_D
|
||||
(const byte) KEY_D#0 KEY_D = (byte/signed byte/word/signed word/dword/signed dword) 18
|
||||
(byte) KEY_DEL
|
||||
(byte) KEY_DOT
|
||||
(const byte) KEY_DOT#0 KEY_DOT = (byte/signed byte/word/signed word/dword/signed dword) 44
|
||||
(byte) KEY_E
|
||||
@ -67,6 +106,7 @@
|
||||
(const byte) KEY_G#0 KEY_G = (byte/signed byte/word/signed word/dword/signed dword) 26
|
||||
(byte) KEY_H
|
||||
(const byte) KEY_H#0 KEY_H = (byte/signed byte/word/signed word/dword/signed dword) 29
|
||||
(byte) KEY_HOME
|
||||
(byte) KEY_I
|
||||
(const byte) KEY_I#0 KEY_I = (byte/signed byte/word/signed word/dword/signed dword) 33
|
||||
(byte) KEY_J
|
||||
@ -81,6 +121,11 @@
|
||||
(const byte) KEY_M#0 KEY_M = (byte/signed byte/word/signed word/dword/signed dword) 36
|
||||
(byte) KEY_MINUS
|
||||
(const byte) KEY_MINUS#0 KEY_MINUS = (byte/signed byte/word/signed word/dword/signed dword) 43
|
||||
(byte) KEY_MODIFIER_COMMODORE
|
||||
(byte) KEY_MODIFIER_CTRL
|
||||
(byte) KEY_MODIFIER_LSHIFT
|
||||
(byte) KEY_MODIFIER_RSHIFT
|
||||
(byte) KEY_MODIFIER_SHIFT
|
||||
(byte) KEY_N
|
||||
(const byte) KEY_N#0 KEY_N = (byte/signed byte/word/signed word/dword/signed dword) 39
|
||||
(byte) KEY_O
|
||||
@ -95,6 +140,9 @@
|
||||
(const byte) KEY_Q#0 KEY_Q = (byte/signed byte/word/signed word/dword/signed dword) 62
|
||||
(byte) KEY_R
|
||||
(const byte) KEY_R#0 KEY_R = (byte/signed byte/word/signed word/dword/signed dword) 17
|
||||
(byte) KEY_RETURN
|
||||
(byte) KEY_RSHIFT
|
||||
(byte) KEY_RUNSTOP
|
||||
(byte) KEY_S
|
||||
(const byte) KEY_S#0 KEY_S = (byte/signed byte/word/signed word/dword/signed dword) 13
|
||||
(byte) KEY_SEMICOLON
|
||||
@ -117,12 +165,55 @@
|
||||
(const byte) KEY_Y#0 KEY_Y = (byte/signed byte/word/signed word/dword/signed dword) 25
|
||||
(byte) KEY_Z
|
||||
(const byte) KEY_Z#0 KEY_Z = (byte/signed byte/word/signed word/dword/signed dword) 12
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(byte[]) keyboard_char_keycodes
|
||||
(const byte[]) keyboard_char_keycodes#0 keyboard_char_keycodes = { (const byte) KEY_AT#0, (const byte) KEY_A#0, (const byte) KEY_B#0, (const byte) KEY_C#0, (const byte) KEY_D#0, (const byte) KEY_E#0, (const byte) KEY_F#0, (const byte) KEY_G#0, (const byte) KEY_H#0, (const byte) KEY_I#0, (const byte) KEY_J#0, (const byte) KEY_K#0, (const byte) KEY_L#0, (const byte) KEY_M#0, (const byte) KEY_N#0, (const byte) KEY_O#0, (const byte) KEY_P#0, (const byte) KEY_Q#0, (const byte) KEY_R#0, (const byte) KEY_S#0, (const byte) KEY_T#0, (const byte) KEY_U#0, (const byte) KEY_V#0, (const byte) KEY_W#0, (const byte) KEY_X#0, (const byte) KEY_Y#0, (const byte) KEY_Z#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (const byte) KEY_POUND#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (const byte) KEY_ARROW_UP#0, (const byte) KEY_ARROW_LEFT#0, (const byte) KEY_SPACE#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (const byte) KEY_ASTERISK#0, (const byte) KEY_PLUS#0, (const byte) KEY_COMMA#0, (const byte) KEY_MINUS#0, (const byte) KEY_DOT#0, (const byte) KEY_SLASH#0, (const byte) KEY_0#0, (const byte) KEY_1#0, (const byte) KEY_2#0, (const byte) KEY_3#0, (const byte) KEY_4#0, (const byte) KEY_5#0, (const byte) KEY_6#0, (const byte) KEY_7#0, (const byte) KEY_8#0, (const byte) KEY_9#0, (const byte) KEY_COLON#0, (const byte) KEY_SEMICOLON#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (const byte) KEY_EQUALS#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 }
|
||||
(byte[8]) keyboard_events
|
||||
(byte) keyboard_events_size
|
||||
(byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch)
|
||||
(label) keyboard_get_keycode::@return
|
||||
(byte) keyboard_get_keycode::ch
|
||||
@ -161,6 +252,8 @@
|
||||
(byte) keyboard_matrix_read::rowid#0 reg byte x 4.0
|
||||
(byte[8]) keyboard_matrix_row_bitmask
|
||||
(const byte[8]) keyboard_matrix_row_bitmask#0 keyboard_matrix_row_bitmask = { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 }
|
||||
(byte) keyboard_modifiers
|
||||
(byte[8]) keyboard_scan_values
|
||||
(void()) main()
|
||||
(byte~) main::$15 reg byte a 22.0
|
||||
(byte~) main::$18 reg byte a 22.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label print_screen = $400
|
||||
.label print_line_cursor = $400
|
||||
.label ap = $fd
|
||||
.label bp = $fe
|
||||
.label cp = $ff
|
||||
@ -211,9 +211,9 @@ init_screen: {
|
||||
}
|
||||
print_cls: {
|
||||
.label sc = 2
|
||||
lda #<print_screen
|
||||
lda #<print_line_cursor
|
||||
sta sc
|
||||
lda #>print_screen
|
||||
lda #>print_line_cursor
|
||||
sta sc+1
|
||||
b1:
|
||||
lda #' '
|
||||
@ -224,10 +224,10 @@ print_cls: {
|
||||
inc sc+1
|
||||
!:
|
||||
lda sc+1
|
||||
cmp #>print_screen+$3e8
|
||||
cmp #>print_line_cursor+$3e8
|
||||
bne b1
|
||||
lda sc
|
||||
cmp #<print_screen+$3e8
|
||||
cmp #<print_line_cursor+$3e8
|
||||
bne b1
|
||||
rts
|
||||
}
|
||||
|
@ -153,10 +153,10 @@ print_cls: scope:[print_cls] from init_screen
|
||||
[78] phi()
|
||||
to:print_cls::@1
|
||||
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
|
||||
[79] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_screen#0 print_cls::@1/(byte*) print_cls::sc#1 )
|
||||
[79] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_line_cursor#0 print_cls::@1/(byte*) print_cls::sc#1 )
|
||||
[80] *((byte*) print_cls::sc#2) ← (byte) ' '
|
||||
[81] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
|
||||
[82] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1
|
||||
[82] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1
|
||||
to:print_cls::@return
|
||||
print_cls::@return: scope:[print_cls] from print_cls::@1
|
||||
[83] return
|
||||
|
@ -2,6 +2,8 @@
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
|
||||
(byte*) print_line_cursor#0 ← (byte*) print_screen#0
|
||||
(byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0
|
||||
to:@12
|
||||
print_sbyte_at: scope:[print_sbyte_at] from main::@1 main::@10 main::@2
|
||||
(byte*) print_sbyte_at::at#6 ← phi( main::@1/(byte*) print_sbyte_at::at#0 main::@10/(byte*) print_sbyte_at::at#2 main::@2/(byte*) print_sbyte_at::at#1 )
|
||||
@ -48,7 +50,9 @@ print_sbyte_at::@return: scope:[print_sbyte_at] from print_sbyte_at::@7
|
||||
return
|
||||
to:@return
|
||||
@12: scope:[] from @begin
|
||||
(byte*) print_screen#8 ← phi( @begin/(byte*) print_screen#0 )
|
||||
(byte*) print_screen#9 ← phi( @begin/(byte*) print_screen#0 )
|
||||
(byte*) print_char_cursor#25 ← phi( @begin/(byte*) print_char_cursor#0 )
|
||||
(byte*) print_line_cursor#25 ← phi( @begin/(byte*) print_line_cursor#0 )
|
||||
(byte[]) print_hextab#0 ← (const string) $4
|
||||
to:@19
|
||||
print_byte_at: scope:[print_byte_at] from print_sbyte_at::@2
|
||||
@ -82,7 +86,7 @@ print_char_at::@return: scope:[print_char_at] from print_char_at
|
||||
return
|
||||
to:@return
|
||||
print_cls: scope:[print_cls] from init_screen
|
||||
(byte*) print_screen#1 ← phi( init_screen/(byte*) print_screen#3 )
|
||||
(byte*) print_screen#1 ← phi( init_screen/(byte*) print_screen#4 )
|
||||
(byte*) print_cls::sc#0 ← (byte*) print_screen#1
|
||||
to:print_cls::@1
|
||||
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
|
||||
@ -93,12 +97,23 @@ print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
|
||||
(byte*~) print_cls::$0 ← (byte*) print_screen#2 + (word/signed word/dword/signed dword) 1000
|
||||
(bool~) print_cls::$1 ← (byte*) print_cls::sc#1 != (byte*~) print_cls::$0
|
||||
if((bool~) print_cls::$1) goto print_cls::@1
|
||||
to:print_cls::@2
|
||||
print_cls::@2: scope:[print_cls] from print_cls::@1
|
||||
(byte*) print_screen#3 ← phi( print_cls::@1/(byte*) print_screen#2 )
|
||||
(byte*) print_line_cursor#1 ← (byte*) print_screen#3
|
||||
(byte*) print_char_cursor#1 ← (byte*) print_line_cursor#1
|
||||
to:print_cls::@return
|
||||
print_cls::@return: scope:[print_cls] from print_cls::@1
|
||||
print_cls::@return: scope:[print_cls] from print_cls::@2
|
||||
(byte*) print_char_cursor#8 ← phi( print_cls::@2/(byte*) print_char_cursor#1 )
|
||||
(byte*) print_line_cursor#8 ← phi( print_cls::@2/(byte*) print_line_cursor#1 )
|
||||
(byte*) print_line_cursor#2 ← (byte*) print_line_cursor#8
|
||||
(byte*) print_char_cursor#2 ← (byte*) print_char_cursor#8
|
||||
return
|
||||
to:@return
|
||||
@19: scope:[] from @12
|
||||
(byte*) print_screen#7 ← phi( @12/(byte*) print_screen#8 )
|
||||
(byte*) print_screen#8 ← phi( @12/(byte*) print_screen#9 )
|
||||
(byte*) print_char_cursor#24 ← phi( @12/(byte*) print_char_cursor#25 )
|
||||
(byte*) print_line_cursor#24 ← phi( @12/(byte*) print_line_cursor#25 )
|
||||
(signed byte/signed word/signed dword~) $0 ← - (byte/signed byte/word/signed word/dword/signed dword) 95
|
||||
(signed byte/signed word/signed dword~) $1 ← - (byte/signed byte/word/signed word/dword/signed dword) 64
|
||||
(signed byte/signed word/signed dword~) $2 ← - (byte/signed byte/word/signed word/dword/signed dword) 32
|
||||
@ -109,19 +124,27 @@ main: scope:[main] from @22
|
||||
(signed byte*) cp#12 ← phi( @22/(signed byte*) cp#13 )
|
||||
(signed byte*) bp#12 ← phi( @22/(signed byte*) bp#13 )
|
||||
(signed byte*) ap#12 ← phi( @22/(signed byte*) ap#13 )
|
||||
(byte*) print_screen#4 ← phi( @22/(byte*) print_screen#5 )
|
||||
(byte*) print_screen#5 ← phi( @22/(byte*) print_screen#6 )
|
||||
(byte*) print_char_cursor#14 ← phi( @22/(byte*) print_char_cursor#18 )
|
||||
(byte*) print_line_cursor#14 ← phi( @22/(byte*) print_line_cursor#18 )
|
||||
call init_screen
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main
|
||||
(signed byte*) cp#11 ← phi( main/(signed byte*) cp#12 )
|
||||
(signed byte*) bp#11 ← phi( main/(signed byte*) bp#12 )
|
||||
(signed byte*) ap#11 ← phi( main/(signed byte*) ap#12 )
|
||||
(byte*) print_char_cursor#9 ← phi( main/(byte*) print_char_cursor#6 )
|
||||
(byte*) print_line_cursor#9 ← phi( main/(byte*) print_line_cursor#6 )
|
||||
(byte*) print_line_cursor#3 ← (byte*) print_line_cursor#9
|
||||
(byte*) print_char_cursor#3 ← (byte*) print_char_cursor#9
|
||||
(byte*) main::at_line#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
|
||||
(byte*~) main::$1 ← (byte*) main::at_line#0 + (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte*) main::at#0 ← (byte*~) main::$1
|
||||
(byte) main::k#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main::@7 main::@8
|
||||
(byte*) print_char_cursor#31 ← phi( main::@7/(byte*) print_char_cursor#3 main::@8/(byte*) print_char_cursor#30 )
|
||||
(byte*) print_line_cursor#31 ← phi( main::@7/(byte*) print_line_cursor#3 main::@8/(byte*) print_line_cursor#30 )
|
||||
(signed byte*) cp#10 ← phi( main::@7/(signed byte*) cp#11 main::@8/(signed byte*) cp#9 )
|
||||
(signed byte*) bp#10 ← phi( main::@7/(signed byte*) bp#11 main::@8/(signed byte*) bp#9 )
|
||||
(signed byte*) ap#10 ← phi( main::@7/(signed byte*) ap#11 main::@8/(signed byte*) ap#9 )
|
||||
@ -133,6 +156,8 @@ main::@1: scope:[main] from main::@7 main::@8
|
||||
call print_sbyte_at
|
||||
to:main::@8
|
||||
main::@8: scope:[main] from main::@1
|
||||
(byte*) print_char_cursor#30 ← phi( main::@1/(byte*) print_char_cursor#31 )
|
||||
(byte*) print_line_cursor#30 ← phi( main::@1/(byte*) print_line_cursor#31 )
|
||||
(signed byte*) cp#9 ← phi( main::@1/(signed byte*) cp#10 )
|
||||
(signed byte*) bp#9 ← phi( main::@1/(signed byte*) bp#10 )
|
||||
(signed byte*) ap#9 ← phi( main::@1/(signed byte*) ap#10 )
|
||||
@ -145,6 +170,8 @@ main::@8: scope:[main] from main::@1
|
||||
if((bool~) main::$3) goto main::@1
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@8
|
||||
(byte*) print_char_cursor#29 ← phi( main::@8/(byte*) print_char_cursor#30 )
|
||||
(byte*) print_line_cursor#29 ← phi( main::@8/(byte*) print_line_cursor#30 )
|
||||
(signed byte*) cp#7 ← phi( main::@8/(signed byte*) cp#9 )
|
||||
(signed byte*) bp#7 ← phi( main::@8/(signed byte*) bp#9 )
|
||||
(signed byte*) ap#7 ← phi( main::@8/(signed byte*) ap#9 )
|
||||
@ -152,6 +179,8 @@ main::@4: scope:[main] from main::@8
|
||||
(byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@4 main::@5
|
||||
(byte*) print_char_cursor#28 ← phi( main::@4/(byte*) print_char_cursor#29 main::@5/(byte*) print_char_cursor#15 )
|
||||
(byte*) print_line_cursor#28 ← phi( main::@4/(byte*) print_line_cursor#29 main::@5/(byte*) print_line_cursor#15 )
|
||||
(signed byte*) cp#5 ← phi( main::@4/(signed byte*) cp#7 main::@5/(signed byte*) cp#8 )
|
||||
(signed byte*) bp#5 ← phi( main::@4/(signed byte*) bp#7 main::@5/(signed byte*) bp#8 )
|
||||
(signed byte*) ap#5 ← phi( main::@4/(signed byte*) ap#7 main::@5/(signed byte*) ap#8 )
|
||||
@ -164,6 +193,8 @@ main::@2: scope:[main] from main::@4 main::@5
|
||||
call print_sbyte_at
|
||||
to:main::@9
|
||||
main::@9: scope:[main] from main::@2
|
||||
(byte*) print_char_cursor#27 ← phi( main::@2/(byte*) print_char_cursor#28 )
|
||||
(byte*) print_line_cursor#27 ← phi( main::@2/(byte*) print_line_cursor#28 )
|
||||
(byte*) main::at_line#10 ← phi( main::@2/(byte*) main::at_line#1 )
|
||||
(signed byte*) cp#4 ← phi( main::@2/(signed byte*) cp#5 )
|
||||
(signed byte*) bp#4 ← phi( main::@2/(signed byte*) bp#5 )
|
||||
@ -173,6 +204,8 @@ main::@9: scope:[main] from main::@2
|
||||
(byte) main::j#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@11 main::@9
|
||||
(byte*) print_char_cursor#26 ← phi( main::@11/(byte*) print_char_cursor#19 main::@9/(byte*) print_char_cursor#27 )
|
||||
(byte*) print_line_cursor#26 ← phi( main::@11/(byte*) print_line_cursor#19 main::@9/(byte*) print_line_cursor#27 )
|
||||
(byte*) main::at_line#9 ← phi( main::@11/(byte*) main::at_line#6 main::@9/(byte*) main::at_line#10 )
|
||||
(signed byte*) cp#2 ← phi( main::@11/(signed byte*) cp#3 main::@9/(signed byte*) cp#4 )
|
||||
(signed byte*) bp#2 ← phi( main::@11/(signed byte*) bp#3 main::@9/(signed byte*) bp#4 )
|
||||
@ -187,6 +220,8 @@ main::@3: scope:[main] from main::@11 main::@9
|
||||
(signed byte) fmul8::return#0 ← (signed byte) fmul8::return#2
|
||||
to:main::@10
|
||||
main::@10: scope:[main] from main::@3
|
||||
(byte*) print_char_cursor#22 ← phi( main::@3/(byte*) print_char_cursor#26 )
|
||||
(byte*) print_line_cursor#22 ← phi( main::@3/(byte*) print_line_cursor#26 )
|
||||
(byte*) main::at_line#8 ← phi( main::@3/(byte*) main::at_line#9 )
|
||||
(signed byte*) cp#6 ← phi( main::@3/(signed byte*) cp#2 )
|
||||
(signed byte*) bp#6 ← phi( main::@3/(signed byte*) bp#2 )
|
||||
@ -202,6 +237,8 @@ main::@10: scope:[main] from main::@3
|
||||
call print_sbyte_at
|
||||
to:main::@11
|
||||
main::@11: scope:[main] from main::@10
|
||||
(byte*) print_char_cursor#19 ← phi( main::@10/(byte*) print_char_cursor#22 )
|
||||
(byte*) print_line_cursor#19 ← phi( main::@10/(byte*) print_line_cursor#22 )
|
||||
(byte*) main::at_line#6 ← phi( main::@10/(byte*) main::at_line#8 )
|
||||
(signed byte*) cp#3 ← phi( main::@10/(signed byte*) cp#6 )
|
||||
(signed byte*) bp#3 ← phi( main::@10/(signed byte*) bp#6 )
|
||||
@ -217,6 +254,8 @@ main::@5: scope:[main] from main::@11
|
||||
(signed byte*) cp#8 ← phi( main::@11/(signed byte*) cp#3 )
|
||||
(signed byte*) bp#8 ← phi( main::@11/(signed byte*) bp#3 )
|
||||
(signed byte*) ap#8 ← phi( main::@11/(signed byte*) ap#3 )
|
||||
(byte*) print_char_cursor#15 ← phi( main::@11/(byte*) print_char_cursor#19 )
|
||||
(byte*) print_line_cursor#15 ← phi( main::@11/(byte*) print_line_cursor#19 )
|
||||
(byte*) main::at_line#4 ← phi( main::@11/(byte*) main::at_line#6 )
|
||||
(byte) main::i#4 ← phi( main::@11/(byte) main::i#5 )
|
||||
(byte) main::i#1 ← (byte) main::i#4 + rangenext(0,8)
|
||||
@ -224,18 +263,30 @@ main::@5: scope:[main] from main::@11
|
||||
if((bool~) main::$8) goto main::@2
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@5
|
||||
(byte*) print_char_cursor#10 ← phi( main::@5/(byte*) print_char_cursor#15 )
|
||||
(byte*) print_line_cursor#10 ← phi( main::@5/(byte*) print_line_cursor#15 )
|
||||
(byte*) print_line_cursor#4 ← (byte*) print_line_cursor#10
|
||||
(byte*) print_char_cursor#4 ← (byte*) print_char_cursor#10
|
||||
return
|
||||
to:@return
|
||||
init_screen: scope:[init_screen] from main
|
||||
(byte*) print_screen#3 ← phi( main/(byte*) print_screen#4 )
|
||||
(byte*) print_char_cursor#16 ← phi( main/(byte*) print_char_cursor#14 )
|
||||
(byte*) print_line_cursor#16 ← phi( main/(byte*) print_line_cursor#14 )
|
||||
(byte*) print_screen#4 ← phi( main/(byte*) print_screen#5 )
|
||||
call print_cls
|
||||
to:init_screen::@5
|
||||
init_screen::@5: scope:[init_screen] from init_screen
|
||||
(byte*) print_char_cursor#11 ← phi( init_screen/(byte*) print_char_cursor#2 )
|
||||
(byte*) print_line_cursor#11 ← phi( init_screen/(byte*) print_line_cursor#2 )
|
||||
(byte*) print_line_cursor#5 ← (byte*) print_line_cursor#11
|
||||
(byte*) print_char_cursor#5 ← (byte*) print_char_cursor#11
|
||||
(byte*) init_screen::COLS#0 ← ((byte*)) (word/dword/signed dword) 55296
|
||||
(byte) init_screen::WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) init_screen::l#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:init_screen::@1
|
||||
init_screen::@1: scope:[init_screen] from init_screen::@1 init_screen::@5
|
||||
(byte*) print_char_cursor#23 ← phi( init_screen::@1/(byte*) print_char_cursor#23 init_screen::@5/(byte*) print_char_cursor#5 )
|
||||
(byte*) print_line_cursor#23 ← phi( init_screen::@1/(byte*) print_line_cursor#23 init_screen::@5/(byte*) print_line_cursor#5 )
|
||||
(byte) init_screen::l#2 ← phi( init_screen::@1/(byte) init_screen::l#1 init_screen::@5/(byte) init_screen::l#0 )
|
||||
(byte*) init_screen::COLS#2 ← phi( init_screen::@1/(byte*) init_screen::COLS#2 init_screen::@5/(byte*) init_screen::COLS#0 )
|
||||
(byte) init_screen::WHITE#1 ← phi( init_screen::@1/(byte) init_screen::WHITE#1 init_screen::@5/(byte) init_screen::WHITE#0 )
|
||||
@ -245,11 +296,15 @@ init_screen::@1: scope:[init_screen] from init_screen::@1 init_screen::@5
|
||||
if((bool~) init_screen::$1) goto init_screen::@1
|
||||
to:init_screen::@3
|
||||
init_screen::@3: scope:[init_screen] from init_screen::@1
|
||||
(byte*) print_char_cursor#20 ← phi( init_screen::@1/(byte*) print_char_cursor#23 )
|
||||
(byte*) print_line_cursor#20 ← phi( init_screen::@1/(byte*) print_line_cursor#23 )
|
||||
(byte*) init_screen::COLS#4 ← phi( init_screen::@1/(byte*) init_screen::COLS#2 )
|
||||
(byte) init_screen::WHITE#3 ← phi( init_screen::@1/(byte) init_screen::WHITE#1 )
|
||||
(byte) init_screen::m#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:init_screen::@2
|
||||
init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3
|
||||
(byte*) print_char_cursor#17 ← phi( init_screen::@2/(byte*) print_char_cursor#17 init_screen::@3/(byte*) print_char_cursor#20 )
|
||||
(byte*) print_line_cursor#17 ← phi( init_screen::@2/(byte*) print_line_cursor#17 init_screen::@3/(byte*) print_line_cursor#20 )
|
||||
(byte) init_screen::m#2 ← phi( init_screen::@2/(byte) init_screen::m#1 init_screen::@3/(byte) init_screen::m#0 )
|
||||
(byte*) init_screen::COLS#3 ← phi( init_screen::@2/(byte*) init_screen::COLS#1 init_screen::@3/(byte*) init_screen::COLS#4 )
|
||||
(byte) init_screen::WHITE#2 ← phi( init_screen::@2/(byte) init_screen::WHITE#2 init_screen::@3/(byte) init_screen::WHITE#3 )
|
||||
@ -263,10 +318,16 @@ init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3
|
||||
if((bool~) init_screen::$2) goto init_screen::@2
|
||||
to:init_screen::@return
|
||||
init_screen::@return: scope:[init_screen] from init_screen::@2
|
||||
(byte*) print_char_cursor#12 ← phi( init_screen::@2/(byte*) print_char_cursor#17 )
|
||||
(byte*) print_line_cursor#12 ← phi( init_screen::@2/(byte*) print_line_cursor#17 )
|
||||
(byte*) print_line_cursor#6 ← (byte*) print_line_cursor#12
|
||||
(byte*) print_char_cursor#6 ← (byte*) print_char_cursor#12
|
||||
return
|
||||
to:@return
|
||||
@21: scope:[] from @19
|
||||
(byte*) print_screen#6 ← phi( @19/(byte*) print_screen#7 )
|
||||
(byte*) print_screen#7 ← phi( @19/(byte*) print_screen#8 )
|
||||
(byte*) print_char_cursor#21 ← phi( @19/(byte*) print_char_cursor#24 )
|
||||
(byte*) print_line_cursor#21 ← phi( @19/(byte*) print_line_cursor#24 )
|
||||
(signed byte*) ap#0 ← ((signed byte*)) (byte/word/signed word/dword/signed dword) 253
|
||||
(signed byte*) bp#0 ← ((signed byte*)) (byte/word/signed word/dword/signed dword) 254
|
||||
(signed byte*) cp#0 ← ((signed byte*)) (byte/word/signed word/dword/signed dword) 255
|
||||
@ -291,7 +352,9 @@ fmul8::@return: scope:[fmul8] from fmul8
|
||||
(signed byte*) cp#13 ← phi( @21/(signed byte*) cp#0 )
|
||||
(signed byte*) bp#13 ← phi( @21/(signed byte*) bp#0 )
|
||||
(signed byte*) ap#13 ← phi( @21/(signed byte*) ap#0 )
|
||||
(byte*) print_screen#5 ← phi( @21/(byte*) print_screen#6 )
|
||||
(byte*) print_screen#6 ← phi( @21/(byte*) print_screen#7 )
|
||||
(byte*) print_char_cursor#18 ← phi( @21/(byte*) print_char_cursor#21 )
|
||||
(byte*) print_line_cursor#18 ← phi( @21/(byte*) print_line_cursor#21 )
|
||||
(byte*) mulf_sqr1#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192
|
||||
(byte*) mulf_sqr2#0 ← ((byte*)) (word/signed word/dword/signed dword) 8704
|
||||
kickasm(location (byte*) mulf_sqr1#0) {{ .for(var i=0;i<$200;i++) {
|
||||
@ -309,6 +372,10 @@ fmul8::@return: scope:[fmul8] from fmul8
|
||||
call main
|
||||
to:@23
|
||||
@23: scope:[] from @22
|
||||
(byte*) print_char_cursor#13 ← phi( @22/(byte*) print_char_cursor#4 )
|
||||
(byte*) print_line_cursor#13 ← phi( @22/(byte*) print_line_cursor#4 )
|
||||
(byte*) print_line_cursor#7 ← (byte*) print_line_cursor#13
|
||||
(byte*) print_char_cursor#7 ← (byte*) print_char_cursor#13
|
||||
to:@end
|
||||
@end: scope:[] from @23
|
||||
|
||||
@ -506,10 +573,44 @@ SYMBOL TABLE SSA
|
||||
(byte) print_char_at::ch#2
|
||||
(byte) print_char_at::ch#3
|
||||
(byte) print_char_at::ch#4
|
||||
(byte*) print_char_cursor
|
||||
(byte*) print_char_cursor#0
|
||||
(byte*) print_char_cursor#1
|
||||
(byte*) print_char_cursor#10
|
||||
(byte*) print_char_cursor#11
|
||||
(byte*) print_char_cursor#12
|
||||
(byte*) print_char_cursor#13
|
||||
(byte*) print_char_cursor#14
|
||||
(byte*) print_char_cursor#15
|
||||
(byte*) print_char_cursor#16
|
||||
(byte*) print_char_cursor#17
|
||||
(byte*) print_char_cursor#18
|
||||
(byte*) print_char_cursor#19
|
||||
(byte*) print_char_cursor#2
|
||||
(byte*) print_char_cursor#20
|
||||
(byte*) print_char_cursor#21
|
||||
(byte*) print_char_cursor#22
|
||||
(byte*) print_char_cursor#23
|
||||
(byte*) print_char_cursor#24
|
||||
(byte*) print_char_cursor#25
|
||||
(byte*) print_char_cursor#26
|
||||
(byte*) print_char_cursor#27
|
||||
(byte*) print_char_cursor#28
|
||||
(byte*) print_char_cursor#29
|
||||
(byte*) print_char_cursor#3
|
||||
(byte*) print_char_cursor#30
|
||||
(byte*) print_char_cursor#31
|
||||
(byte*) print_char_cursor#4
|
||||
(byte*) print_char_cursor#5
|
||||
(byte*) print_char_cursor#6
|
||||
(byte*) print_char_cursor#7
|
||||
(byte*) print_char_cursor#8
|
||||
(byte*) print_char_cursor#9
|
||||
(void()) print_cls()
|
||||
(byte*~) print_cls::$0
|
||||
(bool~) print_cls::$1
|
||||
(label) print_cls::@1
|
||||
(label) print_cls::@2
|
||||
(label) print_cls::@return
|
||||
(byte*) print_cls::sc
|
||||
(byte*) print_cls::sc#0
|
||||
@ -517,6 +618,39 @@ SYMBOL TABLE SSA
|
||||
(byte*) print_cls::sc#2
|
||||
(byte[]) print_hextab
|
||||
(byte[]) print_hextab#0
|
||||
(byte*) print_line_cursor
|
||||
(byte*) print_line_cursor#0
|
||||
(byte*) print_line_cursor#1
|
||||
(byte*) print_line_cursor#10
|
||||
(byte*) print_line_cursor#11
|
||||
(byte*) print_line_cursor#12
|
||||
(byte*) print_line_cursor#13
|
||||
(byte*) print_line_cursor#14
|
||||
(byte*) print_line_cursor#15
|
||||
(byte*) print_line_cursor#16
|
||||
(byte*) print_line_cursor#17
|
||||
(byte*) print_line_cursor#18
|
||||
(byte*) print_line_cursor#19
|
||||
(byte*) print_line_cursor#2
|
||||
(byte*) print_line_cursor#20
|
||||
(byte*) print_line_cursor#21
|
||||
(byte*) print_line_cursor#22
|
||||
(byte*) print_line_cursor#23
|
||||
(byte*) print_line_cursor#24
|
||||
(byte*) print_line_cursor#25
|
||||
(byte*) print_line_cursor#26
|
||||
(byte*) print_line_cursor#27
|
||||
(byte*) print_line_cursor#28
|
||||
(byte*) print_line_cursor#29
|
||||
(byte*) print_line_cursor#3
|
||||
(byte*) print_line_cursor#30
|
||||
(byte*) print_line_cursor#31
|
||||
(byte*) print_line_cursor#4
|
||||
(byte*) print_line_cursor#5
|
||||
(byte*) print_line_cursor#6
|
||||
(byte*) print_line_cursor#7
|
||||
(byte*) print_line_cursor#8
|
||||
(byte*) print_line_cursor#9
|
||||
(void()) print_sbyte_at((signed byte) print_sbyte_at::b , (byte*) print_sbyte_at::at)
|
||||
(bool~) print_sbyte_at::$0
|
||||
(signed byte~) print_sbyte_at::$3
|
||||
@ -560,25 +694,28 @@ SYMBOL TABLE SSA
|
||||
(byte*) print_screen#6
|
||||
(byte*) print_screen#7
|
||||
(byte*) print_screen#8
|
||||
(byte*) print_screen#9
|
||||
(signed byte[]) vals
|
||||
(signed byte[]) vals#0
|
||||
|
||||
Culled Empty Block (label) print_sbyte_at::@7
|
||||
Culled Empty Block (label) print_byte_at::@2
|
||||
Culled Empty Block (label) @23
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#25 (byte*) print_char_cursor#25 (byte*) print_screen#9 (byte*) print_line_cursor#24 (byte*) print_char_cursor#24 (byte*) print_screen#8 (byte*) print_line_cursor#21 (byte*) print_char_cursor#21 (byte*) print_screen#7 (byte*) print_line_cursor#18 (byte*) print_char_cursor#18 (byte*) print_screen#6
|
||||
Alias (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#6 (byte*) print_sbyte_at::at#7 (byte*) print_sbyte_at::at#4 (byte*) print_sbyte_at::at#8
|
||||
Alias (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#7 (signed byte) print_sbyte_at::b#5 (signed byte) print_sbyte_at::b#9 (signed byte) print_sbyte_at::b#8
|
||||
Alias (signed byte) print_sbyte_at::b#0 = (signed byte~) print_sbyte_at::$3
|
||||
Alias (byte) print_byte_at::b#0 = (byte~) print_sbyte_at::$4
|
||||
Alias (byte*) print_byte_at::at#0 = (byte*~) print_sbyte_at::$5
|
||||
Alias (byte*) print_screen#0 = (byte*) print_screen#8 (byte*) print_screen#7 (byte*) print_screen#6 (byte*) print_screen#5
|
||||
Alias (byte) print_byte_at::b#1 = (byte) print_byte_at::b#2
|
||||
Alias (byte*) print_byte_at::at#1 = (byte*) print_byte_at::at#2
|
||||
Alias (byte*) print_char_at::at#3 = (byte*~) print_byte_at::$3
|
||||
Alias (byte*) print_line_cursor#1 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_char_cursor#1 (byte*) print_line_cursor#8 (byte*) print_char_cursor#8 (byte*) print_line_cursor#2 (byte*) print_char_cursor#2
|
||||
Alias (signed byte*) ap#11 = (signed byte*) ap#12
|
||||
Alias (signed byte*) bp#11 = (signed byte*) bp#12
|
||||
Alias (signed byte*) cp#11 = (signed byte*) cp#12
|
||||
Alias (byte*) print_line_cursor#3 = (byte*) print_line_cursor#9
|
||||
Alias (byte*) print_char_cursor#3 = (byte*) print_char_cursor#9
|
||||
Alias (byte*) main::at#0 = (byte*~) main::$1
|
||||
Alias (byte*) main::at#4 = (byte*) main::at#5
|
||||
Alias (byte) main::k#2 = (byte) main::k#3
|
||||
@ -586,11 +723,15 @@ Alias (byte*) main::at_line#3 = (byte*) main::at_line#5 (byte*) main::at_line#7
|
||||
Alias (signed byte*) ap#10 = (signed byte*) ap#9 (signed byte*) ap#7
|
||||
Alias (signed byte*) bp#10 = (signed byte*) bp#9 (signed byte*) bp#7
|
||||
Alias (signed byte*) cp#10 = (signed byte*) cp#9 (signed byte*) cp#7
|
||||
Alias (byte*) print_line_cursor#29 = (byte*) print_line_cursor#30 (byte*) print_line_cursor#31
|
||||
Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#30 (byte*) print_char_cursor#31
|
||||
Alias (byte*) main::at#2 = (byte*) main::at_line#1 (byte*) main::at#9 (byte*) main::at_line#10
|
||||
Alias (byte) main::i#2 = (byte) main::i#6
|
||||
Alias (signed byte*) ap#4 = (signed byte*) ap#5
|
||||
Alias (signed byte*) bp#4 = (signed byte*) bp#5
|
||||
Alias (signed byte*) cp#4 = (signed byte*) cp#5
|
||||
Alias (byte*) print_line_cursor#27 = (byte*) print_line_cursor#28
|
||||
Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#28
|
||||
Alias (signed byte) fmul8::return#0 = (signed byte) fmul8::return#3
|
||||
Alias (byte*) main::at#3 = (byte*) main::at#7 (byte*) main::at#8
|
||||
Alias (byte) main::j#2 = (byte) main::j#4 (byte) main::j#3
|
||||
@ -599,56 +740,92 @@ Alias (signed byte*) ap#2 = (signed byte*) ap#6 (signed byte*) ap#3 (signed byte
|
||||
Alias (signed byte*) bp#2 = (signed byte*) bp#6 (signed byte*) bp#3 (signed byte*) bp#8
|
||||
Alias (signed byte*) cp#2 = (signed byte*) cp#6 (signed byte*) cp#3 (signed byte*) cp#8
|
||||
Alias (byte*) main::at_line#4 = (byte*) main::at_line#8 (byte*) main::at_line#9 (byte*) main::at_line#6
|
||||
Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#22 (byte*) print_line_cursor#26 (byte*) print_line_cursor#19 (byte*) print_line_cursor#15 (byte*) print_line_cursor#4
|
||||
Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#22 (byte*) print_char_cursor#26 (byte*) print_char_cursor#19 (byte*) print_char_cursor#15 (byte*) print_char_cursor#4
|
||||
Alias (signed byte) main::r#0 = (signed byte~) main::$5
|
||||
Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#5
|
||||
Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#5
|
||||
Alias (byte) init_screen::WHITE#1 = (byte) init_screen::WHITE#3
|
||||
Alias (byte*) init_screen::COLS#2 = (byte*) init_screen::COLS#4
|
||||
Alias (byte*) print_line_cursor#20 = (byte*) print_line_cursor#23
|
||||
Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#23
|
||||
Alias (byte*) print_line_cursor#12 = (byte*) print_line_cursor#17 (byte*) print_line_cursor#6
|
||||
Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#17 (byte*) print_char_cursor#6
|
||||
Alias (signed byte) fmul8::return#1 = (signed byte) fmul8::return#4 (signed byte) fmul8::return#2
|
||||
Alias (signed byte*) ap#0 = (signed byte*) ap#13
|
||||
Alias (signed byte*) bp#0 = (signed byte*) bp#13
|
||||
Alias (signed byte*) cp#0 = (signed byte*) cp#13
|
||||
Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#7
|
||||
Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#7
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Alias (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#5
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) print_screen#2
|
||||
Self Phi Eliminated (byte*) print_line_cursor#1
|
||||
Self Phi Eliminated (byte*) main::at_line#3
|
||||
Self Phi Eliminated (signed byte*) ap#10
|
||||
Self Phi Eliminated (signed byte*) bp#10
|
||||
Self Phi Eliminated (signed byte*) cp#10
|
||||
Self Phi Eliminated (byte*) print_line_cursor#29
|
||||
Self Phi Eliminated (byte*) print_char_cursor#29
|
||||
Self Phi Eliminated (byte) main::i#3
|
||||
Self Phi Eliminated (signed byte*) ap#2
|
||||
Self Phi Eliminated (signed byte*) bp#2
|
||||
Self Phi Eliminated (signed byte*) cp#2
|
||||
Self Phi Eliminated (byte*) main::at_line#4
|
||||
Self Phi Eliminated (byte*) print_line_cursor#10
|
||||
Self Phi Eliminated (byte*) print_char_cursor#10
|
||||
Self Phi Eliminated (byte) init_screen::WHITE#1
|
||||
Self Phi Eliminated (byte*) init_screen::COLS#2
|
||||
Self Phi Eliminated (byte*) print_line_cursor#20
|
||||
Self Phi Eliminated (byte*) print_char_cursor#20
|
||||
Self Phi Eliminated (byte) init_screen::WHITE#2
|
||||
Self Phi Eliminated (byte*) print_line_cursor#12
|
||||
Self Phi Eliminated (byte*) print_char_cursor#12
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte) print_byte_at::b#1 (byte) print_byte_at::b#0
|
||||
Redundant Phi (byte*) print_byte_at::at#1 (byte*) print_byte_at::at#0
|
||||
Redundant Phi (byte*) print_screen#1 (byte*) print_screen#3
|
||||
Redundant Phi (byte*) print_screen#2 (byte*) print_screen#1
|
||||
Redundant Phi (byte*) print_screen#4 (byte*) print_screen#0
|
||||
Redundant Phi (byte*) print_screen#1 (byte*) print_screen#4
|
||||
Redundant Phi (byte*) print_line_cursor#1 (byte*) print_screen#1
|
||||
Redundant Phi (byte*) print_line_cursor#14 (byte*) print_line_cursor#0
|
||||
Redundant Phi (byte*) print_char_cursor#14 (byte*) print_line_cursor#0
|
||||
Redundant Phi (byte*) print_screen#5 (byte*) print_line_cursor#0
|
||||
Redundant Phi (signed byte*) ap#11 (signed byte*) ap#0
|
||||
Redundant Phi (signed byte*) bp#11 (signed byte*) bp#0
|
||||
Redundant Phi (signed byte*) cp#11 (signed byte*) cp#0
|
||||
Redundant Phi (byte*) print_line_cursor#3 (byte*) print_line_cursor#12
|
||||
Redundant Phi (byte*) print_char_cursor#3 (byte*) print_char_cursor#12
|
||||
Redundant Phi (byte*) main::at_line#3 (byte*) main::at_line#0
|
||||
Redundant Phi (signed byte*) ap#10 (signed byte*) ap#11
|
||||
Redundant Phi (signed byte*) bp#10 (signed byte*) bp#11
|
||||
Redundant Phi (signed byte*) cp#10 (signed byte*) cp#11
|
||||
Redundant Phi (byte*) print_line_cursor#29 (byte*) print_line_cursor#3
|
||||
Redundant Phi (byte*) print_char_cursor#29 (byte*) print_char_cursor#3
|
||||
Redundant Phi (byte) main::i#3 (byte) main::i#2
|
||||
Redundant Phi (signed byte*) ap#2 (signed byte*) ap#4
|
||||
Redundant Phi (signed byte*) bp#2 (signed byte*) bp#4
|
||||
Redundant Phi (signed byte*) cp#2 (signed byte*) cp#4
|
||||
Redundant Phi (byte*) main::at_line#4 (byte*) main::at#2
|
||||
Redundant Phi (byte*) print_screen#3 (byte*) print_screen#4
|
||||
Redundant Phi (byte*) print_line_cursor#10 (byte*) print_line_cursor#27
|
||||
Redundant Phi (byte*) print_char_cursor#10 (byte*) print_char_cursor#27
|
||||
Redundant Phi (byte*) print_screen#4 (byte*) print_screen#5
|
||||
Redundant Phi (byte*) print_line_cursor#16 (byte*) print_line_cursor#14
|
||||
Redundant Phi (byte*) print_char_cursor#16 (byte*) print_char_cursor#14
|
||||
Redundant Phi (byte*) print_line_cursor#11 (byte*) print_line_cursor#1
|
||||
Redundant Phi (byte*) print_char_cursor#11 (byte*) print_line_cursor#1
|
||||
Redundant Phi (byte) init_screen::WHITE#1 (byte) init_screen::WHITE#0
|
||||
Redundant Phi (byte*) init_screen::COLS#2 (byte*) init_screen::COLS#0
|
||||
Redundant Phi (byte*) print_line_cursor#20 (byte*) print_line_cursor#11
|
||||
Redundant Phi (byte*) print_char_cursor#20 (byte*) print_char_cursor#11
|
||||
Redundant Phi (byte) init_screen::WHITE#2 (byte) init_screen::WHITE#1
|
||||
Redundant Phi (byte*) print_line_cursor#12 (byte*) print_line_cursor#20
|
||||
Redundant Phi (byte*) print_char_cursor#12 (byte*) print_char_cursor#20
|
||||
Redundant Phi (signed byte) fmul8::a#1 (signed byte) fmul8::a#0
|
||||
Redundant Phi (signed byte*) ap#1 (signed byte*) ap#2
|
||||
Redundant Phi (signed byte) fmul8::b#1 (signed byte) fmul8::b#0
|
||||
Redundant Phi (signed byte*) bp#1 (signed byte*) bp#2
|
||||
Redundant Phi (signed byte*) cp#1 (signed byte*) cp#2
|
||||
Redundant Phi (byte*) print_line_cursor#13 (byte*) print_line_cursor#10
|
||||
Redundant Phi (byte*) print_char_cursor#13 (byte*) print_char_cursor#10
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) print_sbyte_at::$0 if((signed byte) print_sbyte_at::b#4<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte_at::@1
|
||||
Simple Condition (bool~) print_cls::$1 if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1
|
||||
@ -658,7 +835,7 @@ Simple Condition (bool~) main::$8 if((byte) main::i#1!=rangelast(0,8)) goto main
|
||||
Simple Condition (bool~) init_screen::$1 if((byte) init_screen::l#1!=rangelast(0,39)) goto init_screen::@1
|
||||
Simple Condition (bool~) init_screen::$2 if((byte) init_screen::m#1!=rangelast(0,24)) goto init_screen::@2
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) print_screen#0 = ((byte*))1024
|
||||
Constant (const byte*) print_line_cursor#0 = ((byte*))1024
|
||||
Constant (const byte) print_char_at::ch#0 = '-'
|
||||
Constant (const byte) print_char_at::ch#1 = ' '
|
||||
Constant (const byte[]) print_hextab#0 = $4
|
||||
@ -680,11 +857,12 @@ Constant (const signed byte*) cp#0 = ((signed byte*))255
|
||||
Constant (const byte*) mulf_sqr1#0 = ((byte*))8192
|
||||
Constant (const byte*) mulf_sqr2#0 = ((byte*))8704
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte*) print_cls::sc#0 = print_screen#0
|
||||
Constant (const byte*) print_cls::$0 = print_screen#0+1000
|
||||
Constant (const byte*) print_cls::sc#0 = print_line_cursor#0
|
||||
Constant (const byte*) print_cls::$0 = print_line_cursor#0+1000
|
||||
Constant (const signed byte[]) vals#0 = { $0, $1, $2, $3, 0, 16, 32, 64, 95 }
|
||||
Constant (const byte*) main::at#0 = main::at_line#0+4
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Eliminating Noop Cast (byte) print_byte_at::b#0 ← ((byte)) (signed byte) print_sbyte_at::b#6
|
||||
Successful SSA optimization Pass2NopCastElimination
|
||||
Resolved ranged next value main::k#1 ← ++ main::k#2 to ++
|
||||
@ -699,6 +877,7 @@ Resolved ranged next value init_screen::m#1 ← ++ init_screen::m#2 to ++
|
||||
Resolved ranged comparison value if(init_screen::m#1!=rangelast(0,24)) goto init_screen::@2 to (byte/signed byte/word/signed word/dword/signed dword) 25
|
||||
Culled Empty Block (label) print_sbyte_at::@6
|
||||
Culled Empty Block (label) @12
|
||||
Culled Empty Block (label) print_cls::@2
|
||||
Culled Empty Block (label) @19
|
||||
Culled Empty Block (label) main::@7
|
||||
Culled Empty Block (label) main::@4
|
||||
@ -706,6 +885,7 @@ Culled Empty Block (label) main::@9
|
||||
Culled Empty Block (label) init_screen::@5
|
||||
Culled Empty Block (label) init_screen::@3
|
||||
Culled Empty Block (label) @21
|
||||
Culled Empty Block (label) @23
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Self Phi Eliminated (signed byte*) ap#4
|
||||
Self Phi Eliminated (signed byte*) bp#4
|
||||
@ -726,9 +906,9 @@ Inlining constant with var siblings (const byte*) main::at#0
|
||||
Inlining constant with var siblings (const byte*) init_screen::COLS#0
|
||||
Inlining constant with var siblings (const byte) init_screen::l#0
|
||||
Inlining constant with var siblings (const byte) init_screen::m#0
|
||||
Constant inlined print_cls::$0 = (const byte*) print_screen#0+(word/signed word/dword/signed dword) 1000
|
||||
Constant inlined print_cls::$0 = (const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) 1000
|
||||
Constant inlined $0 = -(byte/signed byte/word/signed word/dword/signed dword) 95
|
||||
Constant inlined print_cls::sc#0 = (const byte*) print_screen#0
|
||||
Constant inlined print_cls::sc#0 = (const byte*) print_line_cursor#0
|
||||
Constant inlined $1 = -(byte/signed byte/word/signed word/dword/signed dword) 64
|
||||
Constant inlined main::at#0 = ((byte*))(word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
Constant inlined $2 = -(byte/signed byte/word/signed word/dword/signed dword) 32
|
||||
@ -957,10 +1137,10 @@ print_cls: scope:[print_cls] from init_screen
|
||||
[78] phi()
|
||||
to:print_cls::@1
|
||||
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
|
||||
[79] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_screen#0 print_cls::@1/(byte*) print_cls::sc#1 )
|
||||
[79] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_line_cursor#0 print_cls::@1/(byte*) print_cls::sc#1 )
|
||||
[80] *((byte*) print_cls::sc#2) ← (byte) ' '
|
||||
[81] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
|
||||
[82] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1
|
||||
[82] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1
|
||||
to:print_cls::@return
|
||||
print_cls::@return: scope:[print_cls] from print_cls::@1
|
||||
[83] return
|
||||
@ -1030,11 +1210,13 @@ VARIABLE REGISTER WEIGHTS
|
||||
(byte) print_char_at::ch#2 2.0
|
||||
(byte) print_char_at::ch#3 4.0
|
||||
(byte) print_char_at::ch#4 6.0
|
||||
(byte*) print_char_cursor
|
||||
(void()) print_cls()
|
||||
(byte*) print_cls::sc
|
||||
(byte*) print_cls::sc#1 16.5
|
||||
(byte*) print_cls::sc#2 16.5
|
||||
(byte[]) print_hextab
|
||||
(byte*) print_line_cursor
|
||||
(void()) print_sbyte_at((signed byte) print_sbyte_at::b , (byte*) print_sbyte_at::at)
|
||||
(byte*) print_sbyte_at::at
|
||||
(byte*) print_sbyte_at::at#0 22.0
|
||||
@ -1126,7 +1308,7 @@ INITIAL ASM
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
//SEG1 Global Constants & labels
|
||||
.label print_screen = $400
|
||||
.label print_line_cursor = $400
|
||||
.label ap = $fd
|
||||
.label bp = $fe
|
||||
.label cp = $ff
|
||||
@ -1606,10 +1788,10 @@ print_cls: {
|
||||
.label sc = $15
|
||||
//SEG153 [79] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1]
|
||||
b1_from_print_cls:
|
||||
//SEG154 [79] phi (byte*) print_cls::sc#2 = (const byte*) print_screen#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1
|
||||
lda #<print_screen
|
||||
//SEG154 [79] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1
|
||||
lda #<print_line_cursor
|
||||
sta sc
|
||||
lda #>print_screen
|
||||
lda #>print_line_cursor
|
||||
sta sc+1
|
||||
jmp b1
|
||||
//SEG155 [79] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1]
|
||||
@ -1627,12 +1809,12 @@ print_cls: {
|
||||
bne !+
|
||||
inc sc+1
|
||||
!:
|
||||
//SEG160 [82] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1
|
||||
//SEG160 [82] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1
|
||||
lda sc+1
|
||||
cmp #>print_screen+$3e8
|
||||
cmp #>print_line_cursor+$3e8
|
||||
bne b1_from_b1
|
||||
lda sc
|
||||
cmp #<print_screen+$3e8
|
||||
cmp #<print_line_cursor+$3e8
|
||||
bne b1_from_b1
|
||||
jmp breturn
|
||||
//SEG161 print_cls::@return
|
||||
@ -1697,7 +1879,7 @@ Statement [72] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed wor
|
||||
Statement [73] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:3::init_screen:6 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [74] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ init_screen::m#2 init_screen::COLS#1 ] ( main:3::init_screen:6 [ init_screen::m#2 init_screen::COLS#1 ] ) always clobbers reg byte a
|
||||
Statement [80] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:3::init_screen:6::print_cls:64 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [82] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:3::init_screen:6::print_cls:64 [ print_cls::sc#1 ] ) always clobbers reg byte a
|
||||
Statement [82] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:3::init_screen:6::print_cls:64 [ print_cls::sc#1 ] ) always clobbers reg byte a
|
||||
Statement [8] (signed byte) print_sbyte_at::b#1 ← *((const signed byte[]) vals#0 + (byte) main::k#2) [ main::k#2 main::at#4 print_sbyte_at::b#1 ] ( main:3 [ main::k#2 main::at#4 print_sbyte_at::b#1 ] ) always clobbers reg byte a
|
||||
Statement [9] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ( main:3 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ) always clobbers reg byte a
|
||||
Statement [11] (byte*) main::at#1 ← (byte*) main::at#4 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ main::k#2 main::at#1 ] ( main:3 [ main::k#2 main::at#1 ] ) always clobbers reg byte a
|
||||
@ -1726,7 +1908,7 @@ Statement [72] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed wor
|
||||
Statement [73] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:3::init_screen:6 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [74] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ init_screen::m#2 init_screen::COLS#1 ] ( main:3::init_screen:6 [ init_screen::m#2 init_screen::COLS#1 ] ) always clobbers reg byte a
|
||||
Statement [80] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:3::init_screen:6::print_cls:64 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [82] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:3::init_screen:6::print_cls:64 [ print_cls::sc#1 ] ) always clobbers reg byte a
|
||||
Statement [82] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:3::init_screen:6::print_cls:64 [ print_cls::sc#1 ] ) always clobbers reg byte a
|
||||
Potential registers zp ZP_BYTE:2 [ main::k#2 main::k#1 ] : zp ZP_BYTE:2 , reg byte x ,
|
||||
Potential registers zp ZP_WORD:3 [ main::at#4 main::at#1 ] : zp ZP_WORD:3 ,
|
||||
Potential registers zp ZP_WORD:5 [ main::at_line#2 main::at#2 ] : zp ZP_WORD:5 ,
|
||||
@ -1798,7 +1980,7 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
//SEG1 Global Constants & labels
|
||||
.label print_screen = $400
|
||||
.label print_line_cursor = $400
|
||||
.label ap = $fd
|
||||
.label bp = $fe
|
||||
.label cp = $ff
|
||||
@ -2235,10 +2417,10 @@ print_cls: {
|
||||
.label sc = 2
|
||||
//SEG153 [79] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1]
|
||||
b1_from_print_cls:
|
||||
//SEG154 [79] phi (byte*) print_cls::sc#2 = (const byte*) print_screen#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1
|
||||
lda #<print_screen
|
||||
//SEG154 [79] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1
|
||||
lda #<print_line_cursor
|
||||
sta sc
|
||||
lda #>print_screen
|
||||
lda #>print_line_cursor
|
||||
sta sc+1
|
||||
jmp b1
|
||||
//SEG155 [79] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1]
|
||||
@ -2256,12 +2438,12 @@ print_cls: {
|
||||
bne !+
|
||||
inc sc+1
|
||||
!:
|
||||
//SEG160 [82] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1
|
||||
//SEG160 [82] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1
|
||||
lda sc+1
|
||||
cmp #>print_screen+$3e8
|
||||
cmp #>print_line_cursor+$3e8
|
||||
bne b1_from_b1
|
||||
lda sc
|
||||
cmp #<print_screen+$3e8
|
||||
cmp #<print_line_cursor+$3e8
|
||||
bne b1_from_b1
|
||||
jmp breturn
|
||||
//SEG161 print_cls::@return
|
||||
@ -2463,6 +2645,7 @@ FINAL SYMBOL TABLE
|
||||
(byte) print_char_at::ch#2 ch zp ZP_BYTE:11 2.0
|
||||
(byte) print_char_at::ch#3 ch zp ZP_BYTE:11 4.0
|
||||
(byte) print_char_at::ch#4 ch zp ZP_BYTE:11 6.0
|
||||
(byte*) print_char_cursor
|
||||
(void()) print_cls()
|
||||
(label) print_cls::@1
|
||||
(label) print_cls::@return
|
||||
@ -2471,6 +2654,8 @@ FINAL SYMBOL TABLE
|
||||
(byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5
|
||||
(byte[]) print_hextab
|
||||
(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef"
|
||||
(byte*) print_line_cursor
|
||||
(const byte*) print_line_cursor#0 print_line_cursor = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(void()) print_sbyte_at((signed byte) print_sbyte_at::b , (byte*) print_sbyte_at::at)
|
||||
(label) print_sbyte_at::@1
|
||||
(label) print_sbyte_at::@2
|
||||
@ -2490,7 +2675,6 @@ FINAL SYMBOL TABLE
|
||||
(signed byte) print_sbyte_at::b#4 b zp ZP_BYTE:10 21.499999999999993
|
||||
(signed byte) print_sbyte_at::b#6 b zp ZP_BYTE:10 0.6666666666666666
|
||||
(byte*) print_screen
|
||||
(const byte*) print_screen#0 print_screen = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(signed byte[]) vals
|
||||
(const signed byte[]) vals#0 vals = { -(byte/signed byte/word/signed word/dword/signed dword) 95, -(byte/signed byte/word/signed word/dword/signed dword) 64, -(byte/signed byte/word/signed word/dword/signed dword) 32, -(byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/signed byte/word/signed word/dword/signed dword) 95 }
|
||||
|
||||
@ -2521,7 +2705,7 @@ Score: 10542
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
//SEG1 Global Constants & labels
|
||||
.label print_screen = $400
|
||||
.label print_line_cursor = $400
|
||||
.label ap = $fd
|
||||
.label bp = $fe
|
||||
.label cp = $ff
|
||||
@ -2888,10 +3072,10 @@ init_screen: {
|
||||
print_cls: {
|
||||
.label sc = 2
|
||||
//SEG153 [79] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1]
|
||||
//SEG154 [79] phi (byte*) print_cls::sc#2 = (const byte*) print_screen#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1
|
||||
lda #<print_screen
|
||||
//SEG154 [79] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1
|
||||
lda #<print_line_cursor
|
||||
sta sc
|
||||
lda #>print_screen
|
||||
lda #>print_line_cursor
|
||||
sta sc+1
|
||||
//SEG155 [79] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1]
|
||||
//SEG156 [79] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy
|
||||
@ -2906,12 +3090,12 @@ print_cls: {
|
||||
bne !+
|
||||
inc sc+1
|
||||
!:
|
||||
//SEG160 [82] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1
|
||||
//SEG160 [82] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1
|
||||
lda sc+1
|
||||
cmp #>print_screen+$3e8
|
||||
cmp #>print_line_cursor+$3e8
|
||||
bne b1
|
||||
lda sc
|
||||
cmp #<print_screen+$3e8
|
||||
cmp #<print_line_cursor+$3e8
|
||||
bne b1
|
||||
//SEG161 print_cls::@return
|
||||
//SEG162 [83] return
|
||||
|
@ -84,6 +84,7 @@
|
||||
(byte) print_char_at::ch#2 ch zp ZP_BYTE:11 2.0
|
||||
(byte) print_char_at::ch#3 ch zp ZP_BYTE:11 4.0
|
||||
(byte) print_char_at::ch#4 ch zp ZP_BYTE:11 6.0
|
||||
(byte*) print_char_cursor
|
||||
(void()) print_cls()
|
||||
(label) print_cls::@1
|
||||
(label) print_cls::@return
|
||||
@ -92,6 +93,8 @@
|
||||
(byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5
|
||||
(byte[]) print_hextab
|
||||
(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef"
|
||||
(byte*) print_line_cursor
|
||||
(const byte*) print_line_cursor#0 print_line_cursor = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(void()) print_sbyte_at((signed byte) print_sbyte_at::b , (byte*) print_sbyte_at::at)
|
||||
(label) print_sbyte_at::@1
|
||||
(label) print_sbyte_at::@2
|
||||
@ -111,7 +114,6 @@
|
||||
(signed byte) print_sbyte_at::b#4 b zp ZP_BYTE:10 21.499999999999993
|
||||
(signed byte) print_sbyte_at::b#6 b zp ZP_BYTE:10 0.6666666666666666
|
||||
(byte*) print_screen
|
||||
(const byte*) print_screen#0 print_screen = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(signed byte[]) vals
|
||||
(const signed byte[]) vals#0 vals = { -(byte/signed byte/word/signed word/dword/signed dword) 95, -(byte/signed byte/word/signed word/dword/signed dword) 64, -(byte/signed byte/word/signed word/dword/signed dword) 32, -(byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/signed byte/word/signed word/dword/signed dword) 95 }
|
||||
|
||||
|
@ -4,7 +4,7 @@ CONTROL FLOW GRAPH SSA
|
||||
(byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
|
||||
(byte*) print_line_cursor#0 ← (byte*) print_screen#0
|
||||
(byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0
|
||||
to:@20
|
||||
to:@12
|
||||
print_str: scope:[print_str] from main
|
||||
(byte*) print_char_cursor#21 ← phi( main/(byte*) print_char_cursor#19 )
|
||||
(byte*) print_str::str#4 ← phi( main/(byte*) print_str::str#1 )
|
||||
@ -50,6 +50,11 @@ print_ln::@return: scope:[print_ln] from print_ln::@2
|
||||
(byte*) print_char_cursor#4 ← (byte*) print_char_cursor#12
|
||||
return
|
||||
to:@return
|
||||
@12: scope:[] from @begin
|
||||
(byte*) print_line_cursor#16 ← phi( @begin/(byte*) print_line_cursor#0 )
|
||||
(byte*) print_char_cursor#22 ← phi( @begin/(byte*) print_char_cursor#0 )
|
||||
(byte[]) print_hextab#0 ← (const string) $0
|
||||
to:@20
|
||||
main: scope:[main] from @20
|
||||
(byte*) print_line_cursor#15 ← phi( @20/(byte*) print_line_cursor#14 )
|
||||
(byte*) print_char_cursor#19 ← phi( @20/(byte*) print_char_cursor#20 )
|
||||
@ -75,9 +80,9 @@ main::@return: scope:[main] from main::@2
|
||||
(byte*) print_line_cursor#4 ← (byte*) print_line_cursor#10
|
||||
return
|
||||
to:@return
|
||||
@20: scope:[] from @begin
|
||||
(byte*) print_line_cursor#14 ← phi( @begin/(byte*) print_line_cursor#0 )
|
||||
(byte*) print_char_cursor#20 ← phi( @begin/(byte*) print_char_cursor#0 )
|
||||
@20: scope:[] from @12
|
||||
(byte*) print_line_cursor#14 ← phi( @12/(byte*) print_line_cursor#16 )
|
||||
(byte*) print_char_cursor#20 ← phi( @12/(byte*) print_char_cursor#22 )
|
||||
call main
|
||||
to:@21
|
||||
@21: scope:[] from @20
|
||||
@ -89,6 +94,8 @@ main::@return: scope:[main] from main::@2
|
||||
@end: scope:[] from @21
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(const string) $0 = (string) "0123456789abcdef"
|
||||
(label) @12
|
||||
(label) @20
|
||||
(label) @21
|
||||
(label) @begin
|
||||
@ -114,6 +121,7 @@ SYMBOL TABLE SSA
|
||||
(byte*) print_char_cursor#2
|
||||
(byte*) print_char_cursor#20
|
||||
(byte*) print_char_cursor#21
|
||||
(byte*) print_char_cursor#22
|
||||
(byte*) print_char_cursor#3
|
||||
(byte*) print_char_cursor#4
|
||||
(byte*) print_char_cursor#5
|
||||
@ -121,6 +129,8 @@ SYMBOL TABLE SSA
|
||||
(byte*) print_char_cursor#7
|
||||
(byte*) print_char_cursor#8
|
||||
(byte*) print_char_cursor#9
|
||||
(byte[]) print_hextab
|
||||
(byte[]) print_hextab#0
|
||||
(byte*) print_line_cursor
|
||||
(byte*) print_line_cursor#0
|
||||
(byte*) print_line_cursor#1
|
||||
@ -130,6 +140,7 @@ SYMBOL TABLE SSA
|
||||
(byte*) print_line_cursor#13
|
||||
(byte*) print_line_cursor#14
|
||||
(byte*) print_line_cursor#15
|
||||
(byte*) print_line_cursor#16
|
||||
(byte*) print_line_cursor#2
|
||||
(byte*) print_line_cursor#3
|
||||
(byte*) print_line_cursor#4
|
||||
@ -158,7 +169,7 @@ SYMBOL TABLE SSA
|
||||
(byte*) print_str::str#3
|
||||
(byte*) print_str::str#4
|
||||
|
||||
Alias (byte*) print_char_cursor#0 = (byte*) print_line_cursor#0 (byte*) print_screen#0 (byte*) print_char_cursor#20 (byte*) print_line_cursor#14
|
||||
Alias (byte*) print_char_cursor#0 = (byte*) print_line_cursor#0 (byte*) print_screen#0 (byte*) print_char_cursor#22 (byte*) print_line_cursor#16 (byte*) print_char_cursor#20 (byte*) print_line_cursor#14
|
||||
Alias (byte*) print_str::str#2 = (byte*) print_str::str#3
|
||||
Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#9 (byte*) print_char_cursor#17 (byte*) print_char_cursor#2
|
||||
Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#7 (byte*) print_char_cursor#3 (byte*) print_line_cursor#8 (byte*) print_char_cursor#12 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4
|
||||
@ -188,9 +199,13 @@ Simple Condition (bool~) print_str::$0 if(*((byte*) print_str::str#2)!=(byte) '@
|
||||
Simple Condition (bool~) print_ln::$1 if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) print_char_cursor#0 = ((byte*))1024
|
||||
Constant (const byte[]) print_hextab#0 = $0
|
||||
Constant (const byte*) print_str::str#1 = main::str
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Culled Empty Block (label) print_ln::@2
|
||||
Culled Empty Block (label) @12
|
||||
Culled Empty Block (label) main::@2
|
||||
Culled Empty Block (label) @21
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
@ -212,9 +227,9 @@ Calls in [] to main:2
|
||||
Calls in [main] to print_str:5 print_ln:7
|
||||
|
||||
Created 3 initial phi equivalence classes
|
||||
Coalesced [14] print_line_cursor#16 ← print_line_cursor#1
|
||||
Coalesced [14] print_line_cursor#17 ← print_line_cursor#1
|
||||
Coalesced [22] print_str::str#5 ← print_str::str#0
|
||||
Coalesced [23] print_char_cursor#22 ← print_char_cursor#1
|
||||
Coalesced [23] print_char_cursor#23 ← print_char_cursor#1
|
||||
Coalesced down to 3 phi equivalence classes
|
||||
Culled Empty Block (label) print_ln::@3
|
||||
Adding NOP phi() at start of @begin
|
||||
@ -280,6 +295,7 @@ VARIABLE REGISTER WEIGHTS
|
||||
(byte*) print_char_cursor
|
||||
(byte*) print_char_cursor#1 11.0
|
||||
(byte*) print_char_cursor#10 4.4
|
||||
(byte[]) print_hextab
|
||||
(byte*) print_line_cursor
|
||||
(byte*) print_line_cursor#1 16.5
|
||||
(byte*) print_line_cursor#6 22.0
|
||||
@ -645,6 +661,7 @@ FINAL SYMBOL TABLE
|
||||
(byte*) print_char_cursor
|
||||
(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:4 11.0
|
||||
(byte*) print_char_cursor#10 print_char_cursor zp ZP_WORD:4 4.4
|
||||
(byte[]) print_hextab
|
||||
(byte*) print_line_cursor
|
||||
(byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:2 16.5
|
||||
(byte*) print_line_cursor#6 print_line_cursor zp ZP_WORD:2 22.0
|
||||
|
@ -8,6 +8,7 @@
|
||||
(byte*) print_char_cursor
|
||||
(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:4 11.0
|
||||
(byte*) print_char_cursor#10 print_char_cursor zp ZP_WORD:4 4.4
|
||||
(byte[]) print_hextab
|
||||
(byte*) print_line_cursor
|
||||
(byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:2 16.5
|
||||
(byte*) print_line_cursor#6 print_line_cursor zp ZP_WORD:2 22.0
|
||||
|
@ -1,13 +1,13 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@6
|
||||
@6: scope:[] from @begin
|
||||
to:@7
|
||||
@7: scope:[] from @begin
|
||||
[1] phi()
|
||||
[2] call main
|
||||
to:@end
|
||||
@end: scope:[] from @6
|
||||
@end: scope:[] from @7
|
||||
[3] phi()
|
||||
main: scope:[main] from @6
|
||||
main: scope:[main] from @7
|
||||
[4] *((const byte*) GHOST_BYTE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
asm { sei }
|
||||
[6] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0
|
||||
|
@ -4,23 +4,90 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48
|
||||
(byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53
|
||||
(byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49
|
||||
(byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55
|
||||
(byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248
|
||||
(word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016
|
||||
(byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248
|
||||
(byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249
|
||||
(byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264
|
||||
(byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266
|
||||
(byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269
|
||||
(byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271
|
||||
(byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275
|
||||
(byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276
|
||||
(byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277
|
||||
(byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280
|
||||
(byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281
|
||||
(byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281
|
||||
(byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282
|
||||
(byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283
|
||||
(byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284
|
||||
(byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285
|
||||
(byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286
|
||||
(byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287
|
||||
(byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265
|
||||
(byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265
|
||||
(byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128
|
||||
(byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64
|
||||
(byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32
|
||||
(byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16
|
||||
(byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270
|
||||
(byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270
|
||||
(byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16
|
||||
(byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272
|
||||
(byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272
|
||||
(byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267
|
||||
(byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268
|
||||
(byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273
|
||||
(byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274
|
||||
(byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296
|
||||
(byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320
|
||||
(byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321
|
||||
(byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322
|
||||
(byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323
|
||||
(byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333
|
||||
(byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127
|
||||
(byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576
|
||||
(byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577
|
||||
(byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578
|
||||
(byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579
|
||||
(byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589
|
||||
(void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788
|
||||
(void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534
|
||||
(byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
to:@3
|
||||
@3: scope:[] from @begin
|
||||
(byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9
|
||||
(byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10
|
||||
(byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11
|
||||
(byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12
|
||||
(byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13
|
||||
(byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14
|
||||
(byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15
|
||||
to:@4
|
||||
@4: scope:[] from @begin
|
||||
(byte*) GHOST_BYTE#0 ← ((byte*)) (word/signed word/dword/signed dword) 16383
|
||||
to:@6
|
||||
main: scope:[main] from @6
|
||||
to:@7
|
||||
main: scope:[main] from @7
|
||||
*((byte*) GHOST_BYTE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
asm { sei }
|
||||
*((byte*) CIA1_INTERRUPT#0) ← (byte) CIA_INTERRUPT_CLEAR#0
|
||||
@ -59,45 +126,179 @@ irq_bottom_2: scope:[irq_bottom_2] from
|
||||
irq_bottom_2::@return: scope:[irq_bottom_2] from irq_bottom_2
|
||||
return
|
||||
to:@return
|
||||
@6: scope:[] from @3
|
||||
@7: scope:[] from @4
|
||||
call main
|
||||
to:@7
|
||||
@7: scope:[] from @6
|
||||
to:@8
|
||||
@8: scope:[] from @7
|
||||
to:@end
|
||||
@end: scope:[] from @7
|
||||
@end: scope:[] from @8
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @3
|
||||
(label) @6
|
||||
(label) @4
|
||||
(label) @7
|
||||
(label) @8
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL#0
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL1#0
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL2#0
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL3#0
|
||||
(byte*) BGCOL4
|
||||
(byte*) BGCOL4#0
|
||||
(byte) BLACK
|
||||
(byte) BLACK#0
|
||||
(byte) BLUE
|
||||
(byte) BLUE#0
|
||||
(byte*) BORDERCOL
|
||||
(byte*) BORDERCOL#0
|
||||
(byte) BROWN
|
||||
(byte) BROWN#0
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHARGEN#0
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_INTERRUPT#0
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A#0
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_A_DDR#0
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B#0
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA1_PORT_B_DDR#0
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_INTERRUPT#0
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A#0
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_A_DDR#0
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B#0
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte*) CIA2_PORT_B_DDR#0
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte) CIA_INTERRUPT_CLEAR#0
|
||||
(byte*) COLS
|
||||
(byte*) COLS#0
|
||||
(byte) CYAN
|
||||
(byte) CYAN#0
|
||||
(byte*) D011
|
||||
(byte*) D011#0
|
||||
(byte*) D016
|
||||
(byte*) D016#0
|
||||
(byte*) D018
|
||||
(byte*) D018#0
|
||||
(byte) DARK_GREY
|
||||
(byte) DARK_GREY#0
|
||||
(byte*) GHOST_BYTE
|
||||
(byte*) GHOST_BYTE#0
|
||||
(byte) GREEN
|
||||
(byte) GREEN#0
|
||||
(byte) GREY
|
||||
(byte) GREY#0
|
||||
(void()**) HARDWARE_IRQ
|
||||
(void()**) HARDWARE_IRQ#0
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_BG#0
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte) IRQ_COLLISION_SPRITE#0
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte*) IRQ_ENABLE#0
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_LIGHTPEN#0
|
||||
(byte) IRQ_RASTER
|
||||
(byte) IRQ_RASTER#0
|
||||
(byte*) IRQ_STATUS
|
||||
(byte*) IRQ_STATUS#0
|
||||
(void()**) KERNEL_IRQ
|
||||
(void()**) KERNEL_IRQ#0
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_X#0
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte*) LIGHTPEN_Y#0
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_BLUE#0
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREEN#0
|
||||
(byte) LIGHT_GREY
|
||||
(byte) LIGHT_GREY#0
|
||||
(byte) ORANGE
|
||||
(byte) ORANGE#0
|
||||
(byte) PINK
|
||||
(byte) PINK#0
|
||||
(byte*) PROCPORT
|
||||
(byte*) PROCPORT#0
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte*) PROCPORT_DDR#0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_KERNEL_IO#0
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_ALL#0
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_CHARROM#0
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PROCPORT_RAM_IO#0
|
||||
(byte) PURPLE
|
||||
(byte) PURPLE#0
|
||||
(byte*) RASTER
|
||||
(byte*) RASTER#0
|
||||
(byte) RED
|
||||
(byte) RED#0
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_COLS#0
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_ENABLE#0
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_X#0
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_EXPAND_Y#0
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC#0
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC1#0
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_MC2#0
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_PRIORITY#0
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XMSB#0
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_XPOS#0
|
||||
(byte*) SPRITES_YPOS
|
||||
(byte*) SPRITES_YPOS#0
|
||||
(word) SPRITE_PTRS
|
||||
(word) SPRITE_PTRS#0
|
||||
(byte) VIC_BMM
|
||||
(byte) VIC_BMM#0
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL#0
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte*) VIC_CONTROL2#0
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_CSEL#0
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_DEN#0
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_ECM#0
|
||||
(byte) VIC_MCM
|
||||
(byte) VIC_MCM#0
|
||||
(byte*) VIC_MEMORY
|
||||
(byte*) VIC_MEMORY#0
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RSEL#0
|
||||
(byte) VIC_RST8
|
||||
(byte) VIC_RST8#0
|
||||
(byte) WHITE
|
||||
(byte) WHITE#0
|
||||
(byte) YELLOW
|
||||
(byte) YELLOW#0
|
||||
interrupt(KERNEL_MIN)(void()) irq_bottom_1()
|
||||
(byte/word/dword~) irq_bottom_1::$0
|
||||
(void()*~) irq_bottom_1::$1
|
||||
@ -109,20 +310,87 @@ interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2()
|
||||
(void()*~) main::$0
|
||||
(label) main::@return
|
||||
|
||||
Culled Empty Block (label) @7
|
||||
Culled Empty Block (label) @8
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
|
||||
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
|
||||
Constant (const byte*) PROCPORT#0 = ((byte*))1
|
||||
Constant (const byte) PROCPORT_RAM_ALL#0 = 48
|
||||
Constant (const byte) PROCPORT_RAM_IO#0 = 53
|
||||
Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49
|
||||
Constant (const byte) PROCPORT_KERNEL_IO#0 = 54
|
||||
Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55
|
||||
Constant (const byte*) CHARGEN#0 = ((byte*))53248
|
||||
Constant (const word) SPRITE_PTRS#0 = 1016
|
||||
Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248
|
||||
Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249
|
||||
Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264
|
||||
Constant (const byte*) RASTER#0 = ((byte*))53266
|
||||
Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269
|
||||
Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271
|
||||
Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275
|
||||
Constant (const byte*) SPRITES_MC#0 = ((byte*))53276
|
||||
Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277
|
||||
Constant (const byte*) BORDERCOL#0 = ((byte*))53280
|
||||
Constant (const byte*) BGCOL#0 = ((byte*))53281
|
||||
Constant (const byte*) BGCOL1#0 = ((byte*))53281
|
||||
Constant (const byte*) BGCOL2#0 = ((byte*))53282
|
||||
Constant (const byte*) BGCOL3#0 = ((byte*))53283
|
||||
Constant (const byte*) BGCOL4#0 = ((byte*))53284
|
||||
Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285
|
||||
Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286
|
||||
Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287
|
||||
Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265
|
||||
Constant (const byte*) D011#0 = ((byte*))53265
|
||||
Constant (const byte) VIC_RST8#0 = 128
|
||||
Constant (const byte) VIC_ECM#0 = 64
|
||||
Constant (const byte) VIC_BMM#0 = 32
|
||||
Constant (const byte) VIC_DEN#0 = 16
|
||||
Constant (const byte) VIC_RSEL#0 = 8
|
||||
Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270
|
||||
Constant (const byte*) D016#0 = ((byte*))53270
|
||||
Constant (const byte) VIC_MCM#0 = 16
|
||||
Constant (const byte) VIC_CSEL#0 = 8
|
||||
Constant (const byte*) D018#0 = ((byte*))53272
|
||||
Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272
|
||||
Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267
|
||||
Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268
|
||||
Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273
|
||||
Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274
|
||||
Constant (const byte) IRQ_RASTER#0 = 1
|
||||
Constant (const byte) IRQ_COLLISION_BG#0 = 2
|
||||
Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4
|
||||
Constant (const byte) IRQ_LIGHTPEN#0 = 8
|
||||
Constant (const byte*) COLS#0 = ((byte*))55296
|
||||
Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320
|
||||
Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321
|
||||
Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322
|
||||
Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323
|
||||
Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333
|
||||
Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127
|
||||
Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576
|
||||
Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577
|
||||
Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578
|
||||
Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579
|
||||
Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589
|
||||
Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788
|
||||
Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534
|
||||
Constant (const byte) BLACK#0 = 0
|
||||
Constant (const byte) WHITE#0 = 1
|
||||
Constant (const byte) RED#0 = 2
|
||||
Constant (const byte) CYAN#0 = 3
|
||||
Constant (const byte) PURPLE#0 = 4
|
||||
Constant (const byte) GREEN#0 = 5
|
||||
Constant (const byte) BLUE#0 = 6
|
||||
Constant (const byte) YELLOW#0 = 7
|
||||
Constant (const byte) ORANGE#0 = 8
|
||||
Constant (const byte) BROWN#0 = 9
|
||||
Constant (const byte) PINK#0 = 10
|
||||
Constant (const byte) DARK_GREY#0 = 11
|
||||
Constant (const byte) GREY#0 = 12
|
||||
Constant (const byte) LIGHT_GREEN#0 = 13
|
||||
Constant (const byte) LIGHT_BLUE#0 = 14
|
||||
Constant (const byte) LIGHT_GREY#0 = 15
|
||||
Constant (const byte*) GHOST_BYTE#0 = ((byte*))16383
|
||||
Constant (const void()*) main::$0 = &irq_bottom_1
|
||||
Constant (const void()*) irq_bottom_1::$1 = &irq_bottom_2
|
||||
@ -130,7 +398,8 @@ Constant (const void()*) irq_bottom_2::$0 = &irq_bottom_1
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte/word/dword) irq_bottom_1::$0 = 255^VIC_RSEL#0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Culled Empty Block (label) @3
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Culled Empty Block (label) @4
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Constant inlined irq_bottom_2::$0 = &interrupt(KERNEL_MIN)(void()) irq_bottom_1()
|
||||
Constant inlined irq_bottom_1::$0 = (byte/word/signed word/dword/signed dword) 255^(const byte) VIC_RSEL#0
|
||||
@ -138,7 +407,7 @@ Constant inlined main::$0 = &interrupt(KERNEL_MIN)(void()) irq_bottom_1()
|
||||
Constant inlined irq_bottom_1::$1 = &interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2()
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @6
|
||||
Adding NOP phi() at start of @7
|
||||
Adding NOP phi() at start of @end
|
||||
CALL GRAPH
|
||||
Calls in [] to main:2
|
||||
@ -146,20 +415,20 @@ Calls in [] to main:2
|
||||
Created 0 initial phi equivalence classes
|
||||
Coalesced down to 0 phi equivalence classes
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @6
|
||||
Adding NOP phi() at start of @7
|
||||
Adding NOP phi() at start of @end
|
||||
|
||||
FINAL CONTROL FLOW GRAPH
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@6
|
||||
@6: scope:[] from @begin
|
||||
to:@7
|
||||
@7: scope:[] from @begin
|
||||
[1] phi()
|
||||
[2] call main
|
||||
to:@end
|
||||
@end: scope:[] from @6
|
||||
@end: scope:[] from @7
|
||||
[3] phi()
|
||||
main: scope:[main] from @6
|
||||
main: scope:[main] from @7
|
||||
[4] *((const byte*) GHOST_BYTE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
asm { sei }
|
||||
[6] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0
|
||||
@ -197,19 +466,86 @@ irq_bottom_1::@return: scope:[irq_bottom_1] from irq_bottom_1
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte*) GHOST_BYTE
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
interrupt(KERNEL_MIN)(void()) irq_bottom_1()
|
||||
interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2()
|
||||
(void()) main()
|
||||
@ -238,15 +574,15 @@ INITIAL ASM
|
||||
.label GHOST_BYTE = $3fff
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @6 [phi:@begin->@6]
|
||||
b6_from_bbegin:
|
||||
jmp b6
|
||||
//SEG4 @6
|
||||
b6:
|
||||
//SEG3 [1] phi from @begin to @7 [phi:@begin->@7]
|
||||
b7_from_bbegin:
|
||||
jmp b7
|
||||
//SEG4 @7
|
||||
b7:
|
||||
//SEG5 [2] call main
|
||||
jsr main
|
||||
//SEG6 [3] phi from @6 to @end [phi:@6->@end]
|
||||
bend_from_b6:
|
||||
//SEG6 [3] phi from @7 to @end [phi:@7->@end]
|
||||
bend_from_b7:
|
||||
jmp bend
|
||||
//SEG7 @end
|
||||
bend:
|
||||
@ -396,15 +732,15 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.label GHOST_BYTE = $3fff
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @6 [phi:@begin->@6]
|
||||
b6_from_bbegin:
|
||||
jmp b6
|
||||
//SEG4 @6
|
||||
b6:
|
||||
//SEG3 [1] phi from @begin to @7 [phi:@begin->@7]
|
||||
b7_from_bbegin:
|
||||
jmp b7
|
||||
//SEG4 @7
|
||||
b7:
|
||||
//SEG5 [2] call main
|
||||
jsr main
|
||||
//SEG6 [3] phi from @6 to @end [phi:@6->@end]
|
||||
bend_from_b6:
|
||||
//SEG6 [3] phi from @7 to @end [phi:@7->@end]
|
||||
bend_from_b7:
|
||||
jmp bend
|
||||
//SEG7 @end
|
||||
bend:
|
||||
@ -503,17 +839,17 @@ irq_bottom_1: {
|
||||
}
|
||||
|
||||
ASSEMBLER OPTIMIZATIONS
|
||||
Removing instruction jmp b6
|
||||
Removing instruction jmp b7
|
||||
Removing instruction jmp bend
|
||||
Removing instruction jmp breturn
|
||||
Removing instruction jmp breturn
|
||||
Removing instruction jmp breturn
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Removing instruction bbegin:
|
||||
Removing instruction b6_from_bbegin:
|
||||
Removing instruction bend_from_b6:
|
||||
Removing instruction b7_from_bbegin:
|
||||
Removing instruction bend_from_b7:
|
||||
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||
Removing instruction b6:
|
||||
Removing instruction b7:
|
||||
Removing instruction bend:
|
||||
Removing instruction breturn:
|
||||
Removing instruction breturn:
|
||||
@ -521,35 +857,102 @@ Removing instruction breturn:
|
||||
Succesful ASM optimization Pass5UnusedLabelElimination
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(label) @6
|
||||
(label) @7
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(const byte*) CIA1_INTERRUPT#0 CIA1_INTERRUPT = ((byte*))(word/dword/signed dword) 56333
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(const byte) CIA_INTERRUPT_CLEAR#0 CIA_INTERRUPT_CLEAR = (byte/signed byte/word/signed word/dword/signed dword) 127
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte*) GHOST_BYTE
|
||||
(const byte*) GHOST_BYTE#0 GHOST_BYTE = ((byte*))(word/signed word/dword/signed dword) 16383
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(const byte*) IRQ_ENABLE#0 IRQ_ENABLE = ((byte*))(word/dword/signed dword) 53274
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(const byte) IRQ_RASTER#0 IRQ_RASTER = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*) IRQ_STATUS
|
||||
(const byte*) IRQ_STATUS#0 IRQ_STATUS = ((byte*))(word/dword/signed dword) 53273
|
||||
(void()**) KERNEL_IRQ
|
||||
(const void()**) KERNEL_IRQ#0 KERNEL_IRQ = ((void()**))(word/signed word/dword/signed dword) 788
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
|
||||
(byte) RED
|
||||
(const byte) RED#0 RED = (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(const byte*) VIC_CONTROL#0 VIC_CONTROL = ((byte*))(word/dword/signed dword) 53265
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) YELLOW
|
||||
interrupt(KERNEL_MIN)(void()) irq_bottom_1()
|
||||
(label) irq_bottom_1::@return
|
||||
interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2()
|
||||
@ -581,11 +984,11 @@ Score: 160
|
||||
.const RED = 2
|
||||
.label GHOST_BYTE = $3fff
|
||||
//SEG2 @begin
|
||||
//SEG3 [1] phi from @begin to @6 [phi:@begin->@6]
|
||||
//SEG4 @6
|
||||
//SEG3 [1] phi from @begin to @7 [phi:@begin->@7]
|
||||
//SEG4 @7
|
||||
//SEG5 [2] call main
|
||||
jsr main
|
||||
//SEG6 [3] phi from @6 to @end [phi:@6->@end]
|
||||
//SEG6 [3] phi from @7 to @end [phi:@7->@end]
|
||||
//SEG7 @end
|
||||
//SEG8 main
|
||||
main: {
|
||||
|
@ -1,32 +1,99 @@
|
||||
(label) @6
|
||||
(label) @7
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(const byte*) CIA1_INTERRUPT#0 CIA1_INTERRUPT = ((byte*))(word/dword/signed dword) 56333
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(const byte) CIA_INTERRUPT_CLEAR#0 CIA_INTERRUPT_CLEAR = (byte/signed byte/word/signed word/dword/signed dword) 127
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte*) GHOST_BYTE
|
||||
(const byte*) GHOST_BYTE#0 GHOST_BYTE = ((byte*))(word/signed word/dword/signed dword) 16383
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(const byte*) IRQ_ENABLE#0 IRQ_ENABLE = ((byte*))(word/dword/signed dword) 53274
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(const byte) IRQ_RASTER#0 IRQ_RASTER = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*) IRQ_STATUS
|
||||
(const byte*) IRQ_STATUS#0 IRQ_STATUS = ((byte*))(word/dword/signed dword) 53273
|
||||
(void()**) KERNEL_IRQ
|
||||
(const void()**) KERNEL_IRQ#0 KERNEL_IRQ = ((void()**))(word/signed word/dword/signed dword) 788
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
|
||||
(byte) RED
|
||||
(const byte) RED#0 RED = (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(const byte*) VIC_CONTROL#0 VIC_CONTROL = ((byte*))(word/dword/signed dword) 53265
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) YELLOW
|
||||
interrupt(KERNEL_MIN)(void()) irq_bottom_1()
|
||||
(label) irq_bottom_1::@return
|
||||
interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2()
|
||||
|
@ -1,7 +1,7 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@11
|
||||
@11: scope:[] from @begin
|
||||
to:@12
|
||||
@12: scope:[] from @begin
|
||||
kickasm(location (const byte*) YSIN#0) {{ .var min = 50
|
||||
.var max = 250-21
|
||||
.var ampl = max-min;
|
||||
@ -13,14 +13,14 @@
|
||||
.for (var x=0;x<3; x++)
|
||||
.byte pic.getSinglecolorByte(x,y)
|
||||
}}
|
||||
to:@14
|
||||
@14: scope:[] from @11
|
||||
to:@15
|
||||
@15: scope:[] from @12
|
||||
[3] phi()
|
||||
[4] call main
|
||||
to:@end
|
||||
@end: scope:[] from @14
|
||||
@end: scope:[] from @15
|
||||
[5] phi()
|
||||
main: scope:[main] from @14
|
||||
main: scope:[main] from @15
|
||||
asm { sei }
|
||||
[7] call init
|
||||
to:main::@1
|
||||
|
@ -6,21 +6,87 @@ Inlined call (byte~) loop::$7 ← call plexFreeNextYpos
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48
|
||||
(byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53
|
||||
(byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49
|
||||
(byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55
|
||||
(byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248
|
||||
(word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016
|
||||
(byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248
|
||||
(byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249
|
||||
(byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264
|
||||
(byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266
|
||||
(byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269
|
||||
(byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271
|
||||
(byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275
|
||||
(byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276
|
||||
(byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277
|
||||
(byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280
|
||||
(byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281
|
||||
(byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281
|
||||
(byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282
|
||||
(byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283
|
||||
(byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284
|
||||
(byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285
|
||||
(byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286
|
||||
(byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287
|
||||
(byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265
|
||||
(byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265
|
||||
(byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128
|
||||
(byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64
|
||||
(byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32
|
||||
(byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16
|
||||
(byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270
|
||||
(byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270
|
||||
(byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16
|
||||
(byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272
|
||||
(byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272
|
||||
(byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267
|
||||
(byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268
|
||||
(byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273
|
||||
(byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274
|
||||
(byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296
|
||||
(byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320
|
||||
(byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321
|
||||
(byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322
|
||||
(byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323
|
||||
(byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333
|
||||
(byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127
|
||||
(byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576
|
||||
(byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577
|
||||
(byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578
|
||||
(byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579
|
||||
(byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589
|
||||
(void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788
|
||||
(void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534
|
||||
(byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
to:@3
|
||||
@3: scope:[] from @begin
|
||||
(byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9
|
||||
(byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10
|
||||
(byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11
|
||||
(byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12
|
||||
(byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13
|
||||
(byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14
|
||||
(byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15
|
||||
to:@4
|
||||
@4: scope:[] from @begin
|
||||
(byte) PLEX_COUNT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32
|
||||
(word[PLEX_COUNT#0]) PLEX_XPOS#0 ← { fill( PLEX_COUNT#0, 0) }
|
||||
(byte[PLEX_COUNT#0]) PLEX_YPOS#0 ← { fill( PLEX_COUNT#0, 0) }
|
||||
@ -31,7 +97,7 @@ CONTROL FLOW GRAPH SSA
|
||||
(byte) plex_show_idx#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) plex_sprite_idx#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) plex_sprite_msb#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
to:@8
|
||||
to:@9
|
||||
plexInit: scope:[plexInit] from init
|
||||
(byte*) plexInit::screen#1 ← phi( init/(byte*) plexInit::screen#0 )
|
||||
(byte*) plexInit::plexSetScreen1_screen#0 ← (byte*) plexInit::screen#1
|
||||
@ -236,20 +302,20 @@ plexShowSprite::@return: scope:[plexShowSprite] from plexShowSprite::@3 plexSho
|
||||
(byte) plex_sprite_msb#5 ← (byte) plex_sprite_msb#16
|
||||
return
|
||||
to:@return
|
||||
@8: scope:[] from @3
|
||||
(byte) plex_sprite_msb#41 ← phi( @3/(byte) plex_sprite_msb#0 )
|
||||
(byte) plex_sprite_idx#41 ← phi( @3/(byte) plex_sprite_idx#0 )
|
||||
(byte) plex_show_idx#41 ← phi( @3/(byte) plex_show_idx#0 )
|
||||
(byte*) PLEX_SCREEN_PTR#27 ← phi( @3/(byte*) PLEX_SCREEN_PTR#0 )
|
||||
@9: scope:[] from @4
|
||||
(byte) plex_sprite_msb#41 ← phi( @4/(byte) plex_sprite_msb#0 )
|
||||
(byte) plex_sprite_idx#41 ← phi( @4/(byte) plex_sprite_idx#0 )
|
||||
(byte) plex_show_idx#41 ← phi( @4/(byte) plex_show_idx#0 )
|
||||
(byte*) PLEX_SCREEN_PTR#27 ← phi( @4/(byte*) PLEX_SCREEN_PTR#0 )
|
||||
(byte[8]) PLEX_FREE_YPOS#0 ← { fill( 8, 0) }
|
||||
(byte) plex_free_next#4 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:@11
|
||||
@11: scope:[] from @8
|
||||
(byte) plex_free_next#37 ← phi( @8/(byte) plex_free_next#4 )
|
||||
(byte) plex_sprite_msb#38 ← phi( @8/(byte) plex_sprite_msb#41 )
|
||||
(byte) plex_sprite_idx#39 ← phi( @8/(byte) plex_sprite_idx#41 )
|
||||
(byte) plex_show_idx#39 ← phi( @8/(byte) plex_show_idx#41 )
|
||||
(byte*) PLEX_SCREEN_PTR#25 ← phi( @8/(byte*) PLEX_SCREEN_PTR#27 )
|
||||
to:@12
|
||||
@12: scope:[] from @9
|
||||
(byte) plex_free_next#37 ← phi( @9/(byte) plex_free_next#4 )
|
||||
(byte) plex_sprite_msb#38 ← phi( @9/(byte) plex_sprite_msb#41 )
|
||||
(byte) plex_sprite_idx#39 ← phi( @9/(byte) plex_sprite_idx#41 )
|
||||
(byte) plex_show_idx#39 ← phi( @9/(byte) plex_show_idx#41 )
|
||||
(byte*) PLEX_SCREEN_PTR#25 ← phi( @9/(byte*) PLEX_SCREEN_PTR#27 )
|
||||
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
|
||||
(byte*) SPRITE#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192
|
||||
(byte*) YSIN#0 ← ((byte*)) (word/signed word/dword/signed dword) 8448
|
||||
@ -264,16 +330,16 @@ plexShowSprite::@return: scope:[plexShowSprite] from plexShowSprite::@3 plexSho
|
||||
.for (var x=0;x<3; x++)
|
||||
.byte pic.getSinglecolorByte(x,y)
|
||||
}}
|
||||
to:@14
|
||||
main: scope:[main] from @14
|
||||
(byte*) YSIN#11 ← phi( @14/(byte*) YSIN#13 )
|
||||
(byte*) SPRITE#4 ← phi( @14/(byte*) SPRITE#5 )
|
||||
(byte) plex_free_next#31 ← phi( @14/(byte) plex_free_next#29 )
|
||||
(byte) plex_sprite_msb#33 ← phi( @14/(byte) plex_sprite_msb#30 )
|
||||
(byte) plex_sprite_idx#34 ← phi( @14/(byte) plex_sprite_idx#32 )
|
||||
(byte) plex_show_idx#34 ← phi( @14/(byte) plex_show_idx#32 )
|
||||
(byte*) SCREEN#2 ← phi( @14/(byte*) SCREEN#3 )
|
||||
(byte*) PLEX_SCREEN_PTR#17 ← phi( @14/(byte*) PLEX_SCREEN_PTR#21 )
|
||||
to:@15
|
||||
main: scope:[main] from @15
|
||||
(byte*) YSIN#11 ← phi( @15/(byte*) YSIN#13 )
|
||||
(byte*) SPRITE#4 ← phi( @15/(byte*) SPRITE#5 )
|
||||
(byte) plex_free_next#31 ← phi( @15/(byte) plex_free_next#29 )
|
||||
(byte) plex_sprite_msb#33 ← phi( @15/(byte) plex_sprite_msb#30 )
|
||||
(byte) plex_sprite_idx#34 ← phi( @15/(byte) plex_sprite_idx#32 )
|
||||
(byte) plex_show_idx#34 ← phi( @15/(byte) plex_show_idx#32 )
|
||||
(byte*) SCREEN#2 ← phi( @15/(byte*) SCREEN#3 )
|
||||
(byte*) PLEX_SCREEN_PTR#17 ← phi( @15/(byte*) PLEX_SCREEN_PTR#21 )
|
||||
asm { sei }
|
||||
call init
|
||||
to:main::@1
|
||||
@ -618,48 +684,128 @@ loop::@return: scope:[loop] from loop::@1
|
||||
(byte) plex_free_next#9 ← (byte) plex_free_next#19
|
||||
return
|
||||
to:@return
|
||||
@14: scope:[] from @11
|
||||
(byte*) YSIN#13 ← phi( @11/(byte*) YSIN#0 )
|
||||
(byte*) SPRITE#5 ← phi( @11/(byte*) SPRITE#0 )
|
||||
(byte*) SCREEN#3 ← phi( @11/(byte*) SCREEN#0 )
|
||||
(byte) plex_free_next#29 ← phi( @11/(byte) plex_free_next#37 )
|
||||
(byte) plex_sprite_msb#30 ← phi( @11/(byte) plex_sprite_msb#38 )
|
||||
(byte) plex_sprite_idx#32 ← phi( @11/(byte) plex_sprite_idx#39 )
|
||||
(byte) plex_show_idx#32 ← phi( @11/(byte) plex_show_idx#39 )
|
||||
(byte*) PLEX_SCREEN_PTR#21 ← phi( @11/(byte*) PLEX_SCREEN_PTR#25 )
|
||||
@15: scope:[] from @12
|
||||
(byte*) YSIN#13 ← phi( @12/(byte*) YSIN#0 )
|
||||
(byte*) SPRITE#5 ← phi( @12/(byte*) SPRITE#0 )
|
||||
(byte*) SCREEN#3 ← phi( @12/(byte*) SCREEN#0 )
|
||||
(byte) plex_free_next#29 ← phi( @12/(byte) plex_free_next#37 )
|
||||
(byte) plex_sprite_msb#30 ← phi( @12/(byte) plex_sprite_msb#38 )
|
||||
(byte) plex_sprite_idx#32 ← phi( @12/(byte) plex_sprite_idx#39 )
|
||||
(byte) plex_show_idx#32 ← phi( @12/(byte) plex_show_idx#39 )
|
||||
(byte*) PLEX_SCREEN_PTR#21 ← phi( @12/(byte*) PLEX_SCREEN_PTR#25 )
|
||||
call main
|
||||
to:@15
|
||||
@15: scope:[] from @14
|
||||
(byte) plex_free_next#20 ← phi( @14/(byte) plex_free_next#6 )
|
||||
(byte) plex_sprite_msb#22 ← phi( @14/(byte) plex_sprite_msb#7 )
|
||||
(byte) plex_sprite_idx#21 ← phi( @14/(byte) plex_sprite_idx#6 )
|
||||
(byte) plex_show_idx#21 ← phi( @14/(byte) plex_show_idx#6 )
|
||||
(byte*) PLEX_SCREEN_PTR#14 ← phi( @14/(byte*) PLEX_SCREEN_PTR#4 )
|
||||
to:@16
|
||||
@16: scope:[] from @15
|
||||
(byte) plex_free_next#20 ← phi( @15/(byte) plex_free_next#6 )
|
||||
(byte) plex_sprite_msb#22 ← phi( @15/(byte) plex_sprite_msb#7 )
|
||||
(byte) plex_sprite_idx#21 ← phi( @15/(byte) plex_sprite_idx#6 )
|
||||
(byte) plex_show_idx#21 ← phi( @15/(byte) plex_show_idx#6 )
|
||||
(byte*) PLEX_SCREEN_PTR#14 ← phi( @15/(byte*) PLEX_SCREEN_PTR#4 )
|
||||
(byte*) PLEX_SCREEN_PTR#7 ← (byte*) PLEX_SCREEN_PTR#14
|
||||
(byte) plex_show_idx#10 ← (byte) plex_show_idx#21
|
||||
(byte) plex_sprite_idx#10 ← (byte) plex_sprite_idx#21
|
||||
(byte) plex_sprite_msb#11 ← (byte) plex_sprite_msb#22
|
||||
(byte) plex_free_next#10 ← (byte) plex_free_next#20
|
||||
to:@end
|
||||
@end: scope:[] from @15
|
||||
@end: scope:[] from @16
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(word/signed word/dword/signed dword~) $0
|
||||
(label) @11
|
||||
(label) @14
|
||||
(label) @12
|
||||
(label) @15
|
||||
(label) @3
|
||||
(label) @8
|
||||
(label) @16
|
||||
(label) @4
|
||||
(label) @9
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL#0
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL1#0
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL2#0
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL3#0
|
||||
(byte*) BGCOL4
|
||||
(byte*) BGCOL4#0
|
||||
(byte) BLACK
|
||||
(byte) BLACK#0
|
||||
(byte) BLUE
|
||||
(byte) BLUE#0
|
||||
(byte*) BORDERCOL
|
||||
(byte*) BORDERCOL#0
|
||||
(byte) BROWN
|
||||
(byte) BROWN#0
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHARGEN#0
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_INTERRUPT#0
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A#0
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_A_DDR#0
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B#0
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA1_PORT_B_DDR#0
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_INTERRUPT#0
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A#0
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_A_DDR#0
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B#0
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte*) CIA2_PORT_B_DDR#0
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte) CIA_INTERRUPT_CLEAR#0
|
||||
(byte*) COLS
|
||||
(byte*) COLS#0
|
||||
(byte) CYAN
|
||||
(byte) CYAN#0
|
||||
(byte*) D011
|
||||
(byte*) D011#0
|
||||
(byte*) D016
|
||||
(byte*) D016#0
|
||||
(byte*) D018
|
||||
(byte*) D018#0
|
||||
(byte) DARK_GREY
|
||||
(byte) DARK_GREY#0
|
||||
(byte) GREEN
|
||||
(byte) GREEN#0
|
||||
(byte) GREY
|
||||
(byte) GREY#0
|
||||
(void()**) HARDWARE_IRQ
|
||||
(void()**) HARDWARE_IRQ#0
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_BG#0
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte) IRQ_COLLISION_SPRITE#0
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte*) IRQ_ENABLE#0
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_LIGHTPEN#0
|
||||
(byte) IRQ_RASTER
|
||||
(byte) IRQ_RASTER#0
|
||||
(byte*) IRQ_STATUS
|
||||
(byte*) IRQ_STATUS#0
|
||||
(void()**) KERNEL_IRQ
|
||||
(void()**) KERNEL_IRQ#0
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_X#0
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte*) LIGHTPEN_Y#0
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_BLUE#0
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREEN#0
|
||||
(byte) LIGHT_GREY
|
||||
(byte) LIGHT_GREY#0
|
||||
(byte) ORANGE
|
||||
(byte) ORANGE#0
|
||||
(byte) PINK
|
||||
(byte) PINK#0
|
||||
(byte) PLEX_COUNT
|
||||
(byte) PLEX_COUNT#0
|
||||
(byte[8]) PLEX_FREE_YPOS
|
||||
@ -722,8 +868,28 @@ SYMBOL TABLE SSA
|
||||
(word[PLEX_COUNT#0]) PLEX_XPOS#0
|
||||
(byte[PLEX_COUNT#0]) PLEX_YPOS
|
||||
(byte[PLEX_COUNT#0]) PLEX_YPOS#0
|
||||
(byte*) PROCPORT
|
||||
(byte*) PROCPORT#0
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte*) PROCPORT_DDR#0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_KERNEL_IO#0
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_ALL#0
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_CHARROM#0
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PROCPORT_RAM_IO#0
|
||||
(byte) PURPLE
|
||||
(byte) PURPLE#0
|
||||
(byte*) RASTER
|
||||
(byte*) RASTER#0
|
||||
(byte) RED
|
||||
(byte) RED#0
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SCREEN#1
|
||||
@ -740,18 +906,50 @@ SYMBOL TABLE SSA
|
||||
(byte*) SPRITES_COLS#0
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_ENABLE#0
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_X#0
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_EXPAND_Y#0
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC#0
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC1#0
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_MC2#0
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_PRIORITY#0
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XMSB#0
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_XPOS#0
|
||||
(byte*) SPRITES_YPOS
|
||||
(byte*) SPRITES_YPOS#0
|
||||
(word) SPRITE_PTRS
|
||||
(word) SPRITE_PTRS#0
|
||||
(byte) VIC_BMM
|
||||
(byte) VIC_BMM#0
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL#0
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte*) VIC_CONTROL2#0
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_CSEL#0
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_DEN#0
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_ECM#0
|
||||
(byte) VIC_MCM
|
||||
(byte) VIC_MCM#0
|
||||
(byte*) VIC_MEMORY
|
||||
(byte*) VIC_MEMORY#0
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RSEL#0
|
||||
(byte) VIC_RST8
|
||||
(byte) VIC_RST8#0
|
||||
(byte) WHITE
|
||||
(byte) WHITE#0
|
||||
(byte) YELLOW
|
||||
(byte) YELLOW#0
|
||||
(byte*) YSIN
|
||||
(byte*) YSIN#0
|
||||
(byte*) YSIN#1
|
||||
@ -1479,19 +1677,85 @@ Simple Condition (bool~) loop::$10 if((byte) loop::ss#1!=rangelast(0,loop::$6))
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Rewriting && if()-condition to two if()s (bool~) plexSort::$7 ← (bool~) plexSort::$5 && (bool~) plexSort::$6
|
||||
Successful SSA optimization Pass2ConditionalAndOrRewriting
|
||||
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
|
||||
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
|
||||
Constant (const byte*) PROCPORT#0 = ((byte*))1
|
||||
Constant (const byte) PROCPORT_RAM_ALL#0 = 48
|
||||
Constant (const byte) PROCPORT_RAM_IO#0 = 53
|
||||
Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49
|
||||
Constant (const byte) PROCPORT_KERNEL_IO#0 = 54
|
||||
Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55
|
||||
Constant (const byte*) CHARGEN#0 = ((byte*))53248
|
||||
Constant (const word) SPRITE_PTRS#0 = 1016
|
||||
Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248
|
||||
Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249
|
||||
Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264
|
||||
Constant (const byte*) RASTER#0 = ((byte*))53266
|
||||
Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269
|
||||
Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271
|
||||
Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275
|
||||
Constant (const byte*) SPRITES_MC#0 = ((byte*))53276
|
||||
Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277
|
||||
Constant (const byte*) BORDERCOL#0 = ((byte*))53280
|
||||
Constant (const byte*) BGCOL#0 = ((byte*))53281
|
||||
Constant (const byte*) BGCOL1#0 = ((byte*))53281
|
||||
Constant (const byte*) BGCOL2#0 = ((byte*))53282
|
||||
Constant (const byte*) BGCOL3#0 = ((byte*))53283
|
||||
Constant (const byte*) BGCOL4#0 = ((byte*))53284
|
||||
Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285
|
||||
Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286
|
||||
Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287
|
||||
Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265
|
||||
Constant (const byte*) D011#0 = ((byte*))53265
|
||||
Constant (const byte) VIC_RST8#0 = 128
|
||||
Constant (const byte) VIC_ECM#0 = 64
|
||||
Constant (const byte) VIC_BMM#0 = 32
|
||||
Constant (const byte) VIC_DEN#0 = 16
|
||||
Constant (const byte) VIC_RSEL#0 = 8
|
||||
Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270
|
||||
Constant (const byte*) D016#0 = ((byte*))53270
|
||||
Constant (const byte) VIC_MCM#0 = 16
|
||||
Constant (const byte) VIC_CSEL#0 = 8
|
||||
Constant (const byte*) D018#0 = ((byte*))53272
|
||||
Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272
|
||||
Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267
|
||||
Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268
|
||||
Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273
|
||||
Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274
|
||||
Constant (const byte) IRQ_RASTER#0 = 1
|
||||
Constant (const byte) IRQ_COLLISION_BG#0 = 2
|
||||
Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4
|
||||
Constant (const byte) IRQ_LIGHTPEN#0 = 8
|
||||
Constant (const byte*) COLS#0 = ((byte*))55296
|
||||
Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320
|
||||
Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321
|
||||
Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322
|
||||
Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323
|
||||
Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333
|
||||
Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127
|
||||
Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576
|
||||
Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577
|
||||
Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578
|
||||
Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579
|
||||
Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589
|
||||
Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788
|
||||
Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534
|
||||
Constant (const byte) BLACK#0 = 0
|
||||
Constant (const byte) WHITE#0 = 1
|
||||
Constant (const byte) RED#0 = 2
|
||||
Constant (const byte) CYAN#0 = 3
|
||||
Constant (const byte) PURPLE#0 = 4
|
||||
Constant (const byte) GREEN#0 = 5
|
||||
Constant (const byte) BLUE#0 = 6
|
||||
Constant (const byte) YELLOW#0 = 7
|
||||
Constant (const byte) ORANGE#0 = 8
|
||||
Constant (const byte) BROWN#0 = 9
|
||||
Constant (const byte) PINK#0 = 10
|
||||
Constant (const byte) DARK_GREY#0 = 11
|
||||
Constant (const byte) GREY#0 = 12
|
||||
Constant (const byte) LIGHT_GREEN#0 = 13
|
||||
Constant (const byte) LIGHT_BLUE#0 = 14
|
||||
Constant (const byte) LIGHT_GREY#0 = 15
|
||||
Constant (const byte) PLEX_COUNT#0 = 32
|
||||
Constant (const word/signed word/dword/signed dword) $0 = 1024+1016
|
||||
Constant (const byte) plex_show_idx#0 = 0
|
||||
@ -1560,13 +1824,13 @@ Resolved ranged next value loop::sy#1 ← ++ loop::sy#2 to ++
|
||||
Resolved ranged comparison value if(loop::sy#1!=rangelast(0,loop::$1)) goto loop::@7 to (const byte/signed word/word/dword/signed dword) loop::$1+(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
Resolved ranged next value loop::ss#1 ← ++ loop::ss#6 to ++
|
||||
Resolved ranged comparison value if(loop::ss#1!=rangelast(0,loop::$6)) goto loop::@11 to (const byte/signed word/word/dword/signed dword) loop::$6+(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) plexInit::@3
|
||||
Culled Empty Block (label) plexSort::@4
|
||||
Culled Empty Block (label) plexSort::@6
|
||||
Culled Empty Block (label) plexSort::plexFreePrepare1_@2
|
||||
Culled Empty Block (label) plexShowSprite::@3
|
||||
Culled Empty Block (label) @8
|
||||
Culled Empty Block (label) @9
|
||||
Culled Empty Block (label) main::@2
|
||||
Culled Empty Block (label) init::@5
|
||||
Culled Empty Block (label) loop::@2
|
||||
@ -1576,7 +1840,7 @@ Culled Empty Block (label) loop::@10
|
||||
Culled Empty Block (label) loop::plexFreeNextYpos1_@return
|
||||
Culled Empty Block (label) loop::@29
|
||||
Culled Empty Block (label) loop::@13
|
||||
Culled Empty Block (label) @15
|
||||
Culled Empty Block (label) @16
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte) plexSort::m#2 = (byte~) plexSort::$1
|
||||
Alias (byte) plexSort::s#3 = (byte~) plexSort::$4
|
||||
@ -1648,7 +1912,7 @@ Added new block during phi lifting init::@6(between init::@1 and init::@1)
|
||||
Added new block during phi lifting init::@7(between init::@2 and init::@2)
|
||||
Added new block during phi lifting plexInit::@4(between plexInit::@1 and plexInit::@1)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @14
|
||||
Adding NOP phi() at start of @15
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main::@1
|
||||
Adding NOP phi() at start of loop
|
||||
@ -1693,7 +1957,7 @@ Culled Empty Block (label) init::@7
|
||||
Culled Empty Block (label) init::@6
|
||||
Culled Empty Block (label) plexInit::@4
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @14
|
||||
Adding NOP phi() at start of @15
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main::@1
|
||||
Adding NOP phi() at start of loop
|
||||
@ -1706,8 +1970,8 @@ Adding NOP phi() at start of plexInit::plexSetScreen1
|
||||
FINAL CONTROL FLOW GRAPH
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@11
|
||||
@11: scope:[] from @begin
|
||||
to:@12
|
||||
@12: scope:[] from @begin
|
||||
kickasm(location (const byte*) YSIN#0) {{ .var min = 50
|
||||
.var max = 250-21
|
||||
.var ampl = max-min;
|
||||
@ -1719,14 +1983,14 @@ FINAL CONTROL FLOW GRAPH
|
||||
.for (var x=0;x<3; x++)
|
||||
.byte pic.getSinglecolorByte(x,y)
|
||||
}}
|
||||
to:@14
|
||||
@14: scope:[] from @11
|
||||
to:@15
|
||||
@15: scope:[] from @12
|
||||
[3] phi()
|
||||
[4] call main
|
||||
to:@end
|
||||
@end: scope:[] from @14
|
||||
@end: scope:[] from @15
|
||||
[5] phi()
|
||||
main: scope:[main] from @14
|
||||
main: scope:[main] from @15
|
||||
asm { sei }
|
||||
[7] call init
|
||||
to:main::@1
|
||||
@ -1920,10 +2184,50 @@ plexInit::@return: scope:[plexInit] from plexInit::@1
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte) PLEX_COUNT
|
||||
(byte[8]) PLEX_FREE_YPOS
|
||||
(byte[PLEX_COUNT#0]) PLEX_PTR
|
||||
@ -1931,17 +2235,43 @@ VARIABLE REGISTER WEIGHTS
|
||||
(byte[PLEX_COUNT#0]) PLEX_SORTED_IDX
|
||||
(word[PLEX_COUNT#0]) PLEX_XPOS
|
||||
(byte[PLEX_COUNT#0]) PLEX_YPOS
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(byte*) SPRITE
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(byte*) YSIN
|
||||
(void()) init()
|
||||
(byte~) init::$6 22.0
|
||||
@ -2151,20 +2481,20 @@ INITIAL ASM
|
||||
.label plex_sprite_msb = 8
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
jmp b11
|
||||
//SEG3 @11
|
||||
b11:
|
||||
jmp b12
|
||||
//SEG3 @12
|
||||
b12:
|
||||
//SEG4 kickasm(location (const byte*) YSIN#0) {{ .var min = 50 .var max = 250-21 .var ampl = max-min; .for(var i=0;i<256;i++) .byte round(min+(ampl/2)+(ampl/2)*sin(toRadians(360*i/256))) }}
|
||||
//SEG5 kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) .for (var x=0;x<3; x++) .byte pic.getSinglecolorByte(x,y) }}
|
||||
//SEG6 [3] phi from @11 to @14 [phi:@11->@14]
|
||||
b14_from_b11:
|
||||
jmp b14
|
||||
//SEG7 @14
|
||||
b14:
|
||||
//SEG6 [3] phi from @12 to @15 [phi:@12->@15]
|
||||
b15_from_b12:
|
||||
jmp b15
|
||||
//SEG7 @15
|
||||
b15:
|
||||
//SEG8 [4] call main
|
||||
jsr main
|
||||
//SEG9 [5] phi from @14 to @end [phi:@14->@end]
|
||||
bend_from_b14:
|
||||
//SEG9 [5] phi from @15 to @end [phi:@15->@end]
|
||||
bend_from_b15:
|
||||
jmp bend
|
||||
//SEG10 @end
|
||||
bend:
|
||||
@ -2964,20 +3294,20 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.label plex_sprite_msb = 5
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
jmp b11
|
||||
//SEG3 @11
|
||||
b11:
|
||||
jmp b12
|
||||
//SEG3 @12
|
||||
b12:
|
||||
//SEG4 kickasm(location (const byte*) YSIN#0) {{ .var min = 50 .var max = 250-21 .var ampl = max-min; .for(var i=0;i<256;i++) .byte round(min+(ampl/2)+(ampl/2)*sin(toRadians(360*i/256))) }}
|
||||
//SEG5 kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) .for (var x=0;x<3; x++) .byte pic.getSinglecolorByte(x,y) }}
|
||||
//SEG6 [3] phi from @11 to @14 [phi:@11->@14]
|
||||
b14_from_b11:
|
||||
jmp b14
|
||||
//SEG7 @14
|
||||
b14:
|
||||
//SEG6 [3] phi from @12 to @15 [phi:@12->@15]
|
||||
b15_from_b12:
|
||||
jmp b15
|
||||
//SEG7 @15
|
||||
b15:
|
||||
//SEG8 [4] call main
|
||||
jsr main
|
||||
//SEG9 [5] phi from @14 to @end [phi:@14->@end]
|
||||
bend_from_b14:
|
||||
//SEG9 [5] phi from @15 to @end [phi:@15->@end]
|
||||
bend_from_b15:
|
||||
jmp bend
|
||||
//SEG10 @end
|
||||
bend:
|
||||
@ -3504,8 +3834,8 @@ plexInit: {
|
||||
|
||||
|
||||
ASSEMBLER OPTIMIZATIONS
|
||||
Removing instruction jmp b11
|
||||
Removing instruction jmp b14
|
||||
Removing instruction jmp b12
|
||||
Removing instruction jmp b15
|
||||
Removing instruction jmp bend
|
||||
Removing instruction jmp b1
|
||||
Removing instruction jmp breturn
|
||||
@ -3562,9 +3892,9 @@ Replacing label b1_from_b1 with b1
|
||||
Replacing label b2_from_b2 with b2
|
||||
Replacing label b1_from_b1 with b1
|
||||
Removing instruction bbegin:
|
||||
Removing instruction b11:
|
||||
Removing instruction b14_from_b11:
|
||||
Removing instruction bend_from_b14:
|
||||
Removing instruction b12:
|
||||
Removing instruction b15_from_b12:
|
||||
Removing instruction bend_from_b15:
|
||||
Removing instruction b1_from_main:
|
||||
Removing instruction loop_from_b1:
|
||||
Removing instruction b1:
|
||||
@ -3584,7 +3914,7 @@ Removing instruction plexSetScreen1_from_plexInit:
|
||||
Removing instruction b1_from_plexSetScreen1:
|
||||
Removing instruction b1_from_b1:
|
||||
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||
Removing instruction b14:
|
||||
Removing instruction b15:
|
||||
Removing instruction bend:
|
||||
Removing instruction b1:
|
||||
Removing instruction breturn:
|
||||
@ -3634,18 +3964,58 @@ Removing unreachable instruction jmp breturn
|
||||
Succesful ASM optimization Pass5UnreachableCodeElimination
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(label) @11
|
||||
(label) @14
|
||||
(label) @12
|
||||
(label) @15
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(const byte*) D011#0 D011 = ((byte*))(word/dword/signed dword) 53265
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte) PLEX_COUNT
|
||||
(const byte) PLEX_COUNT#0 PLEX_COUNT = (byte/signed byte/word/signed word/dword/signed dword) 32
|
||||
(byte[8]) PLEX_FREE_YPOS
|
||||
@ -3660,8 +4030,18 @@ FINAL SYMBOL TABLE
|
||||
(const word[PLEX_COUNT#0]) PLEX_XPOS#0 PLEX_XPOS = { fill( PLEX_COUNT#0, 0) }
|
||||
(byte[PLEX_COUNT#0]) PLEX_YPOS
|
||||
(const byte[PLEX_COUNT#0]) PLEX_YPOS#0 PLEX_YPOS = { fill( PLEX_COUNT#0, 0) }
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(byte*) SPRITE
|
||||
@ -3670,18 +4050,34 @@ FINAL SYMBOL TABLE
|
||||
(const byte*) SPRITES_COLS#0 SPRITES_COLS = ((byte*))(word/dword/signed dword) 53287
|
||||
(byte*) SPRITES_ENABLE
|
||||
(const byte*) SPRITES_ENABLE#0 SPRITES_ENABLE = ((byte*))(word/dword/signed dword) 53269
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(const byte*) SPRITES_XMSB#0 SPRITES_XMSB = ((byte*))(word/dword/signed dword) 53264
|
||||
(byte*) SPRITES_XPOS
|
||||
(const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word/dword/signed dword) 53248
|
||||
(byte*) SPRITES_YPOS
|
||||
(const byte*) SPRITES_YPOS#0 SPRITES_YPOS = ((byte*))(word/dword/signed dword) 53249
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(const byte) VIC_DEN#0 VIC_DEN = (byte/signed byte/word/signed word/dword/signed dword) 16
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) VIC_RST8
|
||||
(const byte) VIC_RST8#0 VIC_RST8 = (byte/word/signed word/dword/signed dword) 128
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(byte*) YSIN
|
||||
(const byte*) YSIN#0 YSIN = ((byte*))(word/signed word/dword/signed dword) 8448
|
||||
(void()) init()
|
||||
@ -3865,14 +4261,14 @@ Score: 63466
|
||||
.label plex_show_idx = 4
|
||||
.label plex_sprite_msb = 5
|
||||
//SEG2 @begin
|
||||
//SEG3 @11
|
||||
//SEG3 @12
|
||||
//SEG4 kickasm(location (const byte*) YSIN#0) {{ .var min = 50 .var max = 250-21 .var ampl = max-min; .for(var i=0;i<256;i++) .byte round(min+(ampl/2)+(ampl/2)*sin(toRadians(360*i/256))) }}
|
||||
//SEG5 kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) .for (var x=0;x<3; x++) .byte pic.getSinglecolorByte(x,y) }}
|
||||
//SEG6 [3] phi from @11 to @14 [phi:@11->@14]
|
||||
//SEG7 @14
|
||||
//SEG6 [3] phi from @12 to @15 [phi:@12->@15]
|
||||
//SEG7 @15
|
||||
//SEG8 [4] call main
|
||||
jsr main
|
||||
//SEG9 [5] phi from @14 to @end [phi:@14->@end]
|
||||
//SEG9 [5] phi from @15 to @end [phi:@15->@end]
|
||||
//SEG10 @end
|
||||
//SEG11 main
|
||||
main: {
|
||||
|
@ -1,15 +1,55 @@
|
||||
(label) @11
|
||||
(label) @14
|
||||
(label) @12
|
||||
(label) @15
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(const byte*) D011#0 D011 = ((byte*))(word/dword/signed dword) 53265
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte) PLEX_COUNT
|
||||
(const byte) PLEX_COUNT#0 PLEX_COUNT = (byte/signed byte/word/signed word/dword/signed dword) 32
|
||||
(byte[8]) PLEX_FREE_YPOS
|
||||
@ -24,8 +64,18 @@
|
||||
(const word[PLEX_COUNT#0]) PLEX_XPOS#0 PLEX_XPOS = { fill( PLEX_COUNT#0, 0) }
|
||||
(byte[PLEX_COUNT#0]) PLEX_YPOS
|
||||
(const byte[PLEX_COUNT#0]) PLEX_YPOS#0 PLEX_YPOS = { fill( PLEX_COUNT#0, 0) }
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(byte*) SPRITE
|
||||
@ -34,18 +84,34 @@
|
||||
(const byte*) SPRITES_COLS#0 SPRITES_COLS = ((byte*))(word/dword/signed dword) 53287
|
||||
(byte*) SPRITES_ENABLE
|
||||
(const byte*) SPRITES_ENABLE#0 SPRITES_ENABLE = ((byte*))(word/dword/signed dword) 53269
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(const byte*) SPRITES_XMSB#0 SPRITES_XMSB = ((byte*))(word/dword/signed dword) 53264
|
||||
(byte*) SPRITES_XPOS
|
||||
(const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word/dword/signed dword) 53248
|
||||
(byte*) SPRITES_YPOS
|
||||
(const byte*) SPRITES_YPOS#0 SPRITES_YPOS = ((byte*))(word/dword/signed dword) 53249
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(const byte) VIC_DEN#0 VIC_DEN = (byte/signed byte/word/signed word/dword/signed dword) 16
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) VIC_RST8
|
||||
(const byte) VIC_RST8#0 VIC_RST8 = (byte/word/signed word/dword/signed dword) 128
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(byte*) YSIN
|
||||
(const byte*) YSIN#0 YSIN = ((byte*))(word/signed word/dword/signed dword) 8448
|
||||
(void()) init()
|
||||
|
@ -1,13 +1,13 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@5
|
||||
@5: scope:[] from @begin
|
||||
to:@6
|
||||
@6: scope:[] from @begin
|
||||
[1] phi()
|
||||
[2] call main
|
||||
to:@end
|
||||
@end: scope:[] from @5
|
||||
@end: scope:[] from @6
|
||||
[3] phi()
|
||||
main: scope:[main] from @5
|
||||
main: scope:[main] from @6
|
||||
asm { sei }
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main main::@2 main::@5
|
||||
|
@ -2,11 +2,87 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48
|
||||
(byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53
|
||||
(byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49
|
||||
(byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55
|
||||
(byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248
|
||||
(word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016
|
||||
(byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248
|
||||
(byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249
|
||||
(byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264
|
||||
(byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266
|
||||
(byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269
|
||||
(byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271
|
||||
(byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275
|
||||
(byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276
|
||||
(byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277
|
||||
(byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280
|
||||
(byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281
|
||||
to:@4
|
||||
main: scope:[main] from @5
|
||||
(byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281
|
||||
(byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282
|
||||
(byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283
|
||||
(byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284
|
||||
(byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285
|
||||
(byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286
|
||||
(byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287
|
||||
(byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265
|
||||
(byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265
|
||||
(byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128
|
||||
(byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64
|
||||
(byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32
|
||||
(byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16
|
||||
(byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270
|
||||
(byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270
|
||||
(byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16
|
||||
(byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272
|
||||
(byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272
|
||||
(byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267
|
||||
(byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268
|
||||
(byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273
|
||||
(byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274
|
||||
(byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296
|
||||
(byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320
|
||||
(byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321
|
||||
(byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322
|
||||
(byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323
|
||||
(byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333
|
||||
(byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127
|
||||
(byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576
|
||||
(byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577
|
||||
(byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578
|
||||
(byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579
|
||||
(byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589
|
||||
(void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788
|
||||
(void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534
|
||||
(byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9
|
||||
(byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10
|
||||
(byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11
|
||||
(byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12
|
||||
(byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13
|
||||
(byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14
|
||||
(byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15
|
||||
to:@5
|
||||
main: scope:[main] from @6
|
||||
asm { sei }
|
||||
to:main::@2
|
||||
main::@1: scope:[main] from main::@7
|
||||
@ -28,9 +104,9 @@ main::@7: scope:[main] from main::@5
|
||||
main::@return: scope:[main] from main::@7
|
||||
return
|
||||
to:@return
|
||||
@4: scope:[] from @begin
|
||||
@5: scope:[] from @begin
|
||||
(byte[]) rastercols#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/word/signed word/dword/signed dword) 255 }
|
||||
to:@5
|
||||
to:@6
|
||||
raster: scope:[raster] from main::@5
|
||||
asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop }
|
||||
(byte) raster::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
@ -50,25 +126,177 @@ raster::@1: scope:[raster] from raster raster::@1
|
||||
raster::@return: scope:[raster] from raster::@1
|
||||
return
|
||||
to:@return
|
||||
@5: scope:[] from @4
|
||||
call main
|
||||
to:@6
|
||||
@6: scope:[] from @5
|
||||
call main
|
||||
to:@7
|
||||
@7: scope:[] from @6
|
||||
to:@end
|
||||
@end: scope:[] from @6
|
||||
@end: scope:[] from @7
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @4
|
||||
(label) @5
|
||||
(label) @6
|
||||
(label) @7
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL#0
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL1#0
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL2#0
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL3#0
|
||||
(byte*) BGCOL4
|
||||
(byte*) BGCOL4#0
|
||||
(byte) BLACK
|
||||
(byte) BLACK#0
|
||||
(byte) BLUE
|
||||
(byte) BLUE#0
|
||||
(byte*) BORDERCOL
|
||||
(byte*) BORDERCOL#0
|
||||
(byte) BROWN
|
||||
(byte) BROWN#0
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHARGEN#0
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_INTERRUPT#0
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A#0
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_A_DDR#0
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B#0
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA1_PORT_B_DDR#0
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_INTERRUPT#0
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A#0
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_A_DDR#0
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B#0
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte*) CIA2_PORT_B_DDR#0
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte) CIA_INTERRUPT_CLEAR#0
|
||||
(byte*) COLS
|
||||
(byte*) COLS#0
|
||||
(byte) CYAN
|
||||
(byte) CYAN#0
|
||||
(byte*) D011
|
||||
(byte*) D011#0
|
||||
(byte*) D016
|
||||
(byte*) D016#0
|
||||
(byte*) D018
|
||||
(byte*) D018#0
|
||||
(byte) DARK_GREY
|
||||
(byte) DARK_GREY#0
|
||||
(byte) GREEN
|
||||
(byte) GREEN#0
|
||||
(byte) GREY
|
||||
(byte) GREY#0
|
||||
(void()**) HARDWARE_IRQ
|
||||
(void()**) HARDWARE_IRQ#0
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_BG#0
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte) IRQ_COLLISION_SPRITE#0
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte*) IRQ_ENABLE#0
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_LIGHTPEN#0
|
||||
(byte) IRQ_RASTER
|
||||
(byte) IRQ_RASTER#0
|
||||
(byte*) IRQ_STATUS
|
||||
(byte*) IRQ_STATUS#0
|
||||
(void()**) KERNEL_IRQ
|
||||
(void()**) KERNEL_IRQ#0
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_X#0
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte*) LIGHTPEN_Y#0
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_BLUE#0
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREEN#0
|
||||
(byte) LIGHT_GREY
|
||||
(byte) LIGHT_GREY#0
|
||||
(byte) ORANGE
|
||||
(byte) ORANGE#0
|
||||
(byte) PINK
|
||||
(byte) PINK#0
|
||||
(byte*) PROCPORT
|
||||
(byte*) PROCPORT#0
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte*) PROCPORT_DDR#0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_KERNEL_IO#0
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_ALL#0
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_CHARROM#0
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PROCPORT_RAM_IO#0
|
||||
(byte) PURPLE
|
||||
(byte) PURPLE#0
|
||||
(byte*) RASTER
|
||||
(byte*) RASTER#0
|
||||
(byte) RED
|
||||
(byte) RED#0
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_COLS#0
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_ENABLE#0
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_X#0
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_EXPAND_Y#0
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC#0
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC1#0
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_MC2#0
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_PRIORITY#0
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XMSB#0
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_XPOS#0
|
||||
(byte*) SPRITES_YPOS
|
||||
(byte*) SPRITES_YPOS#0
|
||||
(word) SPRITE_PTRS
|
||||
(word) SPRITE_PTRS#0
|
||||
(byte) VIC_BMM
|
||||
(byte) VIC_BMM#0
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL#0
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte*) VIC_CONTROL2#0
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_CSEL#0
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_DEN#0
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_ECM#0
|
||||
(byte) VIC_MCM
|
||||
(byte) VIC_MCM#0
|
||||
(byte*) VIC_MEMORY
|
||||
(byte*) VIC_MEMORY#0
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RSEL#0
|
||||
(byte) VIC_RST8
|
||||
(byte) VIC_RST8#0
|
||||
(byte) WHITE
|
||||
(byte) WHITE#0
|
||||
(byte) YELLOW
|
||||
(byte) YELLOW#0
|
||||
(void()) main()
|
||||
(bool~) main::$0
|
||||
(bool~) main::$1
|
||||
@ -94,15 +322,91 @@ SYMBOL TABLE SSA
|
||||
(byte[]) rastercols#0
|
||||
|
||||
Culled Empty Block (label) main::@1
|
||||
Culled Empty Block (label) @6
|
||||
Culled Empty Block (label) @7
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Simple Condition (bool~) main::$0 if(*((byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@2
|
||||
Simple Condition (bool~) main::$1 if(*((byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@3
|
||||
Simple Condition (bool~) raster::$0 if((byte) raster::col#1!=(byte/word/signed word/dword/signed dword) 255) goto raster::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
|
||||
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
|
||||
Constant (const byte*) PROCPORT#0 = ((byte*))1
|
||||
Constant (const byte) PROCPORT_RAM_ALL#0 = 48
|
||||
Constant (const byte) PROCPORT_RAM_IO#0 = 53
|
||||
Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49
|
||||
Constant (const byte) PROCPORT_KERNEL_IO#0 = 54
|
||||
Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55
|
||||
Constant (const byte*) CHARGEN#0 = ((byte*))53248
|
||||
Constant (const word) SPRITE_PTRS#0 = 1016
|
||||
Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248
|
||||
Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249
|
||||
Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264
|
||||
Constant (const byte*) RASTER#0 = ((byte*))53266
|
||||
Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269
|
||||
Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271
|
||||
Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275
|
||||
Constant (const byte*) SPRITES_MC#0 = ((byte*))53276
|
||||
Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277
|
||||
Constant (const byte*) BORDERCOL#0 = ((byte*))53280
|
||||
Constant (const byte*) BGCOL#0 = ((byte*))53281
|
||||
Constant (const byte*) BGCOL1#0 = ((byte*))53281
|
||||
Constant (const byte*) BGCOL2#0 = ((byte*))53282
|
||||
Constant (const byte*) BGCOL3#0 = ((byte*))53283
|
||||
Constant (const byte*) BGCOL4#0 = ((byte*))53284
|
||||
Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285
|
||||
Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286
|
||||
Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287
|
||||
Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265
|
||||
Constant (const byte*) D011#0 = ((byte*))53265
|
||||
Constant (const byte) VIC_RST8#0 = 128
|
||||
Constant (const byte) VIC_ECM#0 = 64
|
||||
Constant (const byte) VIC_BMM#0 = 32
|
||||
Constant (const byte) VIC_DEN#0 = 16
|
||||
Constant (const byte) VIC_RSEL#0 = 8
|
||||
Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270
|
||||
Constant (const byte*) D016#0 = ((byte*))53270
|
||||
Constant (const byte) VIC_MCM#0 = 16
|
||||
Constant (const byte) VIC_CSEL#0 = 8
|
||||
Constant (const byte*) D018#0 = ((byte*))53272
|
||||
Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272
|
||||
Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267
|
||||
Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268
|
||||
Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273
|
||||
Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274
|
||||
Constant (const byte) IRQ_RASTER#0 = 1
|
||||
Constant (const byte) IRQ_COLLISION_BG#0 = 2
|
||||
Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4
|
||||
Constant (const byte) IRQ_LIGHTPEN#0 = 8
|
||||
Constant (const byte*) COLS#0 = ((byte*))55296
|
||||
Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320
|
||||
Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321
|
||||
Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322
|
||||
Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323
|
||||
Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333
|
||||
Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127
|
||||
Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576
|
||||
Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577
|
||||
Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578
|
||||
Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579
|
||||
Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589
|
||||
Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788
|
||||
Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534
|
||||
Constant (const byte) BLACK#0 = 0
|
||||
Constant (const byte) WHITE#0 = 1
|
||||
Constant (const byte) RED#0 = 2
|
||||
Constant (const byte) CYAN#0 = 3
|
||||
Constant (const byte) PURPLE#0 = 4
|
||||
Constant (const byte) GREEN#0 = 5
|
||||
Constant (const byte) BLUE#0 = 6
|
||||
Constant (const byte) YELLOW#0 = 7
|
||||
Constant (const byte) ORANGE#0 = 8
|
||||
Constant (const byte) BROWN#0 = 9
|
||||
Constant (const byte) PINK#0 = 10
|
||||
Constant (const byte) DARK_GREY#0 = 11
|
||||
Constant (const byte) GREY#0 = 12
|
||||
Constant (const byte) LIGHT_GREEN#0 = 13
|
||||
Constant (const byte) LIGHT_BLUE#0 = 14
|
||||
Constant (const byte) LIGHT_GREY#0 = 15
|
||||
Constant (const byte[]) rastercols#0 = { 11, 0, 11, 11, 12, 11, 12, 12, 15, 12, 15, 15, 1, 15, 1, 1, 15, 1, 15, 15, 12, 15, 12, 12, 11, 12, 11, 11, 0, 11, 0, 255 }
|
||||
Constant (const byte) raster::i#0 = 0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
@ -110,10 +414,11 @@ Consolidated array index constant in *(rastercols#0+raster::i#0)
|
||||
Successful SSA optimization Pass2ConstantAdditionElimination
|
||||
if() condition always true - replacing block destination if(true) goto main::@2
|
||||
Successful SSA optimization Pass2ConstantIfs
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Removing unused block main::@return
|
||||
Successful SSA optimization Pass2EliminateUnusedBlocks
|
||||
Culled Empty Block (label) main::@7
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) @5
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Inlining constant with var siblings (const byte) raster::i#0
|
||||
Constant inlined raster::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
@ -121,7 +426,7 @@ Successful SSA optimization Pass2ConstantInlining
|
||||
Simplifying constant plus zero rastercols#0+0
|
||||
Added new block during phi lifting raster::@3(between raster::@1 and raster::@1)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @5
|
||||
Adding NOP phi() at start of @6
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main::@5
|
||||
CALL GRAPH
|
||||
@ -135,21 +440,21 @@ Coalesced [21] raster::i#3 ← raster::i#1
|
||||
Coalesced down to 2 phi equivalence classes
|
||||
Culled Empty Block (label) raster::@3
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @5
|
||||
Adding NOP phi() at start of @6
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main::@5
|
||||
|
||||
FINAL CONTROL FLOW GRAPH
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@5
|
||||
@5: scope:[] from @begin
|
||||
to:@6
|
||||
@6: scope:[] from @begin
|
||||
[1] phi()
|
||||
[2] call main
|
||||
to:@end
|
||||
@end: scope:[] from @5
|
||||
@end: scope:[] from @6
|
||||
[3] phi()
|
||||
main: scope:[main] from @5
|
||||
main: scope:[main] from @6
|
||||
asm { sei }
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main main::@2 main::@5
|
||||
@ -183,8 +488,84 @@ raster::@return: scope:[raster] from raster::@1
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) main()
|
||||
(void()) raster()
|
||||
(byte) raster::col
|
||||
@ -216,15 +597,15 @@ INITIAL ASM
|
||||
.label BGCOL = $d021
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @5 [phi:@begin->@5]
|
||||
b5_from_bbegin:
|
||||
jmp b5
|
||||
//SEG4 @5
|
||||
b5:
|
||||
//SEG3 [1] phi from @begin to @6 [phi:@begin->@6]
|
||||
b6_from_bbegin:
|
||||
jmp b6
|
||||
//SEG4 @6
|
||||
b6:
|
||||
//SEG5 [2] call main
|
||||
jsr main
|
||||
//SEG6 [3] phi from @5 to @end [phi:@5->@end]
|
||||
bend_from_b5:
|
||||
//SEG6 [3] phi from @6 to @end [phi:@6->@end]
|
||||
bend_from_b6:
|
||||
jmp bend
|
||||
//SEG7 @end
|
||||
bend:
|
||||
@ -369,15 +750,15 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.label BGCOL = $d021
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @5 [phi:@begin->@5]
|
||||
b5_from_bbegin:
|
||||
jmp b5
|
||||
//SEG4 @5
|
||||
b5:
|
||||
//SEG3 [1] phi from @begin to @6 [phi:@begin->@6]
|
||||
b6_from_bbegin:
|
||||
jmp b6
|
||||
//SEG4 @6
|
||||
b6:
|
||||
//SEG5 [2] call main
|
||||
jsr main
|
||||
//SEG6 [3] phi from @5 to @end [phi:@5->@end]
|
||||
bend_from_b5:
|
||||
//SEG6 [3] phi from @6 to @end [phi:@6->@end]
|
||||
bend_from_b6:
|
||||
jmp bend
|
||||
//SEG7 @end
|
||||
bend:
|
||||
@ -488,7 +869,7 @@ raster: {
|
||||
rastercols: .byte $b, 0, $b, $b, $c, $b, $c, $c, $f, $c, $f, $f, 1, $f, 1, 1, $f, 1, $f, $f, $c, $f, $c, $c, $b, $c, $b, $b, 0, $b, 0, $ff
|
||||
|
||||
ASSEMBLER OPTIMIZATIONS
|
||||
Removing instruction jmp b5
|
||||
Removing instruction jmp b6
|
||||
Removing instruction jmp bend
|
||||
Removing instruction jmp b2
|
||||
Removing instruction jmp b3
|
||||
@ -498,12 +879,12 @@ Removing instruction jmp breturn
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Replacing label b1_from_b1 with b1
|
||||
Removing instruction bbegin:
|
||||
Removing instruction b5_from_bbegin:
|
||||
Removing instruction bend_from_b5:
|
||||
Removing instruction b6_from_bbegin:
|
||||
Removing instruction bend_from_b6:
|
||||
Removing instruction b5_from_b3:
|
||||
Removing instruction b1_from_b1:
|
||||
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||
Removing instruction b5:
|
||||
Removing instruction b6:
|
||||
Removing instruction bend:
|
||||
Removing instruction b5:
|
||||
Removing instruction b1_from_raster:
|
||||
@ -513,15 +894,91 @@ Removing instruction jmp b1
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(label) @5
|
||||
(label) @6
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) main()
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
@ -555,11 +1012,11 @@ Score: 8346
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
//SEG2 @begin
|
||||
//SEG3 [1] phi from @begin to @5 [phi:@begin->@5]
|
||||
//SEG4 @5
|
||||
//SEG3 [1] phi from @begin to @6 [phi:@begin->@6]
|
||||
//SEG4 @6
|
||||
//SEG5 [2] call main
|
||||
jsr main
|
||||
//SEG6 [3] phi from @5 to @end [phi:@5->@end]
|
||||
//SEG6 [3] phi from @6 to @end [phi:@6->@end]
|
||||
//SEG7 @end
|
||||
//SEG8 main
|
||||
main: {
|
||||
|
@ -1,12 +1,88 @@
|
||||
(label) @5
|
||||
(label) @6
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) main()
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
|
@ -1,7 +1,7 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@12
|
||||
@12: scope:[] from @begin
|
||||
to:@13
|
||||
@13: scope:[] from @begin
|
||||
kickasm(location (const byte*) COS#0) {{ {
|
||||
.var min = -$7fff
|
||||
.var max = $7fff
|
||||
@ -12,8 +12,8 @@
|
||||
}
|
||||
}
|
||||
}}
|
||||
to:@15
|
||||
@15: scope:[] from @12
|
||||
to:@16
|
||||
@16: scope:[] from @13
|
||||
kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff))
|
||||
.for (var y=0; y<21; y++)
|
||||
.for (var x=0;x<3; x++)
|
||||
@ -21,9 +21,9 @@
|
||||
}}
|
||||
[3] call main
|
||||
to:@end
|
||||
@end: scope:[] from @15
|
||||
@end: scope:[] from @16
|
||||
[4] phi()
|
||||
main: scope:[main] from @15
|
||||
main: scope:[main] from @16
|
||||
asm { sei }
|
||||
[6] call init
|
||||
to:main::@1
|
||||
@ -129,110 +129,112 @@ mulf8s_prepared::@6: scope:[mulf8s_prepared] from mulf8s_prepared
|
||||
[66] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1
|
||||
to:mulf8s_prepared::@3
|
||||
mulf8s_prepared::@3: scope:[mulf8s_prepared] from mulf8s_prepared::@6
|
||||
[67] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0
|
||||
[68] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4
|
||||
[69] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15
|
||||
[67] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0
|
||||
[68] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0
|
||||
[69] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4
|
||||
[70] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15
|
||||
to:mulf8s_prepared::@1
|
||||
mulf8s_prepared::@1: scope:[mulf8s_prepared] from mulf8s_prepared::@3 mulf8s_prepared::@6
|
||||
[70] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 )
|
||||
[71] if((signed byte) mulf8s_prepared::b#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2
|
||||
[71] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 )
|
||||
[72] if((signed byte) mulf8s_prepared::b#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2
|
||||
to:mulf8s_prepared::@4
|
||||
mulf8s_prepared::@4: scope:[mulf8s_prepared] from mulf8s_prepared::@1
|
||||
[72] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5
|
||||
[73] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0)
|
||||
[74] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16
|
||||
[73] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5
|
||||
[74] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5
|
||||
[75] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0)
|
||||
[76] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16
|
||||
to:mulf8s_prepared::@2
|
||||
mulf8s_prepared::@2: scope:[mulf8s_prepared] from mulf8s_prepared::@1 mulf8s_prepared::@4
|
||||
[75] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 )
|
||||
[77] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 )
|
||||
to:mulf8s_prepared::@return
|
||||
mulf8s_prepared::@return: scope:[mulf8s_prepared] from mulf8s_prepared::@2
|
||||
[76] return
|
||||
[78] return
|
||||
to:@return
|
||||
mulf8u_prepared: scope:[mulf8u_prepared] from mulf8s_prepared
|
||||
[77] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4
|
||||
[79] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4
|
||||
asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB }
|
||||
[79] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0)
|
||||
[81] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0)
|
||||
to:mulf8u_prepared::@return
|
||||
mulf8u_prepared::@return: scope:[mulf8u_prepared] from mulf8u_prepared
|
||||
[80] return
|
||||
[82] return
|
||||
to:@return
|
||||
mulf8u_prepare: scope:[mulf8u_prepare] from anim::mulf8s_prepare1 anim::mulf8s_prepare2
|
||||
[81] (byte) mulf8u_prepare::a#2 ← phi( anim::mulf8s_prepare1/(byte~) mulf8u_prepare::a#3 anim::mulf8s_prepare2/(byte~) mulf8u_prepare::a#4 )
|
||||
[82] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2
|
||||
[83] (byte) mulf8u_prepare::a#2 ← phi( anim::mulf8s_prepare1/(byte~) mulf8u_prepare::a#3 anim::mulf8s_prepare2/(byte~) mulf8u_prepare::a#4 )
|
||||
[84] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2
|
||||
asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 }
|
||||
to:mulf8u_prepare::@return
|
||||
mulf8u_prepare::@return: scope:[mulf8u_prepare] from mulf8u_prepare
|
||||
[84] return
|
||||
[86] return
|
||||
to:@return
|
||||
init: scope:[init] from main
|
||||
[85] phi()
|
||||
[86] call mulf_init
|
||||
[87] phi()
|
||||
[88] call mulf_init
|
||||
to:init::@3
|
||||
init::@3: scope:[init] from init
|
||||
[87] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255
|
||||
[89] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255
|
||||
to:init::@1
|
||||
init::@1: scope:[init] from init::@1 init::@3
|
||||
[88] (byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[89] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64
|
||||
[90] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0
|
||||
[91] (byte) init::i#1 ← ++ (byte) init::i#2
|
||||
[92] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@1
|
||||
[90] (byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[91] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64
|
||||
[92] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0
|
||||
[93] (byte) init::i#1 ← ++ (byte) init::i#2
|
||||
[94] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@1
|
||||
to:init::@return
|
||||
init::@return: scope:[init] from init::@1
|
||||
[93] return
|
||||
[95] return
|
||||
to:@return
|
||||
mulf_init: scope:[mulf_init] from init
|
||||
[94] phi()
|
||||
[96] phi()
|
||||
to:mulf_init::@1
|
||||
mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@2
|
||||
[95] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 )
|
||||
[95] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 )
|
||||
[95] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 )
|
||||
[95] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 )
|
||||
[95] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 )
|
||||
[96] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2
|
||||
[97] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[98] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2
|
||||
[97] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 )
|
||||
[97] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 )
|
||||
[97] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 )
|
||||
[97] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 )
|
||||
[97] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 )
|
||||
[98] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2
|
||||
[99] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[100] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2
|
||||
to:mulf_init::@5
|
||||
mulf_init::@5: scope:[mulf_init] from mulf_init::@1
|
||||
[99] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3
|
||||
[100] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4
|
||||
[101] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3
|
||||
[102] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4
|
||||
to:mulf_init::@2
|
||||
mulf_init::@2: scope:[mulf_init] from mulf_init::@1 mulf_init::@5
|
||||
[101] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 )
|
||||
[101] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 )
|
||||
[102] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3
|
||||
[103] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5
|
||||
[104] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3
|
||||
[105] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6
|
||||
[106] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2
|
||||
[107] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2
|
||||
[108] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2
|
||||
[109] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1
|
||||
[103] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 )
|
||||
[103] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 )
|
||||
[104] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3
|
||||
[105] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5
|
||||
[106] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3
|
||||
[107] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6
|
||||
[108] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2
|
||||
[109] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2
|
||||
[110] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2
|
||||
[111] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1
|
||||
to:mulf_init::@3
|
||||
mulf_init::@3: scope:[mulf_init] from mulf_init::@2 mulf_init::@4
|
||||
[110] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 )
|
||||
[110] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 )
|
||||
[110] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 )
|
||||
[110] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[111] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2)
|
||||
[112] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2)
|
||||
[113] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2
|
||||
[114] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2
|
||||
[115] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12
|
||||
[112] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 )
|
||||
[112] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 )
|
||||
[112] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 )
|
||||
[112] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[113] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2)
|
||||
[114] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2)
|
||||
[115] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2
|
||||
[116] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2
|
||||
[117] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12
|
||||
to:mulf_init::@4
|
||||
mulf_init::@4: scope:[mulf_init] from mulf_init::@12 mulf_init::@3
|
||||
[116] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[117] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2
|
||||
[118] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3
|
||||
[118] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[119] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2
|
||||
[120] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3
|
||||
to:mulf_init::@8
|
||||
mulf_init::@8: scope:[mulf_init] from mulf_init::@4
|
||||
[119] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256)
|
||||
[120] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256)
|
||||
[121] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256)
|
||||
[122] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256)
|
||||
to:mulf_init::@return
|
||||
mulf_init::@return: scope:[mulf_init] from mulf_init::@8
|
||||
[121] return
|
||||
[123] return
|
||||
to:@return
|
||||
mulf_init::@12: scope:[mulf_init] from mulf_init::@3
|
||||
[122] phi()
|
||||
[124] phi()
|
||||
to:mulf_init::@4
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,17 +1,68 @@
|
||||
(label) @12
|
||||
(label) @15
|
||||
(label) @13
|
||||
(label) @16
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte*) COS
|
||||
(const byte*) COS#0 COS = ((byte*))(word/signed word/dword/signed dword) 8192
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(const byte) LIGHT_BLUE#0 LIGHT_BLUE = (byte/signed byte/word/signed word/dword/signed dword) 14
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(byte*) SIN
|
||||
@ -22,12 +73,31 @@
|
||||
(const byte*) SPRITES_COLS#0 SPRITES_COLS = ((byte*))(word/dword/signed dword) 53287
|
||||
(byte*) SPRITES_ENABLE
|
||||
(const byte*) SPRITES_ENABLE#0 SPRITES_ENABLE = ((byte*))(word/dword/signed dword) 53269
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(const byte*) SPRITES_XMSB#0 SPRITES_XMSB = ((byte*))(word/dword/signed dword) 53264
|
||||
(byte*) SPRITES_XPOS
|
||||
(const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word/dword/signed dword) 53248
|
||||
(byte*) SPRITES_YPOS
|
||||
(const byte*) SPRITES_YPOS#0 SPRITES_YPOS = ((byte*))(word/dword/signed dword) 53249
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) anim()
|
||||
(signed word~) anim::$10 $10 zp ZP_WORD:5 202.0
|
||||
(signed word~) anim::$11 $11 zp ZP_WORD:5 202.0
|
||||
@ -101,9 +171,11 @@
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
(signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b)
|
||||
(byte~) mulf8s_prepared::$10 reg byte a 20.0
|
||||
(byte~) mulf8s_prepared::$11 reg byte a 4.0
|
||||
(byte~) mulf8s_prepared::$15 reg byte a 4.0
|
||||
(byte~) mulf8s_prepared::$16 reg byte a 4.0
|
||||
(byte~) mulf8s_prepared::$4 reg byte a 20.0
|
||||
(byte~) mulf8s_prepared::$5 reg byte a 4.0
|
||||
(label) mulf8s_prepared::@1
|
||||
(label) mulf8s_prepared::@2
|
||||
@ -116,13 +188,13 @@
|
||||
(signed byte) mulf8s_prepared::b#1 reg byte y 202.0
|
||||
(signed byte) mulf8s_prepared::b#2 reg byte y 202.0
|
||||
(signed byte) mulf8s_prepared::b#3 reg byte y 202.0
|
||||
(signed byte) mulf8s_prepared::b#4 reg byte y 31.23076923076923
|
||||
(signed byte) mulf8s_prepared::b#4 reg byte y 29.0
|
||||
(word) mulf8s_prepared::m
|
||||
(word) mulf8s_prepared::m#0 m zp ZP_WORD:5 2.0
|
||||
(word) mulf8s_prepared::m#1 m zp ZP_WORD:5 4.0
|
||||
(word) mulf8s_prepared::m#2 m zp ZP_WORD:5 4.0
|
||||
(word) mulf8s_prepared::m#4 m zp ZP_WORD:5 0.6666666666666666
|
||||
(word) mulf8s_prepared::m#5 m zp ZP_WORD:5 2.5
|
||||
(word) mulf8s_prepared::m#5 m zp ZP_WORD:5 2.4
|
||||
(signed byte*) mulf8s_prepared::memA
|
||||
(const signed byte*) mulf8s_prepared::memA#0 memA = ((signed byte*))(byte/word/signed word/dword/signed dword) 253
|
||||
(signed word) mulf8s_prepared::return
|
||||
@ -223,8 +295,10 @@ reg byte a [ anim::$22 ]
|
||||
reg byte y [ anim::ypos#0 ]
|
||||
reg byte x [ anim::i2#0 ]
|
||||
reg byte a [ anim::$25 ]
|
||||
reg byte a [ mulf8s_prepared::$4 ]
|
||||
reg byte a [ mulf8s_prepared::$5 ]
|
||||
reg byte a [ mulf8s_prepared::$15 ]
|
||||
reg byte a [ mulf8s_prepared::$10 ]
|
||||
reg byte a [ mulf8s_prepared::$11 ]
|
||||
reg byte a [ mulf8s_prepared::$16 ]
|
||||
reg byte a [ mulf_init::$2 ]
|
||||
|
@ -317,6 +317,7 @@ sin16s_gen2: {
|
||||
rts
|
||||
}
|
||||
mul16s: {
|
||||
.label _5 = 2
|
||||
.label _6 = $e
|
||||
.label _16 = $e
|
||||
.label m = $a
|
||||
@ -334,6 +335,10 @@ mul16s: {
|
||||
lda a+1
|
||||
bpl b2
|
||||
lda m+2
|
||||
sta _5
|
||||
lda m+3
|
||||
sta _5+1
|
||||
lda m+2
|
||||
sta _6
|
||||
lda m+3
|
||||
sta _6+1
|
||||
|
@ -1,21 +1,21 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@24
|
||||
@24: scope:[] from @begin
|
||||
to:@25
|
||||
@25: scope:[] from @begin
|
||||
kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
.for (var y=0; y<6 ; y++)
|
||||
.for (var x=0;x<40; x++)
|
||||
.for(var cp=0; cp<8; cp++)
|
||||
.byte logoPic.getMulticolorByte(x,cp+y*8)
|
||||
}}
|
||||
to:@27
|
||||
@27: scope:[] from @24
|
||||
to:@28
|
||||
@28: scope:[] from @25
|
||||
[2] phi()
|
||||
[3] call main
|
||||
to:@end
|
||||
@end: scope:[] from @27
|
||||
@end: scope:[] from @28
|
||||
[4] phi()
|
||||
main: scope:[main] from @27
|
||||
main: scope:[main] from @28
|
||||
asm { sei }
|
||||
[6] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0
|
||||
[7] *((const byte*) BGCOL2#0) ← (const byte) DARK_GREY#0
|
||||
@ -254,199 +254,200 @@ mul16s::@6: scope:[mul16s] from mul16s
|
||||
[122] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1
|
||||
to:mul16s::@3
|
||||
mul16s::@3: scope:[mul16s] from mul16s::@6
|
||||
[123] (word~) mul16s::$6 ← > (dword) mul16s::m#0
|
||||
[124] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0
|
||||
[125] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16
|
||||
[123] (word~) mul16s::$5 ← > (dword) mul16s::m#0
|
||||
[124] (word~) mul16s::$6 ← > (dword) mul16s::m#0
|
||||
[125] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0
|
||||
[126] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16
|
||||
to:mul16s::@1
|
||||
mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@6
|
||||
[126] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 )
|
||||
[127] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 )
|
||||
to:mul16s::@2
|
||||
mul16s::@2: scope:[mul16s] from mul16s::@1
|
||||
[127] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4
|
||||
[128] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4
|
||||
to:mul16s::@return
|
||||
mul16s::@return: scope:[mul16s] from mul16s::@2
|
||||
[128] return
|
||||
[129] return
|
||||
to:@return
|
||||
mul16u: scope:[mul16u] from mul16s mulu16_sel
|
||||
[129] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 )
|
||||
[129] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 )
|
||||
[130] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2
|
||||
[130] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 )
|
||||
[130] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 )
|
||||
[131] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2
|
||||
to:mul16u::@1
|
||||
mul16u::@1: scope:[mul16u] from mul16u mul16u::@4
|
||||
[131] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 )
|
||||
[131] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 )
|
||||
[131] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 )
|
||||
[132] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2
|
||||
[132] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 )
|
||||
[132] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 )
|
||||
[132] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 )
|
||||
[133] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2
|
||||
to:mul16u::@return
|
||||
mul16u::@return: scope:[mul16u] from mul16u::@1
|
||||
[133] return
|
||||
[134] return
|
||||
to:@return
|
||||
mul16u::@2: scope:[mul16u] from mul16u::@1
|
||||
[134] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[135] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4
|
||||
[135] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[136] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4
|
||||
to:mul16u::@7
|
||||
mul16u::@7: scope:[mul16u] from mul16u::@2
|
||||
[136] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2
|
||||
[137] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2
|
||||
to:mul16u::@4
|
||||
mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@7
|
||||
[137] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 )
|
||||
[138] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[139] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[138] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 )
|
||||
[139] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[140] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
to:mul16u::@1
|
||||
sin16s: scope:[sin16s] from sin16s_gen2::@1
|
||||
[140] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1
|
||||
[141] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1
|
||||
to:sin16s::@4
|
||||
sin16s::@4: scope:[sin16s] from sin16s
|
||||
[141] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0
|
||||
[142] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0
|
||||
to:sin16s::@1
|
||||
sin16s::@1: scope:[sin16s] from sin16s sin16s::@4
|
||||
[142] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[142] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 )
|
||||
[143] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2
|
||||
[143] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[143] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 )
|
||||
[144] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2
|
||||
to:sin16s::@5
|
||||
sin16s::@5: scope:[sin16s] from sin16s::@1
|
||||
[144] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4
|
||||
[145] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4
|
||||
to:sin16s::@2
|
||||
sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5
|
||||
[145] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 )
|
||||
[146] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
[147] (word) sin16s::x1#0 ← > (dword~) sin16s::$6
|
||||
[148] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0
|
||||
[149] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0
|
||||
[150] call mulu16_sel
|
||||
[151] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12
|
||||
[146] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 )
|
||||
[147] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
[148] (word) sin16s::x1#0 ← > (dword~) sin16s::$6
|
||||
[149] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0
|
||||
[150] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0
|
||||
[151] call mulu16_sel
|
||||
[152] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@8
|
||||
sin16s::@8: scope:[sin16s] from sin16s::@2
|
||||
[152] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0
|
||||
[153] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0
|
||||
[154] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0
|
||||
[155] call mulu16_sel
|
||||
[156] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12
|
||||
[153] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0
|
||||
[154] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0
|
||||
[155] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0
|
||||
[156] call mulu16_sel
|
||||
[157] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@9
|
||||
sin16s::@9: scope:[sin16s] from sin16s::@8
|
||||
[157] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1
|
||||
[158] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0
|
||||
[159] call mulu16_sel
|
||||
[160] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12
|
||||
[158] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1
|
||||
[159] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0
|
||||
[160] call mulu16_sel
|
||||
[161] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@10
|
||||
sin16s::@10: scope:[sin16s] from sin16s::@9
|
||||
[161] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2
|
||||
[162] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0
|
||||
[163] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0
|
||||
[164] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0
|
||||
[165] call mulu16_sel
|
||||
[166] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12
|
||||
[162] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2
|
||||
[163] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0
|
||||
[164] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0
|
||||
[165] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0
|
||||
[166] call mulu16_sel
|
||||
[167] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@11
|
||||
sin16s::@11: scope:[sin16s] from sin16s::@10
|
||||
[167] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10
|
||||
[168] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0
|
||||
[169] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0
|
||||
[170] call mulu16_sel
|
||||
[171] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12
|
||||
[168] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10
|
||||
[169] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0
|
||||
[170] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0
|
||||
[171] call mulu16_sel
|
||||
[172] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@12
|
||||
sin16s::@12: scope:[sin16s] from sin16s::@11
|
||||
[172] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11
|
||||
[173] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
[174] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0
|
||||
[175] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15
|
||||
[173] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11
|
||||
[174] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
[175] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0
|
||||
[176] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15
|
||||
to:sin16s::@6
|
||||
sin16s::@6: scope:[sin16s] from sin16s::@12
|
||||
[176] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1
|
||||
[177] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1
|
||||
to:sin16s::@3
|
||||
sin16s::@3: scope:[sin16s] from sin16s::@15 sin16s::@6
|
||||
[177] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 )
|
||||
[178] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 )
|
||||
to:sin16s::@return
|
||||
sin16s::@return: scope:[sin16s] from sin16s::@3
|
||||
[178] return
|
||||
[179] return
|
||||
to:@return
|
||||
sin16s::@15: scope:[sin16s] from sin16s::@12
|
||||
[179] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1
|
||||
[180] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1
|
||||
to:sin16s::@3
|
||||
mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@11 sin16s::@2 sin16s::@8 sin16s::@9
|
||||
[180] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[180] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#3 sin16s::@11/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@8/(word) mulu16_sel::v2#1 sin16s::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 )
|
||||
[180] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#3 sin16s::@11/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@8/(word) mulu16_sel::v1#1 sin16s::@9/(word) mulu16_sel::v1#2 )
|
||||
[181] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5
|
||||
[182] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5
|
||||
[183] call mul16u
|
||||
[184] (dword) mul16u::return#3 ← (dword) mul16u::res#2
|
||||
[181] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[181] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#3 sin16s::@11/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@8/(word) mulu16_sel::v2#1 sin16s::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 )
|
||||
[181] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#3 sin16s::@11/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@8/(word) mulu16_sel::v1#1 sin16s::@9/(word) mulu16_sel::v1#2 )
|
||||
[182] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5
|
||||
[183] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5
|
||||
[184] call mul16u
|
||||
[185] (dword) mul16u::return#3 ← (dword) mul16u::res#2
|
||||
to:mulu16_sel::@2
|
||||
mulu16_sel::@2: scope:[mulu16_sel] from mulu16_sel
|
||||
[185] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3
|
||||
[186] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5
|
||||
[187] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1
|
||||
[186] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3
|
||||
[187] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5
|
||||
[188] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1
|
||||
to:mulu16_sel::@return
|
||||
mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@2
|
||||
[188] return
|
||||
[189] return
|
||||
to:@return
|
||||
div32u16u: scope:[div32u16u] from sin16s_gen2
|
||||
[189] phi()
|
||||
[190] call divr16u
|
||||
[191] (word) divr16u::return#2 ← (word) divr16u::return#0
|
||||
[190] phi()
|
||||
[191] call divr16u
|
||||
[192] (word) divr16u::return#2 ← (word) divr16u::return#0
|
||||
to:div32u16u::@2
|
||||
div32u16u::@2: scope:[div32u16u] from div32u16u
|
||||
[192] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2
|
||||
[193] (word) divr16u::rem#4 ← (word) rem16u#1
|
||||
[194] call divr16u
|
||||
[195] (word) divr16u::return#3 ← (word) divr16u::return#0
|
||||
[193] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2
|
||||
[194] (word) divr16u::rem#4 ← (word) rem16u#1
|
||||
[195] call divr16u
|
||||
[196] (word) divr16u::return#3 ← (word) divr16u::return#0
|
||||
to:div32u16u::@3
|
||||
div32u16u::@3: scope:[div32u16u] from div32u16u::@2
|
||||
[196] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3
|
||||
[197] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0
|
||||
[197] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3
|
||||
[198] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0
|
||||
to:div32u16u::@return
|
||||
div32u16u::@return: scope:[div32u16u] from div32u16u::@3
|
||||
[198] return
|
||||
[199] return
|
||||
to:@return
|
||||
divr16u: scope:[divr16u] from div32u16u div32u16u::@2
|
||||
[199] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 )
|
||||
[199] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 )
|
||||
[200] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 )
|
||||
[200] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 )
|
||||
to:divr16u::@1
|
||||
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
|
||||
[200] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 )
|
||||
[200] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 )
|
||||
[200] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 )
|
||||
[200] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 )
|
||||
[201] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[202] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
|
||||
[203] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128
|
||||
[204] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2
|
||||
[201] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 )
|
||||
[201] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 )
|
||||
[201] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 )
|
||||
[201] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 )
|
||||
[202] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[203] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
|
||||
[204] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128
|
||||
[205] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2
|
||||
to:divr16u::@4
|
||||
divr16u::@4: scope:[divr16u] from divr16u::@1
|
||||
[205] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[206] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
to:divr16u::@2
|
||||
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
|
||||
[206] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
|
||||
[207] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[208] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[209] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3
|
||||
[207] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
|
||||
[208] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[209] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[210] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3
|
||||
to:divr16u::@5
|
||||
divr16u::@5: scope:[divr16u] from divr16u::@2
|
||||
[210] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
|
||||
[211] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0
|
||||
[211] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
|
||||
[212] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0
|
||||
to:divr16u::@3
|
||||
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
|
||||
[212] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
|
||||
[212] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
|
||||
[213] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
|
||||
[214] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1
|
||||
[213] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
|
||||
[213] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
|
||||
[214] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
|
||||
[215] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1
|
||||
to:divr16u::@6
|
||||
divr16u::@6: scope:[divr16u] from divr16u::@3
|
||||
[215] (word) rem16u#1 ← (word) divr16u::rem#11
|
||||
[216] (word) rem16u#1 ← (word) divr16u::rem#11
|
||||
to:divr16u::@return
|
||||
divr16u::@return: scope:[divr16u] from divr16u::@6
|
||||
[216] return
|
||||
[217] return
|
||||
to:@return
|
||||
fill: scope:[fill] from main::@3 main::@4
|
||||
[217] (byte) fill::val#3 ← phi( main::@3/(const byte) BLACK#0 main::@4/(const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 )
|
||||
[217] (byte*) fill::addr#0 ← phi( main::@3/(const byte*) SCREEN#0 main::@4/(const byte*) COLS#0 )
|
||||
[218] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000
|
||||
[218] (byte) fill::val#3 ← phi( main::@3/(const byte) BLACK#0 main::@4/(const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 )
|
||||
[218] (byte*) fill::addr#0 ← phi( main::@3/(const byte*) SCREEN#0 main::@4/(const byte*) COLS#0 )
|
||||
[219] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000
|
||||
to:fill::@1
|
||||
fill::@1: scope:[fill] from fill fill::@1
|
||||
[219] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 )
|
||||
[220] *((byte*) fill::addr#2) ← (byte) fill::val#3
|
||||
[221] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2
|
||||
[222] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1
|
||||
[220] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 )
|
||||
[221] *((byte*) fill::addr#2) ← (byte) fill::val#3
|
||||
[222] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2
|
||||
[223] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1
|
||||
to:fill::@return
|
||||
fill::@return: scope:[fill] from fill::@1
|
||||
[223] return
|
||||
[224] return
|
||||
to:@return
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,43 +1,113 @@
|
||||
(label) @24
|
||||
(label) @27
|
||||
(label) @25
|
||||
(label) @28
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(const byte*) BGCOL2#0 BGCOL2 = ((byte*))(word/dword/signed dword) 53282
|
||||
(byte*) BGCOL3
|
||||
(const byte*) BGCOL3#0 BGCOL3 = ((byte*))(word/dword/signed dword) 53283
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(const byte*) COLS#0 COLS = ((byte*))(word/dword/signed dword) 55296
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(const byte*) D016#0 D016 = ((byte*))(word/dword/signed dword) 53270
|
||||
(byte*) D018
|
||||
(const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) 53272
|
||||
(byte) DARK_GREY
|
||||
(const byte) DARK_GREY#0 DARK_GREY = (byte/signed byte/word/signed word/dword/signed dword) 11
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte*) LOGO
|
||||
(const byte*) LOGO#0 LOGO = ((byte*))(word/signed word/dword/signed dword) 8192
|
||||
(byte) ORANGE
|
||||
(word) PI2_u4f12
|
||||
(dword) PI2_u4f28
|
||||
(const dword) PI2_u4f28#0 PI2_u4f28 = (dword/signed dword) 1686629713
|
||||
(byte) PINK
|
||||
(word) PI_HALF_u4f12
|
||||
(dword) PI_HALF_u4f28
|
||||
(const dword) PI_HALF_u4f28#0 PI_HALF_u4f28 = (dword/signed dword) 421657428
|
||||
(word) PI_u4f12
|
||||
(dword) PI_u4f28
|
||||
(const dword) PI_u4f28#0 PI_u4f28 = (dword/signed dword) 843314857
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(const byte) VIC_MCM#0 VIC_MCM = (byte/signed byte/word/signed word/dword/signed dword) 16
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(word) XSIN_SIZE
|
||||
(const word) XSIN_SIZE#0 XSIN_SIZE = (word/signed word/dword/signed dword) 512
|
||||
(byte) YELLOW
|
||||
(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor)
|
||||
(label) div32u16u::@2
|
||||
(label) div32u16u::@3
|
||||
@ -136,6 +206,7 @@
|
||||
(byte*) main::toD0181_screen
|
||||
(signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b)
|
||||
(word~) mul16s::$16 $16 zp ZP_WORD:14 4.0
|
||||
(word~) mul16s::$5 $5 zp ZP_WORD:2 20.0
|
||||
(word~) mul16s::$6 $6 zp ZP_WORD:14 4.0
|
||||
(label) mul16s::@1
|
||||
(label) mul16s::@2
|
||||
@ -206,8 +277,11 @@
|
||||
(word) mulu16_sel::v2#3 v2 zp ZP_WORD:14 4.0
|
||||
(word) mulu16_sel::v2#4 v2 zp ZP_WORD:14 4.0
|
||||
(word) mulu16_sel::v2#5 v2 zp ZP_WORD:14 5.0
|
||||
(signed word) rem16s
|
||||
(word) rem16u
|
||||
(word) rem16u#1 rem16u zp ZP_WORD:2 0.8
|
||||
(signed byte) rem8s
|
||||
(byte) rem8u
|
||||
(void()) render_logo((signed word) render_logo::xpos)
|
||||
(byte~) render_logo::$0 reg byte a 4.0
|
||||
(byte~) render_logo::$1 reg byte a 4.0
|
||||
@ -364,7 +438,7 @@
|
||||
(word) xsin_idx#3 xsin_idx zp ZP_WORD:2 11.0
|
||||
|
||||
reg byte x [ main::ch#2 main::ch#1 ]
|
||||
zp ZP_WORD:2 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 fill::addr#2 fill::addr#0 fill::addr#1 ]
|
||||
zp ZP_WORD:2 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 fill::addr#2 fill::addr#0 fill::addr#1 mul16s::$5 ]
|
||||
reg byte x [ render_logo::screen_idx#19 render_logo::screen_idx#3 render_logo::screen_idx#17 render_logo::screen_idx#2 ]
|
||||
reg byte y [ render_logo::logo_idx#11 render_logo::logo_idx#2 ]
|
||||
reg byte y [ render_logo::logo_idx#10 render_logo::logo_idx#13 render_logo::logo_idx#3 ]
|
||||
|
@ -1,21 +1,21 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@3
|
||||
@3: scope:[] from @begin
|
||||
to:@4
|
||||
@4: scope:[] from @begin
|
||||
kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
.for (var y=0; y<6 ; y++)
|
||||
.for (var x=0;x<40; x++)
|
||||
.for(var cp=0; cp<8; cp++)
|
||||
.byte logoPic.getMulticolorByte(x,cp+y*8)
|
||||
}}
|
||||
to:@5
|
||||
@5: scope:[] from @3
|
||||
to:@6
|
||||
@6: scope:[] from @4
|
||||
[2] phi()
|
||||
[3] call main
|
||||
to:@end
|
||||
@end: scope:[] from @5
|
||||
@end: scope:[] from @6
|
||||
[4] phi()
|
||||
main: scope:[main] from @5
|
||||
main: scope:[main] from @6
|
||||
[5] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0
|
||||
[6] *((const byte*) BGCOL2#0) ← (const byte) DARK_GREY#0
|
||||
[7] *((const byte*) BGCOL#0) ← *((const byte*) BGCOL2#0)
|
||||
|
@ -3,20 +3,87 @@ Inlined call (byte~) main::$0 ← call toD018 (byte*) SCREEN (byte*) LOGO
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48
|
||||
(byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53
|
||||
(byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49
|
||||
(byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55
|
||||
(byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248
|
||||
(word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016
|
||||
(byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248
|
||||
(byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249
|
||||
(byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264
|
||||
(byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266
|
||||
(byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269
|
||||
(byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271
|
||||
(byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275
|
||||
(byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276
|
||||
(byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277
|
||||
(byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280
|
||||
(byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281
|
||||
(byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281
|
||||
(byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282
|
||||
(byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283
|
||||
(byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284
|
||||
(byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285
|
||||
(byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286
|
||||
(byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287
|
||||
(byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265
|
||||
(byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265
|
||||
(byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128
|
||||
(byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64
|
||||
(byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32
|
||||
(byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16
|
||||
(byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270
|
||||
(byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270
|
||||
(byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16
|
||||
(byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272
|
||||
(byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272
|
||||
(byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267
|
||||
(byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268
|
||||
(byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273
|
||||
(byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274
|
||||
(byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296
|
||||
(byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320
|
||||
(byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321
|
||||
(byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322
|
||||
(byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323
|
||||
(byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333
|
||||
(byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127
|
||||
(byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576
|
||||
(byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577
|
||||
(byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578
|
||||
(byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579
|
||||
(byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589
|
||||
(void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788
|
||||
(void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534
|
||||
(byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9
|
||||
(byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10
|
||||
(byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11
|
||||
to:@3
|
||||
@3: scope:[] from @begin
|
||||
(byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12
|
||||
(byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13
|
||||
(byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14
|
||||
(byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15
|
||||
to:@4
|
||||
@4: scope:[] from @begin
|
||||
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
|
||||
(byte*) LOGO#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192
|
||||
(byte/word/signed word/dword/signed dword~) $0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 * (byte/signed byte/word/signed word/dword/signed dword) 40
|
||||
@ -27,10 +94,10 @@ CONTROL FLOW GRAPH SSA
|
||||
.for(var cp=0; cp<8; cp++)
|
||||
.byte logoPic.getMulticolorByte(x,cp+y*8)
|
||||
}}
|
||||
to:@5
|
||||
main: scope:[main] from @5
|
||||
(byte*) LOGO#1 ← phi( @5/(byte*) LOGO#2 )
|
||||
(byte*) SCREEN#1 ← phi( @5/(byte*) SCREEN#5 )
|
||||
to:@6
|
||||
main: scope:[main] from @6
|
||||
(byte*) LOGO#1 ← phi( @6/(byte*) LOGO#2 )
|
||||
(byte*) SCREEN#1 ← phi( @6/(byte*) SCREEN#5 )
|
||||
*((byte*) BORDERCOL#0) ← (byte) WHITE#0
|
||||
*((byte*) BGCOL2#0) ← (byte) DARK_GREY#0
|
||||
*((byte*) BGCOL#0) ← *((byte*) BGCOL2#0)
|
||||
@ -98,6 +165,8 @@ main::@2: scope:[main] from main::@1 main::@3
|
||||
to:main::@return
|
||||
main::@3: scope:[main] from main::@2
|
||||
(byte*) SCREEN#4 ← phi( main::@2/(byte*) SCREEN#8 )
|
||||
(byte*~) main::$8 ← (byte*) SCREEN#4 + (word/signed word/dword/signed dword) 999
|
||||
(byte*~) main::$9 ← (byte*) SCREEN#4 + (word/signed word/dword/signed dword) 999
|
||||
(byte*~) main::$10 ← (byte*) SCREEN#4 + (word/signed word/dword/signed dword) 999
|
||||
*((byte*~) main::$10) ← ++ *((byte*~) main::$10)
|
||||
kickasm {{ inc $d020 }}
|
||||
@ -125,45 +194,137 @@ fill::@1: scope:[fill] from fill fill::@1
|
||||
fill::@return: scope:[fill] from fill::@1
|
||||
return
|
||||
to:@return
|
||||
@5: scope:[] from @3
|
||||
(byte*) LOGO#2 ← phi( @3/(byte*) LOGO#0 )
|
||||
(byte*) SCREEN#5 ← phi( @3/(byte*) SCREEN#0 )
|
||||
@6: scope:[] from @4
|
||||
(byte*) LOGO#2 ← phi( @4/(byte*) LOGO#0 )
|
||||
(byte*) SCREEN#5 ← phi( @4/(byte*) SCREEN#0 )
|
||||
call main
|
||||
to:@6
|
||||
@6: scope:[] from @5
|
||||
to:@7
|
||||
@7: scope:[] from @6
|
||||
to:@end
|
||||
@end: scope:[] from @6
|
||||
@end: scope:[] from @7
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(byte/word/signed word/dword/signed dword~) $0
|
||||
(byte/signed word/word/dword/signed dword~) $1
|
||||
(label) @3
|
||||
(label) @5
|
||||
(label) @4
|
||||
(label) @6
|
||||
(label) @7
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL#0
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL1#0
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL2#0
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL3#0
|
||||
(byte*) BGCOL4
|
||||
(byte*) BGCOL4#0
|
||||
(byte) BLACK
|
||||
(byte) BLACK#0
|
||||
(byte) BLUE
|
||||
(byte) BLUE#0
|
||||
(byte*) BORDERCOL
|
||||
(byte*) BORDERCOL#0
|
||||
(byte) BROWN
|
||||
(byte) BROWN#0
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHARGEN#0
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_INTERRUPT#0
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A#0
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_A_DDR#0
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B#0
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA1_PORT_B_DDR#0
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_INTERRUPT#0
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A#0
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_A_DDR#0
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B#0
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte*) CIA2_PORT_B_DDR#0
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte) CIA_INTERRUPT_CLEAR#0
|
||||
(byte*) COLS
|
||||
(byte*) COLS#0
|
||||
(byte) CYAN
|
||||
(byte) CYAN#0
|
||||
(byte*) D011
|
||||
(byte*) D011#0
|
||||
(byte*) D016
|
||||
(byte*) D016#0
|
||||
(byte*) D018
|
||||
(byte*) D018#0
|
||||
(byte) DARK_GREY
|
||||
(byte) DARK_GREY#0
|
||||
(byte) GREEN
|
||||
(byte) GREEN#0
|
||||
(byte) GREY
|
||||
(byte) GREY#0
|
||||
(void()**) HARDWARE_IRQ
|
||||
(void()**) HARDWARE_IRQ#0
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_BG#0
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte) IRQ_COLLISION_SPRITE#0
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte*) IRQ_ENABLE#0
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_LIGHTPEN#0
|
||||
(byte) IRQ_RASTER
|
||||
(byte) IRQ_RASTER#0
|
||||
(byte*) IRQ_STATUS
|
||||
(byte*) IRQ_STATUS#0
|
||||
(void()**) KERNEL_IRQ
|
||||
(void()**) KERNEL_IRQ#0
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_X#0
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte*) LIGHTPEN_Y#0
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_BLUE#0
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREEN#0
|
||||
(byte) LIGHT_GREY
|
||||
(byte) LIGHT_GREY#0
|
||||
(byte*) LOGO
|
||||
(byte*) LOGO#0
|
||||
(byte*) LOGO#1
|
||||
(byte*) LOGO#2
|
||||
(byte) ORANGE
|
||||
(byte) ORANGE#0
|
||||
(byte) PINK
|
||||
(byte) PINK#0
|
||||
(byte*) PROCPORT
|
||||
(byte*) PROCPORT#0
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte*) PROCPORT_DDR#0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_KERNEL_IO#0
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_ALL#0
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_CHARROM#0
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PROCPORT_RAM_IO#0
|
||||
(byte) PURPLE
|
||||
(byte) PURPLE#0
|
||||
(byte*) RASTER
|
||||
(byte*) RASTER#0
|
||||
(byte) RED
|
||||
(byte) RED#0
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SCREEN#1
|
||||
@ -176,12 +337,54 @@ SYMBOL TABLE SSA
|
||||
(byte*) SCREEN#7
|
||||
(byte*) SCREEN#8
|
||||
(byte*) SCREEN#9
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_COLS#0
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_ENABLE#0
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_X#0
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_EXPAND_Y#0
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC#0
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC1#0
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_MC2#0
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_PRIORITY#0
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XMSB#0
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_XPOS#0
|
||||
(byte*) SPRITES_YPOS
|
||||
(byte*) SPRITES_YPOS#0
|
||||
(word) SPRITE_PTRS
|
||||
(word) SPRITE_PTRS#0
|
||||
(byte) VIC_BMM
|
||||
(byte) VIC_BMM#0
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL#0
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte*) VIC_CONTROL2#0
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_CSEL#0
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_DEN#0
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_ECM#0
|
||||
(byte) VIC_MCM
|
||||
(byte) VIC_MCM#0
|
||||
(byte*) VIC_MEMORY
|
||||
(byte*) VIC_MEMORY#0
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RSEL#0
|
||||
(byte) VIC_RST8
|
||||
(byte) VIC_RST8#0
|
||||
(byte) WHITE
|
||||
(byte) WHITE#0
|
||||
(byte) YELLOW
|
||||
(byte) YELLOW#0
|
||||
(void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val)
|
||||
(byte*~) fill::$0
|
||||
(bool~) fill::$1
|
||||
@ -215,6 +418,8 @@ SYMBOL TABLE SSA
|
||||
(word/signed word/dword/signed dword~) main::$4
|
||||
(byte/word/dword~) main::$5
|
||||
(bool~) main::$7
|
||||
(byte*~) main::$8
|
||||
(byte*~) main::$9
|
||||
(label) main::@1
|
||||
(label) main::@10
|
||||
(label) main::@11
|
||||
@ -258,7 +463,7 @@ SYMBOL TABLE SSA
|
||||
(byte*) main::toD0181_screen#0
|
||||
(byte*) main::toD0181_screen#1
|
||||
|
||||
Culled Empty Block (label) @6
|
||||
Culled Empty Block (label) @7
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1
|
||||
Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1
|
||||
@ -288,18 +493,85 @@ Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) main::$7 if((byte) main::ch#1!=rangelast(0,239)) goto main::@1
|
||||
Simple Condition (bool~) fill::$1 if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
|
||||
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
|
||||
Constant (const byte*) PROCPORT#0 = ((byte*))1
|
||||
Constant (const byte) PROCPORT_RAM_ALL#0 = 48
|
||||
Constant (const byte) PROCPORT_RAM_IO#0 = 53
|
||||
Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49
|
||||
Constant (const byte) PROCPORT_KERNEL_IO#0 = 54
|
||||
Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55
|
||||
Constant (const byte*) CHARGEN#0 = ((byte*))53248
|
||||
Constant (const word) SPRITE_PTRS#0 = 1016
|
||||
Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248
|
||||
Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249
|
||||
Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264
|
||||
Constant (const byte*) RASTER#0 = ((byte*))53266
|
||||
Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269
|
||||
Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271
|
||||
Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275
|
||||
Constant (const byte*) SPRITES_MC#0 = ((byte*))53276
|
||||
Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277
|
||||
Constant (const byte*) BORDERCOL#0 = ((byte*))53280
|
||||
Constant (const byte*) BGCOL#0 = ((byte*))53281
|
||||
Constant (const byte*) BGCOL1#0 = ((byte*))53281
|
||||
Constant (const byte*) BGCOL2#0 = ((byte*))53282
|
||||
Constant (const byte*) BGCOL3#0 = ((byte*))53283
|
||||
Constant (const byte*) BGCOL4#0 = ((byte*))53284
|
||||
Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285
|
||||
Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286
|
||||
Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287
|
||||
Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265
|
||||
Constant (const byte*) D011#0 = ((byte*))53265
|
||||
Constant (const byte) VIC_RST8#0 = 128
|
||||
Constant (const byte) VIC_ECM#0 = 64
|
||||
Constant (const byte) VIC_BMM#0 = 32
|
||||
Constant (const byte) VIC_DEN#0 = 16
|
||||
Constant (const byte) VIC_RSEL#0 = 8
|
||||
Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270
|
||||
Constant (const byte*) D016#0 = ((byte*))53270
|
||||
Constant (const byte) VIC_MCM#0 = 16
|
||||
Constant (const byte) VIC_CSEL#0 = 8
|
||||
Constant (const byte*) D018#0 = ((byte*))53272
|
||||
Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272
|
||||
Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267
|
||||
Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268
|
||||
Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273
|
||||
Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274
|
||||
Constant (const byte) IRQ_RASTER#0 = 1
|
||||
Constant (const byte) IRQ_COLLISION_BG#0 = 2
|
||||
Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4
|
||||
Constant (const byte) IRQ_LIGHTPEN#0 = 8
|
||||
Constant (const byte*) COLS#0 = ((byte*))55296
|
||||
Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320
|
||||
Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321
|
||||
Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322
|
||||
Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323
|
||||
Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333
|
||||
Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127
|
||||
Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576
|
||||
Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577
|
||||
Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578
|
||||
Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579
|
||||
Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589
|
||||
Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788
|
||||
Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534
|
||||
Constant (const byte) BLACK#0 = 0
|
||||
Constant (const byte) WHITE#0 = 1
|
||||
Constant (const byte) RED#0 = 2
|
||||
Constant (const byte) CYAN#0 = 3
|
||||
Constant (const byte) PURPLE#0 = 4
|
||||
Constant (const byte) GREEN#0 = 5
|
||||
Constant (const byte) BLUE#0 = 6
|
||||
Constant (const byte) YELLOW#0 = 7
|
||||
Constant (const byte) ORANGE#0 = 8
|
||||
Constant (const byte) BROWN#0 = 9
|
||||
Constant (const byte) PINK#0 = 10
|
||||
Constant (const byte) DARK_GREY#0 = 11
|
||||
Constant (const byte) GREY#0 = 12
|
||||
Constant (const byte) LIGHT_GREEN#0 = 13
|
||||
Constant (const byte) LIGHT_BLUE#0 = 14
|
||||
Constant (const byte) LIGHT_GREY#0 = 15
|
||||
Constant (const byte*) SCREEN#0 = ((byte*))1024
|
||||
Constant (const byte*) LOGO#0 = ((byte*))8192
|
||||
Constant (const byte/word/signed word/dword/signed dword) $0 = 6*40
|
||||
@ -315,6 +587,8 @@ Constant (const byte*) fill::start#0 = SCREEN#0
|
||||
Constant (const byte) fill::val#0 = BLACK#0
|
||||
Constant (const byte) fill::val#1 = WHITE#0|8
|
||||
Constant (const byte*) fill::start#1 = COLS#0
|
||||
Constant (const byte*) main::$8 = SCREEN#0+999
|
||||
Constant (const byte*) main::$9 = SCREEN#0+999
|
||||
Constant (const byte*) main::$10 = SCREEN#0+999
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const word) main::toD0181_$0#0 = ((word))main::toD0181_screen#0
|
||||
@ -333,6 +607,7 @@ Constant (const byte) main::toD0181_return#0 = main::toD0181_$3#0|main::toD0181_
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
if() condition always true - replacing block destination if(true) goto main::@3
|
||||
Successful SSA optimization Pass2ConstantIfs
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Removing unused block main::@return
|
||||
Successful SSA optimization Pass2EliminateUnusedBlocks
|
||||
Resolved ranged next value main::ch#1 ← ++ main::ch#2 to ++
|
||||
@ -371,7 +646,7 @@ Successful SSA optimization Pass2ConstantInlining
|
||||
Added new block during phi lifting main::@12(between main::@1 and main::@1)
|
||||
Added new block during phi lifting fill::@3(between fill::@1 and fill::@1)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @5
|
||||
Adding NOP phi() at start of @6
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main::toD0181
|
||||
Adding NOP phi() at start of main::@10
|
||||
@ -387,7 +662,7 @@ Coalesced down to 4 phi equivalence classes
|
||||
Culled Empty Block (label) main::@12
|
||||
Culled Empty Block (label) fill::@3
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @5
|
||||
Adding NOP phi() at start of @6
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main::toD0181
|
||||
Adding NOP phi() at start of main::@10
|
||||
@ -395,22 +670,22 @@ Adding NOP phi() at start of main::@10
|
||||
FINAL CONTROL FLOW GRAPH
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@3
|
||||
@3: scope:[] from @begin
|
||||
to:@4
|
||||
@4: scope:[] from @begin
|
||||
kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
|
||||
.for (var y=0; y<6 ; y++)
|
||||
.for (var x=0;x<40; x++)
|
||||
.for(var cp=0; cp<8; cp++)
|
||||
.byte logoPic.getMulticolorByte(x,cp+y*8)
|
||||
}}
|
||||
to:@5
|
||||
@5: scope:[] from @3
|
||||
to:@6
|
||||
@6: scope:[] from @4
|
||||
[2] phi()
|
||||
[3] call main
|
||||
to:@end
|
||||
@end: scope:[] from @5
|
||||
@end: scope:[] from @6
|
||||
[4] phi()
|
||||
main: scope:[main] from @5
|
||||
main: scope:[main] from @6
|
||||
[5] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0
|
||||
[6] *((const byte*) BGCOL2#0) ← (const byte) DARK_GREY#0
|
||||
[7] *((const byte*) BGCOL#0) ← *((const byte*) BGCOL2#0)
|
||||
@ -457,19 +732,86 @@ fill::@return: scope:[fill] from fill::@1
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte*) LOGO
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val)
|
||||
(byte*) fill::addr
|
||||
(byte*) fill::addr#0 2.0
|
||||
@ -539,19 +881,19 @@ INITIAL ASM
|
||||
.label LOGO = $2000
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
jmp b3
|
||||
//SEG3 @3
|
||||
b3:
|
||||
jmp b4
|
||||
//SEG3 @4
|
||||
b4:
|
||||
//SEG4 kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }}
|
||||
//SEG5 [2] phi from @3 to @5 [phi:@3->@5]
|
||||
b5_from_b3:
|
||||
jmp b5
|
||||
//SEG6 @5
|
||||
b5:
|
||||
//SEG5 [2] phi from @4 to @6 [phi:@4->@6]
|
||||
b6_from_b4:
|
||||
jmp b6
|
||||
//SEG6 @6
|
||||
b6:
|
||||
//SEG7 [3] call main
|
||||
jsr main
|
||||
//SEG8 [4] phi from @5 to @end [phi:@5->@end]
|
||||
bend_from_b5:
|
||||
//SEG8 [4] phi from @6 to @end [phi:@6->@end]
|
||||
bend_from_b6:
|
||||
jmp bend
|
||||
//SEG9 @end
|
||||
bend:
|
||||
@ -767,19 +1109,19 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.label LOGO = $2000
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
jmp b3
|
||||
//SEG3 @3
|
||||
b3:
|
||||
jmp b4
|
||||
//SEG3 @4
|
||||
b4:
|
||||
//SEG4 kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }}
|
||||
//SEG5 [2] phi from @3 to @5 [phi:@3->@5]
|
||||
b5_from_b3:
|
||||
jmp b5
|
||||
//SEG6 @5
|
||||
b5:
|
||||
//SEG5 [2] phi from @4 to @6 [phi:@4->@6]
|
||||
b6_from_b4:
|
||||
jmp b6
|
||||
//SEG6 @6
|
||||
b6:
|
||||
//SEG7 [3] call main
|
||||
jsr main
|
||||
//SEG8 [4] phi from @5 to @end [phi:@5->@end]
|
||||
bend_from_b5:
|
||||
//SEG8 [4] phi from @6 to @end [phi:@6->@end]
|
||||
bend_from_b6:
|
||||
jmp bend
|
||||
//SEG9 @end
|
||||
bend:
|
||||
@ -928,8 +1270,8 @@ fill: {
|
||||
|
||||
|
||||
ASSEMBLER OPTIMIZATIONS
|
||||
Removing instruction jmp b3
|
||||
Removing instruction jmp b5
|
||||
Removing instruction jmp b4
|
||||
Removing instruction jmp b6
|
||||
Removing instruction jmp bend
|
||||
Removing instruction jmp toD0181
|
||||
Removing instruction jmp b9
|
||||
@ -945,9 +1287,9 @@ Replacing label b1_from_b1 with b1
|
||||
Replacing label b1_from_b1 with b1
|
||||
Replacing label b1_from_b1 with b1
|
||||
Removing instruction bbegin:
|
||||
Removing instruction b3:
|
||||
Removing instruction b5_from_b3:
|
||||
Removing instruction bend_from_b5:
|
||||
Removing instruction b4:
|
||||
Removing instruction b6_from_b4:
|
||||
Removing instruction bend_from_b6:
|
||||
Removing instruction toD0181_from_main:
|
||||
Removing instruction toD0181:
|
||||
Removing instruction b10_from_b9:
|
||||
@ -956,7 +1298,7 @@ Removing instruction b1_from_b1:
|
||||
Removing instruction b1_from_fill:
|
||||
Removing instruction b1_from_b1:
|
||||
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||
Removing instruction b5:
|
||||
Removing instruction b6:
|
||||
Removing instruction bend:
|
||||
Removing instruction b9:
|
||||
Removing instruction fill_from_b9:
|
||||
@ -968,38 +1310,105 @@ Removing instruction jmp b1
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(label) @3
|
||||
(label) @5
|
||||
(label) @4
|
||||
(label) @6
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(const byte*) BGCOL2#0 BGCOL2 = ((byte*))(word/dword/signed dword) 53282
|
||||
(byte*) BGCOL3
|
||||
(const byte*) BGCOL3#0 BGCOL3 = ((byte*))(word/dword/signed dword) 53283
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(const byte*) COLS#0 COLS = ((byte*))(word/dword/signed dword) 55296
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(const byte*) D016#0 D016 = ((byte*))(word/dword/signed dword) 53270
|
||||
(byte*) D018
|
||||
(const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) 53272
|
||||
(byte) DARK_GREY
|
||||
(const byte) DARK_GREY#0 DARK_GREY = (byte/signed byte/word/signed word/dword/signed dword) 11
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte*) LOGO
|
||||
(const byte*) LOGO#0 LOGO = ((byte*))(word/signed word/dword/signed dword) 8192
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(const byte) VIC_CSEL#0 VIC_CSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(const byte) VIC_MCM#0 VIC_MCM = (byte/signed byte/word/signed word/dword/signed dword) 16
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) YELLOW
|
||||
(void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val)
|
||||
(label) fill::@1
|
||||
(label) fill::@return
|
||||
@ -1066,13 +1475,13 @@ Score: 3578
|
||||
.label SCREEN = $400
|
||||
.label LOGO = $2000
|
||||
//SEG2 @begin
|
||||
//SEG3 @3
|
||||
//SEG3 @4
|
||||
//SEG4 kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }}
|
||||
//SEG5 [2] phi from @3 to @5 [phi:@3->@5]
|
||||
//SEG6 @5
|
||||
//SEG5 [2] phi from @4 to @6 [phi:@4->@6]
|
||||
//SEG6 @6
|
||||
//SEG7 [3] call main
|
||||
jsr main
|
||||
//SEG8 [4] phi from @5 to @end [phi:@5->@end]
|
||||
//SEG8 [4] phi from @6 to @end [phi:@6->@end]
|
||||
//SEG9 @end
|
||||
//SEG10 main
|
||||
main: {
|
||||
|
@ -1,35 +1,102 @@
|
||||
(label) @3
|
||||
(label) @5
|
||||
(label) @4
|
||||
(label) @6
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(const byte*) BGCOL2#0 BGCOL2 = ((byte*))(word/dword/signed dword) 53282
|
||||
(byte*) BGCOL3
|
||||
(const byte*) BGCOL3#0 BGCOL3 = ((byte*))(word/dword/signed dword) 53283
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(const byte*) COLS#0 COLS = ((byte*))(word/dword/signed dword) 55296
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(const byte*) D016#0 D016 = ((byte*))(word/dword/signed dword) 53270
|
||||
(byte*) D018
|
||||
(const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) 53272
|
||||
(byte) DARK_GREY
|
||||
(const byte) DARK_GREY#0 DARK_GREY = (byte/signed byte/word/signed word/dword/signed dword) 11
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte*) LOGO
|
||||
(const byte*) LOGO#0 LOGO = ((byte*))(word/signed word/dword/signed dword) 8192
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(const byte) VIC_CSEL#0 VIC_CSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(const byte) VIC_MCM#0 VIC_MCM = (byte/signed byte/word/signed word/dword/signed dword) 16
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) YELLOW
|
||||
(void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val)
|
||||
(label) fill::@1
|
||||
(label) fill::@return
|
||||
|
@ -312,6 +312,7 @@ sin16s_gen2: {
|
||||
rts
|
||||
}
|
||||
mul16s: {
|
||||
.label _5 = 2
|
||||
.label _6 = 6
|
||||
.label _16 = 6
|
||||
.label m = $c
|
||||
@ -329,6 +330,10 @@ mul16s: {
|
||||
lda a+1
|
||||
bpl b2
|
||||
lda m+2
|
||||
sta _5
|
||||
lda m+3
|
||||
sta _5+1
|
||||
lda m+2
|
||||
sta _6
|
||||
lda m+3
|
||||
sta _6+1
|
||||
|
@ -1,7 +1,7 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@28
|
||||
@28: scope:[] from @begin
|
||||
to:@29
|
||||
@29: scope:[] from @begin
|
||||
kickasm {{ .label pc_restore = *
|
||||
.pc = $1400
|
||||
.for(var i=0; i<512; i++) {
|
||||
@ -9,14 +9,14 @@
|
||||
}
|
||||
.pc = pc_restore
|
||||
}}
|
||||
to:@31
|
||||
@31: scope:[] from @28
|
||||
to:@32
|
||||
@32: scope:[] from @29
|
||||
[2] phi()
|
||||
[3] call main
|
||||
to:@end
|
||||
@end: scope:[] from @31
|
||||
@end: scope:[] from @32
|
||||
[4] phi()
|
||||
main: scope:[main] from @31
|
||||
main: scope:[main] from @32
|
||||
asm { sei }
|
||||
[6] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0
|
||||
[7] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0
|
||||
@ -187,261 +187,262 @@ mul16s::@6: scope:[mul16s] from mul16s
|
||||
[94] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1
|
||||
to:mul16s::@3
|
||||
mul16s::@3: scope:[mul16s] from mul16s::@6
|
||||
[95] (word~) mul16s::$6 ← > (dword) mul16s::m#0
|
||||
[96] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0
|
||||
[97] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16
|
||||
[95] (word~) mul16s::$5 ← > (dword) mul16s::m#0
|
||||
[96] (word~) mul16s::$6 ← > (dword) mul16s::m#0
|
||||
[97] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0
|
||||
[98] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16
|
||||
to:mul16s::@1
|
||||
mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@6
|
||||
[98] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 )
|
||||
[99] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 )
|
||||
to:mul16s::@2
|
||||
mul16s::@2: scope:[mul16s] from mul16s::@1
|
||||
[99] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4
|
||||
[100] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4
|
||||
to:mul16s::@return
|
||||
mul16s::@return: scope:[mul16s] from mul16s::@2
|
||||
[100] return
|
||||
[101] return
|
||||
to:@return
|
||||
mul16u: scope:[mul16u] from mul16s mulu16_sel
|
||||
[101] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 )
|
||||
[101] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 )
|
||||
[102] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2
|
||||
[102] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 )
|
||||
[102] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 )
|
||||
[103] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2
|
||||
to:mul16u::@1
|
||||
mul16u::@1: scope:[mul16u] from mul16u mul16u::@4
|
||||
[103] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 )
|
||||
[103] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 )
|
||||
[103] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 )
|
||||
[104] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2
|
||||
[104] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 )
|
||||
[104] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 )
|
||||
[104] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 )
|
||||
[105] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2
|
||||
to:mul16u::@return
|
||||
mul16u::@return: scope:[mul16u] from mul16u::@1
|
||||
[105] return
|
||||
[106] return
|
||||
to:@return
|
||||
mul16u::@2: scope:[mul16u] from mul16u::@1
|
||||
[106] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[107] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4
|
||||
[107] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[108] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4
|
||||
to:mul16u::@7
|
||||
mul16u::@7: scope:[mul16u] from mul16u::@2
|
||||
[108] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2
|
||||
[109] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2
|
||||
to:mul16u::@4
|
||||
mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@7
|
||||
[109] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 )
|
||||
[110] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[111] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[110] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 )
|
||||
[111] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[112] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
to:mul16u::@1
|
||||
sin16s: scope:[sin16s] from sin16s_gen2::@1
|
||||
[112] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1
|
||||
[113] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1
|
||||
to:sin16s::@4
|
||||
sin16s::@4: scope:[sin16s] from sin16s
|
||||
[113] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0
|
||||
[114] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0
|
||||
to:sin16s::@1
|
||||
sin16s::@1: scope:[sin16s] from sin16s sin16s::@4
|
||||
[114] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[114] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 )
|
||||
[115] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2
|
||||
[115] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[115] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 )
|
||||
[116] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2
|
||||
to:sin16s::@5
|
||||
sin16s::@5: scope:[sin16s] from sin16s::@1
|
||||
[116] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4
|
||||
[117] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4
|
||||
to:sin16s::@2
|
||||
sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5
|
||||
[117] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 )
|
||||
[118] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
[119] (word) sin16s::x1#0 ← > (dword~) sin16s::$6
|
||||
[120] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0
|
||||
[121] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0
|
||||
[122] call mulu16_sel
|
||||
[123] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12
|
||||
[118] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 )
|
||||
[119] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
[120] (word) sin16s::x1#0 ← > (dword~) sin16s::$6
|
||||
[121] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0
|
||||
[122] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0
|
||||
[123] call mulu16_sel
|
||||
[124] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@8
|
||||
sin16s::@8: scope:[sin16s] from sin16s::@2
|
||||
[124] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0
|
||||
[125] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0
|
||||
[126] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0
|
||||
[127] call mulu16_sel
|
||||
[128] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12
|
||||
[125] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0
|
||||
[126] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0
|
||||
[127] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0
|
||||
[128] call mulu16_sel
|
||||
[129] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@9
|
||||
sin16s::@9: scope:[sin16s] from sin16s::@8
|
||||
[129] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1
|
||||
[130] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0
|
||||
[131] call mulu16_sel
|
||||
[132] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12
|
||||
[130] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1
|
||||
[131] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0
|
||||
[132] call mulu16_sel
|
||||
[133] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@10
|
||||
sin16s::@10: scope:[sin16s] from sin16s::@9
|
||||
[133] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2
|
||||
[134] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0
|
||||
[135] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0
|
||||
[136] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0
|
||||
[137] call mulu16_sel
|
||||
[138] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12
|
||||
[134] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2
|
||||
[135] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0
|
||||
[136] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0
|
||||
[137] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0
|
||||
[138] call mulu16_sel
|
||||
[139] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@11
|
||||
sin16s::@11: scope:[sin16s] from sin16s::@10
|
||||
[139] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10
|
||||
[140] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0
|
||||
[141] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0
|
||||
[142] call mulu16_sel
|
||||
[143] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12
|
||||
[140] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10
|
||||
[141] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0
|
||||
[142] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0
|
||||
[143] call mulu16_sel
|
||||
[144] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@12
|
||||
sin16s::@12: scope:[sin16s] from sin16s::@11
|
||||
[144] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11
|
||||
[145] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
[146] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0
|
||||
[147] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15
|
||||
[145] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11
|
||||
[146] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
[147] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0
|
||||
[148] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15
|
||||
to:sin16s::@6
|
||||
sin16s::@6: scope:[sin16s] from sin16s::@12
|
||||
[148] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1
|
||||
[149] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1
|
||||
to:sin16s::@3
|
||||
sin16s::@3: scope:[sin16s] from sin16s::@15 sin16s::@6
|
||||
[149] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 )
|
||||
[150] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 )
|
||||
to:sin16s::@return
|
||||
sin16s::@return: scope:[sin16s] from sin16s::@3
|
||||
[150] return
|
||||
[151] return
|
||||
to:@return
|
||||
sin16s::@15: scope:[sin16s] from sin16s::@12
|
||||
[151] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1
|
||||
[152] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1
|
||||
to:sin16s::@3
|
||||
mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@11 sin16s::@2 sin16s::@8 sin16s::@9
|
||||
[152] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[152] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#3 sin16s::@11/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@8/(word) mulu16_sel::v2#1 sin16s::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 )
|
||||
[152] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#3 sin16s::@11/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@8/(word) mulu16_sel::v1#1 sin16s::@9/(word) mulu16_sel::v1#2 )
|
||||
[153] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5
|
||||
[154] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5
|
||||
[155] call mul16u
|
||||
[156] (dword) mul16u::return#3 ← (dword) mul16u::res#2
|
||||
[153] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[153] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#3 sin16s::@11/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@8/(word) mulu16_sel::v2#1 sin16s::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 )
|
||||
[153] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#3 sin16s::@11/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@8/(word) mulu16_sel::v1#1 sin16s::@9/(word) mulu16_sel::v1#2 )
|
||||
[154] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5
|
||||
[155] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5
|
||||
[156] call mul16u
|
||||
[157] (dword) mul16u::return#3 ← (dword) mul16u::res#2
|
||||
to:mulu16_sel::@2
|
||||
mulu16_sel::@2: scope:[mulu16_sel] from mulu16_sel
|
||||
[157] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3
|
||||
[158] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5
|
||||
[159] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1
|
||||
[158] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3
|
||||
[159] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5
|
||||
[160] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1
|
||||
to:mulu16_sel::@return
|
||||
mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@2
|
||||
[160] return
|
||||
[161] return
|
||||
to:@return
|
||||
div32u16u: scope:[div32u16u] from sin16s_gen2
|
||||
[161] phi()
|
||||
[162] call divr16u
|
||||
[163] (word) divr16u::return#2 ← (word) divr16u::return#0
|
||||
[162] phi()
|
||||
[163] call divr16u
|
||||
[164] (word) divr16u::return#2 ← (word) divr16u::return#0
|
||||
to:div32u16u::@2
|
||||
div32u16u::@2: scope:[div32u16u] from div32u16u
|
||||
[164] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2
|
||||
[165] (word) divr16u::rem#4 ← (word) rem16u#1
|
||||
[166] call divr16u
|
||||
[167] (word) divr16u::return#3 ← (word) divr16u::return#0
|
||||
[165] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2
|
||||
[166] (word) divr16u::rem#4 ← (word) rem16u#1
|
||||
[167] call divr16u
|
||||
[168] (word) divr16u::return#3 ← (word) divr16u::return#0
|
||||
to:div32u16u::@3
|
||||
div32u16u::@3: scope:[div32u16u] from div32u16u::@2
|
||||
[168] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3
|
||||
[169] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0
|
||||
[169] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3
|
||||
[170] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0
|
||||
to:div32u16u::@return
|
||||
div32u16u::@return: scope:[div32u16u] from div32u16u::@3
|
||||
[170] return
|
||||
[171] return
|
||||
to:@return
|
||||
divr16u: scope:[divr16u] from div32u16u div32u16u::@2
|
||||
[171] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 )
|
||||
[171] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 )
|
||||
[172] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 )
|
||||
[172] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 )
|
||||
to:divr16u::@1
|
||||
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
|
||||
[172] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 )
|
||||
[172] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 )
|
||||
[172] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 )
|
||||
[172] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 )
|
||||
[173] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[174] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
|
||||
[175] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128
|
||||
[176] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2
|
||||
[173] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 )
|
||||
[173] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 )
|
||||
[173] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 )
|
||||
[173] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 )
|
||||
[174] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[175] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
|
||||
[176] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128
|
||||
[177] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2
|
||||
to:divr16u::@4
|
||||
divr16u::@4: scope:[divr16u] from divr16u::@1
|
||||
[177] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[178] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
to:divr16u::@2
|
||||
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
|
||||
[178] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
|
||||
[179] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[180] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[181] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3
|
||||
[179] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
|
||||
[180] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[181] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[182] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3
|
||||
to:divr16u::@5
|
||||
divr16u::@5: scope:[divr16u] from divr16u::@2
|
||||
[182] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
|
||||
[183] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0
|
||||
[183] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
|
||||
[184] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0
|
||||
to:divr16u::@3
|
||||
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
|
||||
[184] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
|
||||
[184] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
|
||||
[185] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
|
||||
[186] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1
|
||||
[185] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
|
||||
[185] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
|
||||
[186] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
|
||||
[187] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1
|
||||
to:divr16u::@6
|
||||
divr16u::@6: scope:[divr16u] from divr16u::@3
|
||||
[187] (word) rem16u#1 ← (word) divr16u::rem#11
|
||||
[188] (word) rem16u#1 ← (word) divr16u::rem#11
|
||||
to:divr16u::@return
|
||||
divr16u::@return: scope:[divr16u] from divr16u::@6
|
||||
[188] return
|
||||
[189] return
|
||||
to:@return
|
||||
bitmap_clear: scope:[bitmap_clear] from main::@10
|
||||
[189] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0)
|
||||
[190] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3
|
||||
[190] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0)
|
||||
[191] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3
|
||||
to:bitmap_clear::@1
|
||||
bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear bitmap_clear::@3
|
||||
[191] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 )
|
||||
[191] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 )
|
||||
[192] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 )
|
||||
[192] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 )
|
||||
to:bitmap_clear::@2
|
||||
bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 bitmap_clear::@2
|
||||
[192] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 )
|
||||
[192] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 )
|
||||
[193] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
[194] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2
|
||||
[195] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2
|
||||
[196] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2
|
||||
[193] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 )
|
||||
[193] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 )
|
||||
[194] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
[195] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2
|
||||
[196] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2
|
||||
[197] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2
|
||||
to:bitmap_clear::@3
|
||||
bitmap_clear::@3: scope:[bitmap_clear] from bitmap_clear::@2
|
||||
[197] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4
|
||||
[198] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1
|
||||
[198] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4
|
||||
[199] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1
|
||||
to:bitmap_clear::@return
|
||||
bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3
|
||||
[199] return
|
||||
[200] return
|
||||
to:@return
|
||||
bitmap_init: scope:[bitmap_init] from main::@9
|
||||
[200] phi()
|
||||
[201] phi()
|
||||
to:bitmap_init::@1
|
||||
bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2
|
||||
[201] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 )
|
||||
[201] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) 128 bitmap_init::@2/(byte) bitmap_init::bits#4 )
|
||||
[202] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3
|
||||
[203] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[204] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10
|
||||
[202] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 )
|
||||
[202] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) 128 bitmap_init::@2/(byte) bitmap_init::bits#4 )
|
||||
[203] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3
|
||||
[204] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[205] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10
|
||||
to:bitmap_init::@2
|
||||
bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@10
|
||||
[205] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@10/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) 128 )
|
||||
[206] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2
|
||||
[207] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1
|
||||
[206] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@10/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) 128 )
|
||||
[207] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2
|
||||
[208] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1
|
||||
to:bitmap_init::@3
|
||||
bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4
|
||||
[208] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@2/(const byte*) BITMAP#0 )
|
||||
[208] (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[209] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
[210] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2
|
||||
[211] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4
|
||||
[212] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5
|
||||
[213] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2
|
||||
[214] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6
|
||||
[215] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
[216] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4
|
||||
[209] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@2/(const byte*) BITMAP#0 )
|
||||
[209] (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[210] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
[211] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2
|
||||
[212] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4
|
||||
[213] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5
|
||||
[214] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2
|
||||
[215] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6
|
||||
[216] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
[217] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4
|
||||
to:bitmap_init::@7
|
||||
bitmap_init::@7: scope:[bitmap_init] from bitmap_init::@3
|
||||
[217] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
[218] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
to:bitmap_init::@4
|
||||
bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@7
|
||||
[218] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 )
|
||||
[219] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2
|
||||
[220] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3
|
||||
[219] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 )
|
||||
[220] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2
|
||||
[221] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3
|
||||
to:bitmap_init::@return
|
||||
bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4
|
||||
[221] return
|
||||
[222] return
|
||||
to:@return
|
||||
bitmap_init::@10: scope:[bitmap_init] from bitmap_init::@1
|
||||
[222] phi()
|
||||
[223] phi()
|
||||
to:bitmap_init::@2
|
||||
fill: scope:[fill] from main::@8
|
||||
[223] phi()
|
||||
[224] phi()
|
||||
to:fill::@1
|
||||
fill::@1: scope:[fill] from fill fill::@1
|
||||
[224] (byte*) fill::addr#2 ← phi( fill/(const byte*) SCREEN#0 fill::@1/(byte*) fill::addr#1 )
|
||||
[225] *((byte*) fill::addr#2) ← (const byte) WHITE#0
|
||||
[226] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2
|
||||
[227] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1
|
||||
[225] (byte*) fill::addr#2 ← phi( fill/(const byte*) SCREEN#0 fill::@1/(byte*) fill::addr#1 )
|
||||
[226] *((byte*) fill::addr#2) ← (const byte) WHITE#0
|
||||
[227] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2
|
||||
[228] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1
|
||||
to:fill::@return
|
||||
fill::@return: scope:[fill] from fill::@1
|
||||
[228] return
|
||||
[229] return
|
||||
to:@return
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,49 +1,116 @@
|
||||
(label) @28
|
||||
(label) @31
|
||||
(label) @29
|
||||
(label) @32
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte*) BITMAP
|
||||
(const byte*) BITMAP#0 BITMAP = ((byte*))(word/signed word/dword/signed dword) 8192
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) 56576
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) 56578
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(const byte*) D011#0 D011 = ((byte*))(word/dword/signed dword) 53265
|
||||
(byte*) D016
|
||||
(const byte*) D016#0 D016 = ((byte*))(word/dword/signed dword) 53270
|
||||
(byte*) D018
|
||||
(const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) 53272
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(word) PI2_u4f12
|
||||
(dword) PI2_u4f28
|
||||
(const dword) PI2_u4f28#0 PI2_u4f28 = (dword/signed dword) 1686629713
|
||||
(byte) PINK
|
||||
(word) PI_HALF_u4f12
|
||||
(dword) PI_HALF_u4f28
|
||||
(const dword) PI_HALF_u4f28#0 PI_HALF_u4f28 = (dword/signed dword) 421657428
|
||||
(word) PI_u4f12
|
||||
(dword) PI_u4f28
|
||||
(const dword) PI_u4f28#0 PI_u4f28 = (dword/signed dword) 843314857
|
||||
(byte*) PROCPORT
|
||||
(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) 53
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(word) SIN_SIZE
|
||||
(const word) SIN_SIZE#0 SIN_SIZE = (word/signed word/dword/signed dword) 512
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(const byte) VIC_BMM#0 VIC_BMM = (byte/signed byte/word/signed word/dword/signed dword) 32
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(const byte) VIC_CSEL#0 VIC_CSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) VIC_DEN
|
||||
(const byte) VIC_DEN#0 VIC_DEN = (byte/signed byte/word/signed word/dword/signed dword) 16
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) YELLOW
|
||||
(void()) bitmap_clear()
|
||||
(word~) bitmap_clear::$3 $3 zp ZP_WORD:2 2.0
|
||||
(label) bitmap_clear::@1
|
||||
@ -207,6 +274,7 @@
|
||||
(const byte) main::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte/signed byte/word/signed word/dword/signed dword) 3^>((word))(const byte*) SCREEN#0>>(byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b)
|
||||
(word~) mul16s::$16 $16 zp ZP_WORD:6 4.0
|
||||
(word~) mul16s::$5 $5 zp ZP_WORD:2 20.0
|
||||
(word~) mul16s::$6 $6 zp ZP_WORD:6 4.0
|
||||
(label) mul16s::@1
|
||||
(label) mul16s::@2
|
||||
@ -277,8 +345,11 @@
|
||||
(word) mulu16_sel::v2#3 v2 zp ZP_WORD:6 4.0
|
||||
(word) mulu16_sel::v2#4 v2 zp ZP_WORD:6 4.0
|
||||
(word) mulu16_sel::v2#5 v2 zp ZP_WORD:6 5.0
|
||||
(signed word) rem16s
|
||||
(word) rem16u
|
||||
(word) rem16u#1 rem16u zp ZP_WORD:2 0.8
|
||||
(signed byte) rem8s
|
||||
(byte) rem8u
|
||||
(void()) render_sine()
|
||||
(word~) render_sine::$0 $0 zp ZP_WORD:6 22.0
|
||||
(signed word*~) render_sine::$1 $1 zp ZP_WORD:6 22.0
|
||||
@ -406,7 +477,7 @@
|
||||
(signed word) wrap_y::y#6 y zp ZP_WORD:6 203.0
|
||||
(signed word) wrap_y::y#9 y zp ZP_WORD:6 24.0
|
||||
|
||||
zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 fill::addr#2 fill::addr#1 ]
|
||||
zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 fill::addr#2 fill::addr#1 mul16s::$5 ]
|
||||
zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 sin16s_gen2::i#2 sin16s_gen2::i#1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ]
|
||||
reg byte x [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ]
|
||||
zp ZP_WORD:6 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$0 render_sine::$1 render_sine::$4 render_sine::$5 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 bitmap_plot::$3 bitmap_plot::plotter#1 sin16s_gen2::$6 sin16s_gen2::$8 mul16s::$6 mul16s::$16 mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ]
|
||||
|
@ -1,13 +1,13 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@59
|
||||
@59: scope:[] from @begin
|
||||
to:@60
|
||||
@60: scope:[] from @begin
|
||||
[1] phi()
|
||||
[2] call main
|
||||
to:@end
|
||||
@end: scope:[] from @59
|
||||
@end: scope:[] from @60
|
||||
[3] phi()
|
||||
main: scope:[main] from @59
|
||||
main: scope:[main] from @60
|
||||
[4] phi()
|
||||
[5] call init
|
||||
to:main::@2
|
||||
|
@ -2,23 +2,90 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48
|
||||
(byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53
|
||||
(byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49
|
||||
(byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55
|
||||
(byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248
|
||||
(word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016
|
||||
(byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248
|
||||
(byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249
|
||||
(byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264
|
||||
(byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266
|
||||
(byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269
|
||||
(byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271
|
||||
(byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275
|
||||
(byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276
|
||||
(byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277
|
||||
(byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280
|
||||
(byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281
|
||||
(byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281
|
||||
(byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282
|
||||
(byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283
|
||||
(byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284
|
||||
(byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285
|
||||
(byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286
|
||||
(byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287
|
||||
(byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265
|
||||
(byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265
|
||||
(byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128
|
||||
(byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64
|
||||
(byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32
|
||||
(byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16
|
||||
(byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270
|
||||
(byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270
|
||||
(byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16
|
||||
(byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272
|
||||
(byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272
|
||||
(byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267
|
||||
(byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268
|
||||
(byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273
|
||||
(byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274
|
||||
(byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296
|
||||
to:@3
|
||||
@3: scope:[] from @begin
|
||||
(byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320
|
||||
(byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321
|
||||
(byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322
|
||||
(byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323
|
||||
(byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333
|
||||
(byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127
|
||||
(byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576
|
||||
(byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577
|
||||
(byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578
|
||||
(byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579
|
||||
(byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589
|
||||
(void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788
|
||||
(void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534
|
||||
(byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9
|
||||
(byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10
|
||||
(byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11
|
||||
(byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12
|
||||
(byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13
|
||||
(byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14
|
||||
(byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15
|
||||
to:@4
|
||||
@4: scope:[] from @begin
|
||||
(byte*) memLo#0 ← ((byte*)) (byte/word/signed word/dword/signed dword) 254
|
||||
(byte*) memHi#0 ← ((byte*)) (byte/word/signed word/dword/signed dword) 255
|
||||
to:@49
|
||||
to:@31
|
||||
prepareMEM: scope:[prepareMEM] from addMEMtoFAC divMEMbyFAC mulFACbyMEM setFAC setMEMtoFAC
|
||||
(byte*) prepareMEM::mem#5 ← phi( addMEMtoFAC/(byte*) prepareMEM::mem#2 divMEMbyFAC/(byte*) prepareMEM::mem#3 mulFACbyMEM/(byte*) prepareMEM::mem#4 setFAC/(byte*) prepareMEM::mem#0 setMEMtoFAC/(byte*) prepareMEM::mem#1 )
|
||||
(byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5
|
||||
@ -113,19 +180,27 @@ sinFAC: scope:[sinFAC] from gen_sintab::@18
|
||||
sinFAC::@return: scope:[sinFAC] from sinFAC
|
||||
return
|
||||
to:@return
|
||||
@49: scope:[] from @3
|
||||
@31: scope:[] from @4
|
||||
(byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
|
||||
(byte*) print_line_cursor#0 ← (byte*) print_screen#0
|
||||
(byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0
|
||||
to:@43
|
||||
@43: scope:[] from @31
|
||||
(byte[]) print_hextab#0 ← (const string) $0
|
||||
to:@50
|
||||
@50: scope:[] from @43
|
||||
(byte) sinlen_x#0 ← (byte/word/signed word/dword/signed dword) 221
|
||||
(byte[221]) sintab_x#0 ← { fill( 221, 0) }
|
||||
(byte) sinlen_y#0 ← (byte/word/signed word/dword/signed dword) 197
|
||||
(byte[197]) sintab_y#0 ← { fill( 197, 0) }
|
||||
(byte*) sprites#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192
|
||||
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
|
||||
to:@52
|
||||
main: scope:[main] from @59
|
||||
(byte) sin_idx_y#24 ← phi( @59/(byte) sin_idx_y#17 )
|
||||
(byte) sin_idx_x#26 ← phi( @59/(byte) sin_idx_x#16 )
|
||||
(byte) progress_idx#30 ← phi( @59/(byte) progress_idx#35 )
|
||||
(byte*) progress_cursor#29 ← phi( @59/(byte*) progress_cursor#35 )
|
||||
to:@53
|
||||
main: scope:[main] from @60
|
||||
(byte) sin_idx_y#24 ← phi( @60/(byte) sin_idx_y#17 )
|
||||
(byte) sin_idx_x#26 ← phi( @60/(byte) sin_idx_x#16 )
|
||||
(byte) progress_idx#30 ← phi( @60/(byte) progress_idx#35 )
|
||||
(byte*) progress_cursor#29 ← phi( @60/(byte*) progress_cursor#35 )
|
||||
call init
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main
|
||||
@ -277,10 +352,10 @@ clear_screen::@1: scope:[clear_screen] from clear_screen clear_screen::@1
|
||||
clear_screen::@return: scope:[clear_screen] from clear_screen::@1
|
||||
return
|
||||
to:@return
|
||||
@52: scope:[] from @49
|
||||
@53: scope:[] from @50
|
||||
(byte*) progress_cursor#7 ← (byte*) SCREEN#0
|
||||
(byte) progress_idx#7 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:@54
|
||||
to:@55
|
||||
progress_init: scope:[progress_init] from init::@5 init::@7
|
||||
(byte*) progress_init::line#2 ← phi( init::@5/(byte*) progress_init::line#0 init::@7/(byte*) progress_init::line#1 )
|
||||
(byte*) progress_cursor#8 ← (byte*) progress_init::line#2
|
||||
@ -320,12 +395,12 @@ progress_inc::@return: scope:[progress_inc] from progress_inc::@1
|
||||
(byte*) progress_cursor#11 ← (byte*) progress_cursor#25
|
||||
return
|
||||
to:@return
|
||||
@54: scope:[] from @52
|
||||
(byte) progress_idx#39 ← phi( @52/(byte) progress_idx#7 )
|
||||
(byte*) progress_cursor#39 ← phi( @52/(byte*) progress_cursor#7 )
|
||||
@55: scope:[] from @53
|
||||
(byte) progress_idx#39 ← phi( @53/(byte) progress_idx#7 )
|
||||
(byte*) progress_cursor#39 ← phi( @53/(byte*) progress_cursor#7 )
|
||||
(byte) sin_idx_x#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) sin_idx_y#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:@59
|
||||
to:@60
|
||||
anim: scope:[anim] from main::@3
|
||||
(byte) sin_idx_y#9 ← phi( main::@3/(byte) sin_idx_y#13 )
|
||||
(byte) sin_idx_x#9 ← phi( main::@3/(byte) sin_idx_x#13 )
|
||||
@ -885,44 +960,147 @@ gen_sintab::@return: scope:[gen_sintab] from gen_sintab::@23
|
||||
(byte*) progress_cursor#13 ← (byte*) progress_cursor#27
|
||||
return
|
||||
to:@return
|
||||
@59: scope:[] from @54
|
||||
(byte) sin_idx_y#17 ← phi( @54/(byte) sin_idx_y#2 )
|
||||
(byte) sin_idx_x#16 ← phi( @54/(byte) sin_idx_x#2 )
|
||||
(byte) progress_idx#35 ← phi( @54/(byte) progress_idx#39 )
|
||||
(byte*) progress_cursor#35 ← phi( @54/(byte*) progress_cursor#39 )
|
||||
@60: scope:[] from @55
|
||||
(byte) sin_idx_y#17 ← phi( @55/(byte) sin_idx_y#2 )
|
||||
(byte) sin_idx_x#16 ← phi( @55/(byte) sin_idx_x#2 )
|
||||
(byte) progress_idx#35 ← phi( @55/(byte) progress_idx#39 )
|
||||
(byte*) progress_cursor#35 ← phi( @55/(byte*) progress_cursor#39 )
|
||||
call main
|
||||
to:@60
|
||||
@60: scope:[] from @59
|
||||
(byte) sin_idx_y#12 ← phi( @59/(byte) sin_idx_y#1 )
|
||||
(byte) sin_idx_x#12 ← phi( @59/(byte) sin_idx_x#1 )
|
||||
(byte) progress_idx#29 ← phi( @59/(byte) progress_idx#1 )
|
||||
(byte*) progress_cursor#28 ← phi( @59/(byte*) progress_cursor#1 )
|
||||
to:@61
|
||||
@61: scope:[] from @60
|
||||
(byte) sin_idx_y#12 ← phi( @60/(byte) sin_idx_y#1 )
|
||||
(byte) sin_idx_x#12 ← phi( @60/(byte) sin_idx_x#1 )
|
||||
(byte) progress_idx#29 ← phi( @60/(byte) progress_idx#1 )
|
||||
(byte*) progress_cursor#28 ← phi( @60/(byte*) progress_cursor#1 )
|
||||
(byte*) progress_cursor#14 ← (byte*) progress_cursor#28
|
||||
(byte) progress_idx#15 ← (byte) progress_idx#29
|
||||
(byte) sin_idx_x#6 ← (byte) sin_idx_x#12
|
||||
(byte) sin_idx_y#6 ← (byte) sin_idx_y#12
|
||||
to:@end
|
||||
@end: scope:[] from @60
|
||||
@end: scope:[] from @61
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @3
|
||||
(label) @49
|
||||
(label) @52
|
||||
(label) @54
|
||||
(label) @59
|
||||
(const string) $0 = (string) "0123456789abcdef"
|
||||
(label) @31
|
||||
(label) @4
|
||||
(label) @43
|
||||
(label) @50
|
||||
(label) @53
|
||||
(label) @55
|
||||
(label) @60
|
||||
(label) @61
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL#0
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL1#0
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL2#0
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL3#0
|
||||
(byte*) BGCOL4
|
||||
(byte*) BGCOL4#0
|
||||
(byte) BLACK
|
||||
(byte) BLACK#0
|
||||
(byte) BLUE
|
||||
(byte) BLUE#0
|
||||
(byte*) BORDERCOL
|
||||
(byte*) BORDERCOL#0
|
||||
(byte) BROWN
|
||||
(byte) BROWN#0
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHARGEN#0
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_INTERRUPT#0
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A#0
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_A_DDR#0
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B#0
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA1_PORT_B_DDR#0
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_INTERRUPT#0
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A#0
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_A_DDR#0
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B#0
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte*) CIA2_PORT_B_DDR#0
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte) CIA_INTERRUPT_CLEAR#0
|
||||
(byte*) COLS
|
||||
(byte*) COLS#0
|
||||
(byte) CYAN
|
||||
(byte) CYAN#0
|
||||
(byte*) D011
|
||||
(byte*) D011#0
|
||||
(byte*) D016
|
||||
(byte*) D016#0
|
||||
(byte*) D018
|
||||
(byte*) D018#0
|
||||
(byte) DARK_GREY
|
||||
(byte) DARK_GREY#0
|
||||
(byte) GREEN
|
||||
(byte) GREEN#0
|
||||
(byte) GREY
|
||||
(byte) GREY#0
|
||||
(void()**) HARDWARE_IRQ
|
||||
(void()**) HARDWARE_IRQ#0
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_BG#0
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte) IRQ_COLLISION_SPRITE#0
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte*) IRQ_ENABLE#0
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_LIGHTPEN#0
|
||||
(byte) IRQ_RASTER
|
||||
(byte) IRQ_RASTER#0
|
||||
(byte*) IRQ_STATUS
|
||||
(byte*) IRQ_STATUS#0
|
||||
(void()**) KERNEL_IRQ
|
||||
(void()**) KERNEL_IRQ#0
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_X#0
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte*) LIGHTPEN_Y#0
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_BLUE#0
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREEN#0
|
||||
(byte) LIGHT_GREY
|
||||
(byte) LIGHT_GREY#0
|
||||
(byte) ORANGE
|
||||
(byte) ORANGE#0
|
||||
(byte) PINK
|
||||
(byte) PINK#0
|
||||
(byte*) PROCPORT
|
||||
(byte*) PROCPORT#0
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte*) PROCPORT_DDR#0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_KERNEL_IO#0
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_ALL#0
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_CHARROM#0
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PROCPORT_RAM_IO#0
|
||||
(byte) PURPLE
|
||||
(byte) PURPLE#0
|
||||
(byte*) RASTER
|
||||
(byte*) RASTER#0
|
||||
(byte) RED
|
||||
(byte) RED#0
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SPRITES_COLS
|
||||
@ -933,12 +1111,46 @@ SYMBOL TABLE SSA
|
||||
(byte*) SPRITES_EXPAND_X#0
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_EXPAND_Y#0
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC#0
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC1#0
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_MC2#0
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_PRIORITY#0
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XMSB#0
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_XPOS#0
|
||||
(byte*) SPRITES_YPOS
|
||||
(byte*) SPRITES_YPOS#0
|
||||
(word) SPRITE_PTRS
|
||||
(word) SPRITE_PTRS#0
|
||||
(byte) VIC_BMM
|
||||
(byte) VIC_BMM#0
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL#0
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte*) VIC_CONTROL2#0
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_CSEL#0
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_DEN#0
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_ECM#0
|
||||
(byte) VIC_MCM
|
||||
(byte) VIC_MCM#0
|
||||
(byte*) VIC_MEMORY
|
||||
(byte*) VIC_MEMORY#0
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RSEL#0
|
||||
(byte) VIC_RST8
|
||||
(byte) VIC_RST8#0
|
||||
(byte) WHITE
|
||||
(byte) WHITE#0
|
||||
(byte) YELLOW
|
||||
(byte) YELLOW#0
|
||||
(void()) addMEMtoFAC((byte*) addMEMtoFAC::mem)
|
||||
(label) addMEMtoFAC::@1
|
||||
(label) addMEMtoFAC::@return
|
||||
@ -1409,6 +1621,14 @@ SYMBOL TABLE SSA
|
||||
(byte*) prepareMEM::mem#3
|
||||
(byte*) prepareMEM::mem#4
|
||||
(byte*) prepareMEM::mem#5
|
||||
(byte*) print_char_cursor
|
||||
(byte*) print_char_cursor#0
|
||||
(byte[]) print_hextab
|
||||
(byte[]) print_hextab#0
|
||||
(byte*) print_line_cursor
|
||||
(byte*) print_line_cursor#0
|
||||
(byte*) print_screen
|
||||
(byte*) print_screen#0
|
||||
(byte*) progress_cursor
|
||||
(byte*) progress_cursor#0
|
||||
(byte*) progress_cursor#1
|
||||
@ -1661,6 +1881,7 @@ Inversing boolean not (bool~) gen_chargen_sprite::$9 ← (byte) gen_chargen_spri
|
||||
Successful SSA optimization Pass2UnaryNotSimplification
|
||||
Alias (byte*) prepareMEM::mem#0 = (byte*~) setFAC::$0
|
||||
Alias (word) getFAC::return#0 = (word) getFAC::w#0 (word) getFAC::return#3 (word) getFAC::return#1
|
||||
Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0
|
||||
Alias (byte) sin_idx_x#23 = (byte) sin_idx_x#26
|
||||
Alias (byte) sin_idx_y#21 = (byte) sin_idx_y#24
|
||||
Alias (byte*) progress_cursor#0 = (byte*) progress_cursor#15
|
||||
@ -1882,20 +2103,89 @@ Simple Condition (bool~) gen_chargen_sprite::$12 if((byte) gen_chargen_sprite::x
|
||||
Simple Condition (bool~) gen_chargen_sprite::$14 if((byte) gen_chargen_sprite::y#1!=rangelast(0,7)) goto gen_chargen_sprite::@1
|
||||
Simple Condition (bool~) gen_sintab::$26 if((byte) gen_sintab::i#1<(byte) gen_sintab::length#10) goto gen_sintab::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
|
||||
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
|
||||
Constant (const byte*) PROCPORT#0 = ((byte*))1
|
||||
Constant (const byte) PROCPORT_RAM_ALL#0 = 48
|
||||
Constant (const byte) PROCPORT_RAM_IO#0 = 53
|
||||
Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49
|
||||
Constant (const byte) PROCPORT_KERNEL_IO#0 = 54
|
||||
Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55
|
||||
Constant (const byte*) CHARGEN#0 = ((byte*))53248
|
||||
Constant (const word) SPRITE_PTRS#0 = 1016
|
||||
Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248
|
||||
Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249
|
||||
Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264
|
||||
Constant (const byte*) RASTER#0 = ((byte*))53266
|
||||
Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269
|
||||
Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271
|
||||
Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275
|
||||
Constant (const byte*) SPRITES_MC#0 = ((byte*))53276
|
||||
Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277
|
||||
Constant (const byte*) BORDERCOL#0 = ((byte*))53280
|
||||
Constant (const byte*) BGCOL#0 = ((byte*))53281
|
||||
Constant (const byte*) BGCOL1#0 = ((byte*))53281
|
||||
Constant (const byte*) BGCOL2#0 = ((byte*))53282
|
||||
Constant (const byte*) BGCOL3#0 = ((byte*))53283
|
||||
Constant (const byte*) BGCOL4#0 = ((byte*))53284
|
||||
Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285
|
||||
Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286
|
||||
Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287
|
||||
Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265
|
||||
Constant (const byte*) D011#0 = ((byte*))53265
|
||||
Constant (const byte) VIC_RST8#0 = 128
|
||||
Constant (const byte) VIC_ECM#0 = 64
|
||||
Constant (const byte) VIC_BMM#0 = 32
|
||||
Constant (const byte) VIC_DEN#0 = 16
|
||||
Constant (const byte) VIC_RSEL#0 = 8
|
||||
Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270
|
||||
Constant (const byte*) D016#0 = ((byte*))53270
|
||||
Constant (const byte) VIC_MCM#0 = 16
|
||||
Constant (const byte) VIC_CSEL#0 = 8
|
||||
Constant (const byte*) D018#0 = ((byte*))53272
|
||||
Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272
|
||||
Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267
|
||||
Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268
|
||||
Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273
|
||||
Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274
|
||||
Constant (const byte) IRQ_RASTER#0 = 1
|
||||
Constant (const byte) IRQ_COLLISION_BG#0 = 2
|
||||
Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4
|
||||
Constant (const byte) IRQ_LIGHTPEN#0 = 8
|
||||
Constant (const byte*) COLS#0 = ((byte*))55296
|
||||
Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320
|
||||
Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321
|
||||
Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322
|
||||
Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323
|
||||
Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333
|
||||
Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127
|
||||
Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576
|
||||
Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577
|
||||
Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578
|
||||
Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579
|
||||
Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589
|
||||
Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788
|
||||
Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534
|
||||
Constant (const byte) BLACK#0 = 0
|
||||
Constant (const byte) WHITE#0 = 1
|
||||
Constant (const byte) RED#0 = 2
|
||||
Constant (const byte) CYAN#0 = 3
|
||||
Constant (const byte) PURPLE#0 = 4
|
||||
Constant (const byte) GREEN#0 = 5
|
||||
Constant (const byte) BLUE#0 = 6
|
||||
Constant (const byte) YELLOW#0 = 7
|
||||
Constant (const byte) ORANGE#0 = 8
|
||||
Constant (const byte) BROWN#0 = 9
|
||||
Constant (const byte) PINK#0 = 10
|
||||
Constant (const byte) DARK_GREY#0 = 11
|
||||
Constant (const byte) GREY#0 = 12
|
||||
Constant (const byte) LIGHT_GREEN#0 = 13
|
||||
Constant (const byte) LIGHT_BLUE#0 = 14
|
||||
Constant (const byte) LIGHT_GREY#0 = 15
|
||||
Constant (const byte*) memLo#0 = ((byte*))254
|
||||
Constant (const byte*) memHi#0 = ((byte*))255
|
||||
Constant (const byte*) print_line_cursor#0 = ((byte*))1024
|
||||
Constant (const byte[]) print_hextab#0 = $0
|
||||
Constant (const byte) sinlen_x#0 = 221
|
||||
Constant (const byte[221]) sintab_x#0 = { fill( 221, 0) }
|
||||
Constant (const byte) sinlen_y#0 = 197
|
||||
@ -1976,6 +2266,7 @@ Fixing inline constructor with getFAC::$0 ← *(memHi#0) w= *(memLo#0)
|
||||
Successful SSA optimization Pass2FixInlineConstructors
|
||||
Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) init::$1 ← (byte) init::i#2
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Eliminating Noop Cast (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#5
|
||||
Successful SSA optimization Pass2NopCastElimination
|
||||
Removing unused block main::@return
|
||||
@ -1994,17 +2285,19 @@ Resolved ranged next value gen_chargen_sprite::x#1 ← ++ gen_chargen_sprite::x#
|
||||
Resolved ranged comparison value if(gen_chargen_sprite::x#1!=rangelast(0,7)) goto gen_chargen_sprite::@2 to (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
Resolved ranged next value gen_chargen_sprite::y#1 ← ++ gen_chargen_sprite::y#10 to ++
|
||||
Resolved ranged comparison value if(gen_chargen_sprite::y#1!=rangelast(0,7)) goto gen_chargen_sprite::@1 to (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) @49
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) @31
|
||||
Culled Empty Block (label) @43
|
||||
Culled Empty Block (label) @50
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@1
|
||||
Culled Empty Block (label) main::@6
|
||||
Culled Empty Block (label) init::@3
|
||||
Culled Empty Block (label) init::@10
|
||||
Culled Empty Block (label) @52
|
||||
Culled Empty Block (label) @54
|
||||
Culled Empty Block (label) @53
|
||||
Culled Empty Block (label) @55
|
||||
Culled Empty Block (label) gen_sintab::@13
|
||||
Culled Empty Block (label) @60
|
||||
Culled Empty Block (label) @61
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (word) getFAC::return#0 = (word~) getFAC::$0
|
||||
Alias (byte) init::i#2 = (byte~) init::$1
|
||||
@ -2148,7 +2441,7 @@ Added new block during phi lifting gen_chargen_sprite::@13(between gen_chargen_s
|
||||
Added new block during phi lifting gen_chargen_sprite::@14(between gen_chargen_sprite::@4 and gen_chargen_sprite::@5)
|
||||
Added new block during phi lifting place_sprites::@3(between place_sprites::@1 and place_sprites::@1)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @59
|
||||
Adding NOP phi() at start of @60
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@3
|
||||
@ -2272,7 +2565,7 @@ Culled Empty Block (label) gen_chargen_sprite::@13
|
||||
Culled Empty Block (label) gen_chargen_sprite::@14
|
||||
Culled Empty Block (label) place_sprites::@3
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @59
|
||||
Adding NOP phi() at start of @60
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@3
|
||||
@ -2310,14 +2603,14 @@ Adding NOP phi() at start of gen_chargen_sprite::@6
|
||||
FINAL CONTROL FLOW GRAPH
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@59
|
||||
@59: scope:[] from @begin
|
||||
to:@60
|
||||
@60: scope:[] from @begin
|
||||
[1] phi()
|
||||
[2] call main
|
||||
to:@end
|
||||
@end: scope:[] from @59
|
||||
@end: scope:[] from @60
|
||||
[3] phi()
|
||||
main: scope:[main] from @59
|
||||
main: scope:[main] from @60
|
||||
[4] phi()
|
||||
[5] call init
|
||||
to:main::@2
|
||||
@ -2772,19 +3065,86 @@ place_sprites::@return: scope:[place_sprites] from place_sprites::@1
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) addMEMtoFAC((byte*) addMEMtoFAC::mem)
|
||||
(byte*) addMEMtoFAC::mem
|
||||
(void()) anim()
|
||||
@ -2931,6 +3291,10 @@ VARIABLE REGISTER WEIGHTS
|
||||
(byte*) prepareMEM::mem#4 4.0
|
||||
(byte*) prepareMEM::mem#5 3.9999999999999996
|
||||
(byte*~) prepareMEM::mem#8 4.0
|
||||
(byte*) print_char_cursor
|
||||
(byte[]) print_hextab
|
||||
(byte*) print_line_cursor
|
||||
(byte*) print_screen
|
||||
(byte*) progress_cursor
|
||||
(byte*) progress_cursor#10 4.0
|
||||
(byte*) progress_cursor#11 2.8333333333333335
|
||||
@ -3163,17 +3527,17 @@ INITIAL ASM
|
||||
.label sin_idx_y = 3
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @59 [phi:@begin->@59]
|
||||
b59_from_bbegin:
|
||||
jmp b59
|
||||
//SEG4 @59
|
||||
b59:
|
||||
//SEG3 [1] phi from @begin to @60 [phi:@begin->@60]
|
||||
b60_from_bbegin:
|
||||
jmp b60
|
||||
//SEG4 @60
|
||||
b60:
|
||||
//SEG5 [2] call main
|
||||
//SEG6 [4] phi from @59 to main [phi:@59->main]
|
||||
main_from_b59:
|
||||
//SEG6 [4] phi from @60 to main [phi:@60->main]
|
||||
main_from_b60:
|
||||
jsr main
|
||||
//SEG7 [3] phi from @59 to @end [phi:@59->@end]
|
||||
bend_from_b59:
|
||||
//SEG7 [3] phi from @60 to @end [phi:@60->@end]
|
||||
bend_from_b60:
|
||||
jmp bend
|
||||
//SEG8 @end
|
||||
bend:
|
||||
@ -4892,17 +5256,17 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.label sin_idx_y = 3
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @59 [phi:@begin->@59]
|
||||
b59_from_bbegin:
|
||||
jmp b59
|
||||
//SEG4 @59
|
||||
b59:
|
||||
//SEG3 [1] phi from @begin to @60 [phi:@begin->@60]
|
||||
b60_from_bbegin:
|
||||
jmp b60
|
||||
//SEG4 @60
|
||||
b60:
|
||||
//SEG5 [2] call main
|
||||
//SEG6 [4] phi from @59 to main [phi:@59->main]
|
||||
main_from_b59:
|
||||
//SEG6 [4] phi from @60 to main [phi:@60->main]
|
||||
main_from_b60:
|
||||
jsr main
|
||||
//SEG7 [3] phi from @59 to @end [phi:@59->@end]
|
||||
bend_from_b59:
|
||||
//SEG7 [3] phi from @60 to @end [phi:@60->@end]
|
||||
bend_from_b60:
|
||||
jmp bend
|
||||
//SEG8 @end
|
||||
bend:
|
||||
@ -6178,7 +6542,7 @@ place_sprites: {
|
||||
sintab_y: .fill $c5, 0
|
||||
|
||||
ASSEMBLER OPTIMIZATIONS
|
||||
Removing instruction jmp b59
|
||||
Removing instruction jmp b60
|
||||
Removing instruction jmp bend
|
||||
Removing instruction jmp b2
|
||||
Removing instruction jmp b3
|
||||
@ -6296,9 +6660,9 @@ Replacing label b2_from_b8 with b2
|
||||
Replacing label b1_from_b9 with b1
|
||||
Replacing label b1_from_b1 with b1
|
||||
Removing instruction bbegin:
|
||||
Removing instruction b59_from_bbegin:
|
||||
Removing instruction main_from_b59:
|
||||
Removing instruction bend_from_b59:
|
||||
Removing instruction b60_from_bbegin:
|
||||
Removing instruction main_from_b60:
|
||||
Removing instruction bend_from_b60:
|
||||
Removing instruction b2_from_b2:
|
||||
Removing instruction b3_from_b2:
|
||||
Removing instruction b1_from_b3:
|
||||
@ -6365,7 +6729,7 @@ Removing instruction b4_from_b5:
|
||||
Removing instruction b5_from_b4:
|
||||
Removing instruction b1_from_b1:
|
||||
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||
Removing instruction b59:
|
||||
Removing instruction b60:
|
||||
Removing instruction bend:
|
||||
Removing instruction init_from_main:
|
||||
Removing instruction b2_from_main:
|
||||
@ -6484,19 +6848,69 @@ Removing unreachable instruction jmp b4
|
||||
Succesful ASM optimization Pass5UnreachableCodeElimination
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(label) @59
|
||||
(label) @60
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(const byte*) CHARGEN#0 CHARGEN = ((byte*))(word/dword/signed dword) 53248
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(const byte*) COLS#0 COLS = ((byte*))(word/dword/signed dword) 55296
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(byte*) SPRITES_COLS
|
||||
@ -6507,12 +6921,29 @@ FINAL SYMBOL TABLE
|
||||
(const byte*) SPRITES_EXPAND_X#0 SPRITES_EXPAND_X = ((byte*))(word/dword/signed dword) 53277
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(const byte*) SPRITES_EXPAND_Y#0 SPRITES_EXPAND_Y = ((byte*))(word/dword/signed dword) 53271
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(const byte*) SPRITES_XMSB#0 SPRITES_XMSB = ((byte*))(word/dword/signed dword) 53264
|
||||
(byte*) SPRITES_XPOS
|
||||
(const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word/dword/signed dword) 53248
|
||||
(byte*) SPRITES_YPOS
|
||||
(const byte*) SPRITES_YPOS#0 SPRITES_YPOS = ((byte*))(word/dword/signed dword) 53249
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) addMEMtoFAC((byte*) addMEMtoFAC::mem)
|
||||
(label) addMEMtoFAC::@1
|
||||
(label) addMEMtoFAC::@return
|
||||
@ -6737,6 +7168,10 @@ FINAL SYMBOL TABLE
|
||||
(byte*) prepareMEM::mem#4 mem zp ZP_WORD:12 4.0
|
||||
(byte*) prepareMEM::mem#5 mem zp ZP_WORD:12 3.9999999999999996
|
||||
(byte*~) prepareMEM::mem#8 mem zp ZP_WORD:12 4.0
|
||||
(byte*) print_char_cursor
|
||||
(byte[]) print_hextab
|
||||
(byte*) print_line_cursor
|
||||
(byte*) print_screen
|
||||
(byte*) progress_cursor
|
||||
(byte*) progress_cursor#10 progress_cursor zp ZP_WORD:10 4.0
|
||||
(byte*) progress_cursor#11 progress_cursor zp ZP_WORD:10 2.8333333333333335
|
||||
@ -6852,12 +7287,12 @@ Score: 768747
|
||||
.label sin_idx_x = 2
|
||||
.label sin_idx_y = 3
|
||||
//SEG2 @begin
|
||||
//SEG3 [1] phi from @begin to @59 [phi:@begin->@59]
|
||||
//SEG4 @59
|
||||
//SEG3 [1] phi from @begin to @60 [phi:@begin->@60]
|
||||
//SEG4 @60
|
||||
//SEG5 [2] call main
|
||||
//SEG6 [4] phi from @59 to main [phi:@59->main]
|
||||
//SEG6 [4] phi from @60 to main [phi:@60->main]
|
||||
jsr main
|
||||
//SEG7 [3] phi from @59 to @end [phi:@59->@end]
|
||||
//SEG7 [3] phi from @60 to @end [phi:@60->@end]
|
||||
//SEG8 @end
|
||||
//SEG9 main
|
||||
main: {
|
||||
|
@ -1,16 +1,66 @@
|
||||
(label) @59
|
||||
(label) @60
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(const byte*) CHARGEN#0 CHARGEN = ((byte*))(word/dword/signed dword) 53248
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(const byte*) COLS#0 COLS = ((byte*))(word/dword/signed dword) 55296
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(byte*) SPRITES_COLS
|
||||
@ -21,12 +71,29 @@
|
||||
(const byte*) SPRITES_EXPAND_X#0 SPRITES_EXPAND_X = ((byte*))(word/dword/signed dword) 53277
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(const byte*) SPRITES_EXPAND_Y#0 SPRITES_EXPAND_Y = ((byte*))(word/dword/signed dword) 53271
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(const byte*) SPRITES_XMSB#0 SPRITES_XMSB = ((byte*))(word/dword/signed dword) 53264
|
||||
(byte*) SPRITES_XPOS
|
||||
(const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word/dword/signed dword) 53248
|
||||
(byte*) SPRITES_YPOS
|
||||
(const byte*) SPRITES_YPOS#0 SPRITES_YPOS = ((byte*))(word/dword/signed dword) 53249
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) addMEMtoFAC((byte*) addMEMtoFAC::mem)
|
||||
(label) addMEMtoFAC::@1
|
||||
(label) addMEMtoFAC::@return
|
||||
@ -251,6 +318,10 @@
|
||||
(byte*) prepareMEM::mem#4 mem zp ZP_WORD:12 4.0
|
||||
(byte*) prepareMEM::mem#5 mem zp ZP_WORD:12 3.9999999999999996
|
||||
(byte*~) prepareMEM::mem#8 mem zp ZP_WORD:12 4.0
|
||||
(byte*) print_char_cursor
|
||||
(byte[]) print_hextab
|
||||
(byte*) print_line_cursor
|
||||
(byte*) print_screen
|
||||
(byte*) progress_cursor
|
||||
(byte*) progress_cursor#10 progress_cursor zp ZP_WORD:10 4.0
|
||||
(byte*) progress_cursor#11 progress_cursor zp ZP_WORD:10 2.8333333333333335
|
||||
|
167
src/test/ref/examples/tetris/test-sprites.asm
Normal file
167
src/test/ref/examples/tetris/test-sprites.asm
Normal file
@ -0,0 +1,167 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.const SPRITE_PTRS = $3f8
|
||||
.label SPRITES_XPOS = $d000
|
||||
.label SPRITES_YPOS = $d001
|
||||
.label RASTER = $d012
|
||||
.label SPRITES_ENABLE = $d015
|
||||
.label SPRITES_EXPAND_Y = $d017
|
||||
.label SPRITES_MC = $d01c
|
||||
.label SPRITES_EXPAND_X = $d01d
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label SPRITES_COLS = $d027
|
||||
.label VIC_CONTROL = $d011
|
||||
.label D018 = $d018
|
||||
.label IRQ_STATUS = $d019
|
||||
.label IRQ_ENABLE = $d01a
|
||||
.const IRQ_RASTER = 1
|
||||
.label CIA1_INTERRUPT = $dc0d
|
||||
.const CIA_INTERRUPT_CLEAR = $7f
|
||||
.label CIA2_PORT_A = $dd00
|
||||
.label CIA2_PORT_A_DDR = $dd02
|
||||
.label KERNEL_IRQ = $314
|
||||
.const BLACK = 0
|
||||
.const WHITE = 1
|
||||
.const BLUE = 6
|
||||
.label PLAYFIELD_SPRITES = $2000
|
||||
.label PLAYFIELD_CHARSET = $1000
|
||||
.label PLAYFIELD_SCREEN = $400
|
||||
.const IRQ_RASTER_FIRST = $30
|
||||
.label irq_raster_next = 2
|
||||
.label irq_cnt = 2
|
||||
.label irq_sprite_ypos = 2
|
||||
lda #IRQ_RASTER_FIRST
|
||||
sta irq_raster_next
|
||||
lda #0
|
||||
sta irq_cnt
|
||||
lda #$32
|
||||
sta irq_sprite_ypos
|
||||
jsr main
|
||||
main: {
|
||||
jsr init_sprites
|
||||
jsr init_irq
|
||||
rts
|
||||
}
|
||||
init_irq: {
|
||||
sei
|
||||
lda #CIA_INTERRUPT_CLEAR
|
||||
sta CIA1_INTERRUPT
|
||||
lda VIC_CONTROL
|
||||
and #$7f
|
||||
sta VIC_CONTROL
|
||||
lda #IRQ_RASTER_FIRST
|
||||
sta RASTER
|
||||
lda #IRQ_RASTER
|
||||
sta IRQ_ENABLE
|
||||
lda #<irq
|
||||
sta KERNEL_IRQ
|
||||
lda #>irq
|
||||
sta KERNEL_IRQ+1
|
||||
cli
|
||||
rts
|
||||
}
|
||||
init_sprites: {
|
||||
.const ypos = $32
|
||||
.label sprites_ptr = PLAYFIELD_SCREEN+SPRITE_PTRS
|
||||
.const toSpritePtr1_return = PLAYFIELD_SPRITES>>6
|
||||
.const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_SCREEN)>>6
|
||||
.const toD0181_return = (>(PLAYFIELD_SCREEN&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f
|
||||
.label xpos = 2
|
||||
.label ptr = 3
|
||||
lda #3
|
||||
sta CIA2_PORT_A_DDR
|
||||
lda #vicSelectGfxBank1_toDd001_return
|
||||
sta CIA2_PORT_A
|
||||
lda #toD0181_return
|
||||
sta D018
|
||||
lda #$f
|
||||
sta SPRITES_ENABLE
|
||||
lda #0
|
||||
sta SPRITES_MC
|
||||
sta SPRITES_EXPAND_Y
|
||||
sta SPRITES_EXPAND_X
|
||||
lda #toSpritePtr1_return
|
||||
sta ptr
|
||||
lda #$18+$e*8
|
||||
sta xpos
|
||||
ldy #0
|
||||
b1:
|
||||
tya
|
||||
asl
|
||||
tax
|
||||
lda xpos
|
||||
sta SPRITES_XPOS,x
|
||||
lda #ypos
|
||||
sta SPRITES_YPOS,x
|
||||
lda #BLACK
|
||||
sta SPRITES_COLS,y
|
||||
lda ptr
|
||||
sta sprites_ptr,y
|
||||
lda #$18
|
||||
clc
|
||||
adc xpos
|
||||
sta xpos
|
||||
inc ptr
|
||||
iny
|
||||
cpy #4
|
||||
bne b1
|
||||
rts
|
||||
}
|
||||
irq: {
|
||||
lda #WHITE
|
||||
sta BGCOL
|
||||
sta BORDERCOL
|
||||
lda irq_sprite_ypos
|
||||
sta SPRITES_YPOS
|
||||
lda irq_sprite_ypos
|
||||
sta SPRITES_YPOS+2
|
||||
lda irq_sprite_ypos
|
||||
sta SPRITES_YPOS+4
|
||||
lda irq_sprite_ypos
|
||||
sta SPRITES_YPOS+6
|
||||
inc irq_cnt
|
||||
lda irq_cnt
|
||||
cmp #$a
|
||||
beq b1
|
||||
lda #$15
|
||||
clc
|
||||
adc irq_raster_next
|
||||
sta irq_raster_next
|
||||
lda #$15
|
||||
clc
|
||||
adc irq_sprite_ypos
|
||||
sta irq_sprite_ypos
|
||||
b2:
|
||||
lda irq_raster_next
|
||||
sta RASTER
|
||||
lda #IRQ_RASTER
|
||||
sta IRQ_STATUS
|
||||
lda #BLACK
|
||||
sta BORDERCOL
|
||||
lda #BLUE
|
||||
sta BGCOL
|
||||
jmp $ea81
|
||||
b1:
|
||||
lda #0
|
||||
sta irq_cnt
|
||||
lda #IRQ_RASTER_FIRST
|
||||
sta irq_raster_next
|
||||
lda #$32
|
||||
sta irq_sprite_ypos
|
||||
jmp b2
|
||||
}
|
||||
.pc = PLAYFIELD_SPRITES "Inline"
|
||||
.var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000))
|
||||
.for(var sy=0;sy<10;sy++) {
|
||||
.for(var sx=0;sx<3;sx++) {
|
||||
.for (var y=0;y<21; y++) {
|
||||
.for (var c=0; c<3; c++) {
|
||||
.byte sprites.getSinglecolorByte(sx*3+c,sy*21+y)
|
||||
}
|
||||
}
|
||||
.byte 0
|
||||
}
|
||||
}
|
||||
|
119
src/test/ref/examples/tetris/test-sprites.cfg
Normal file
119
src/test/ref/examples/tetris/test-sprites.cfg
Normal file
@ -0,0 +1,119 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@6
|
||||
@6: scope:[] from @begin
|
||||
[1] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0
|
||||
[2] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
[3] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50
|
||||
to:@8
|
||||
@8: scope:[] from @6
|
||||
kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000))
|
||||
.for(var sy=0;sy<10;sy++) {
|
||||
.for(var sx=0;sx<3;sx++) {
|
||||
.for (var y=0;y<21; y++) {
|
||||
.for (var c=0; c<3; c++) {
|
||||
.byte sprites.getSinglecolorByte(sx*3+c,sy*21+y)
|
||||
}
|
||||
}
|
||||
.byte 0
|
||||
}
|
||||
}
|
||||
}}
|
||||
[5] call main
|
||||
to:@end
|
||||
@end: scope:[] from @8
|
||||
[6] phi()
|
||||
main: scope:[main] from @8
|
||||
[7] phi()
|
||||
[8] call init_sprites
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main
|
||||
[9] phi()
|
||||
[10] call init_irq
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@1
|
||||
[11] return
|
||||
to:@return
|
||||
init_irq: scope:[init_irq] from main::@1
|
||||
asm { sei }
|
||||
[13] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0
|
||||
[14] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127
|
||||
[15] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0
|
||||
[16] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0
|
||||
[17] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq()
|
||||
asm { cli }
|
||||
to:init_irq::@return
|
||||
init_irq::@return: scope:[init_irq] from init_irq
|
||||
[19] return
|
||||
to:@return
|
||||
init_sprites: scope:[init_sprites] from main
|
||||
[20] phi()
|
||||
to:init_sprites::vicSelectGfxBank1
|
||||
init_sprites::vicSelectGfxBank1: scope:[init_sprites] from init_sprites
|
||||
[21] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
to:init_sprites::vicSelectGfxBank1_toDd001
|
||||
init_sprites::vicSelectGfxBank1_toDd001: scope:[init_sprites] from init_sprites::vicSelectGfxBank1
|
||||
[22] phi()
|
||||
to:init_sprites::vicSelectGfxBank1_@1
|
||||
init_sprites::vicSelectGfxBank1_@1: scope:[init_sprites] from init_sprites::vicSelectGfxBank1_toDd001
|
||||
[23] *((const byte*) CIA2_PORT_A#0) ← (const byte) init_sprites::vicSelectGfxBank1_toDd001_return#0
|
||||
to:init_sprites::toD0181
|
||||
init_sprites::toD0181: scope:[init_sprites] from init_sprites::vicSelectGfxBank1_@1
|
||||
[24] phi()
|
||||
to:init_sprites::@4
|
||||
init_sprites::@4: scope:[init_sprites] from init_sprites::toD0181
|
||||
[25] *((const byte*) D018#0) ← (const byte) init_sprites::toD0181_return#0
|
||||
[26] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15
|
||||
[27] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
[28] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0)
|
||||
[29] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0)
|
||||
to:init_sprites::toSpritePtr1
|
||||
init_sprites::toSpritePtr1: scope:[init_sprites] from init_sprites::@4
|
||||
[30] phi()
|
||||
to:init_sprites::@1
|
||||
init_sprites::@1: scope:[init_sprites] from init_sprites::@1 init_sprites::toSpritePtr1
|
||||
[31] (byte) init_sprites::ptr#2 ← phi( init_sprites::@1/(byte) init_sprites::ptr#1 init_sprites::toSpritePtr1/(const byte) init_sprites::toSpritePtr1_return#0 )
|
||||
[31] (byte) init_sprites::xpos#2 ← phi( init_sprites::@1/(byte) init_sprites::xpos#1 init_sprites::toSpritePtr1/(byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 14*(byte/signed byte/word/signed word/dword/signed dword) 8 )
|
||||
[31] (byte) init_sprites::s#2 ← phi( init_sprites::@1/(byte) init_sprites::s#1 init_sprites::toSpritePtr1/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[32] (byte) init_sprites::s2#0 ← (byte) init_sprites::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[33] *((const byte*) SPRITES_XPOS#0 + (byte) init_sprites::s2#0) ← (byte) init_sprites::xpos#2
|
||||
[34] *((const byte*) SPRITES_YPOS#0 + (byte) init_sprites::s2#0) ← (const byte) init_sprites::ypos#0
|
||||
[35] *((const byte*) SPRITES_COLS#0 + (byte) init_sprites::s#2) ← (const byte) BLACK#0
|
||||
[36] *((const byte*) init_sprites::sprites_ptr#0 + (byte) init_sprites::s#2) ← (byte) init_sprites::ptr#2
|
||||
[37] (byte) init_sprites::xpos#1 ← (byte) init_sprites::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24
|
||||
[38] (byte) init_sprites::ptr#1 ← ++ (byte) init_sprites::ptr#2
|
||||
[39] (byte) init_sprites::s#1 ← ++ (byte) init_sprites::s#2
|
||||
[40] if((byte) init_sprites::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto init_sprites::@1
|
||||
to:init_sprites::@return
|
||||
init_sprites::@return: scope:[init_sprites] from init_sprites::@1
|
||||
[41] return
|
||||
to:@return
|
||||
irq: scope:[irq] from
|
||||
[42] *((const byte*) BGCOL#0) ← (const byte) WHITE#0
|
||||
[43] *((const byte*) BORDERCOL#0) ← *((const byte*) BGCOL#0)
|
||||
[44] *((const byte*) SPRITES_YPOS#0) ← (byte) irq_sprite_ypos#0
|
||||
[45] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq_sprite_ypos#0
|
||||
[46] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) irq_sprite_ypos#0
|
||||
[47] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) irq_sprite_ypos#0
|
||||
[48] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0
|
||||
[49] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@1
|
||||
to:irq::@3
|
||||
irq::@3: scope:[irq] from irq
|
||||
[50] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21
|
||||
[51] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21
|
||||
to:irq::@2
|
||||
irq::@2: scope:[irq] from irq::@1 irq::@3
|
||||
[52] (byte) irq_raster_next#3 ← phi( irq::@1/(byte) irq_raster_next#1 irq::@3/(byte) irq_raster_next#2 )
|
||||
[53] *((const byte*) RASTER#0) ← (byte) irq_raster_next#3
|
||||
[54] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0
|
||||
[55] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0
|
||||
[56] *((const byte*) BGCOL#0) ← (const byte) BLUE#0
|
||||
to:irq::@return
|
||||
irq::@return: scope:[irq] from irq::@2
|
||||
[57] return
|
||||
to:@return
|
||||
irq::@1: scope:[irq] from irq
|
||||
[58] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
[59] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0
|
||||
[60] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50
|
||||
to:irq::@2
|
2532
src/test/ref/examples/tetris/test-sprites.log
Normal file
2532
src/test/ref/examples/tetris/test-sprites.log
Normal file
File diff suppressed because it is too large
Load Diff
195
src/test/ref/examples/tetris/test-sprites.sym
Normal file
195
src/test/ref/examples/tetris/test-sprites.sym
Normal file
@ -0,0 +1,195 @@
|
||||
(label) @6
|
||||
(label) @8
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) BLUE
|
||||
(const byte) BLUE#0 BLUE = (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(const byte*) CIA1_INTERRUPT#0 CIA1_INTERRUPT = ((byte*))(word/dword/signed dword) 56333
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) 56576
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) 56578
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(const byte) CIA_INTERRUPT_CLEAR#0 CIA_INTERRUPT_CLEAR = (byte/signed byte/word/signed word/dword/signed dword) 127
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) 53272
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(const byte*) IRQ_ENABLE#0 IRQ_ENABLE = ((byte*))(word/dword/signed dword) 53274
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(const byte) IRQ_RASTER#0 IRQ_RASTER = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) IRQ_RASTER_FIRST
|
||||
(const byte) IRQ_RASTER_FIRST#0 IRQ_RASTER_FIRST = (byte/signed byte/word/signed word/dword/signed dword) 48
|
||||
(byte*) IRQ_STATUS
|
||||
(const byte*) IRQ_STATUS#0 IRQ_STATUS = ((byte*))(word/dword/signed dword) 53273
|
||||
(void()**) KERNEL_IRQ
|
||||
(const void()**) KERNEL_IRQ#0 KERNEL_IRQ = ((void()**))(word/signed word/dword/signed dword) 788
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PLAYFIELD_CHARSET
|
||||
(const byte*) PLAYFIELD_CHARSET#0 PLAYFIELD_CHARSET = ((byte*))(word/signed word/dword/signed dword) 4096
|
||||
(byte*) PLAYFIELD_SCREEN
|
||||
(const byte*) PLAYFIELD_SCREEN#0 PLAYFIELD_SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(byte*) PLAYFIELD_SPRITES
|
||||
(const byte*) PLAYFIELD_SPRITES#0 PLAYFIELD_SPRITES = ((byte*))(word/signed word/dword/signed dword) 8192
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(const byte*) SPRITES_COLS#0 SPRITES_COLS = ((byte*))(word/dword/signed dword) 53287
|
||||
(byte*) SPRITES_ENABLE
|
||||
(const byte*) SPRITES_ENABLE#0 SPRITES_ENABLE = ((byte*))(word/dword/signed dword) 53269
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(const byte*) SPRITES_EXPAND_X#0 SPRITES_EXPAND_X = ((byte*))(word/dword/signed dword) 53277
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(const byte*) SPRITES_EXPAND_Y#0 SPRITES_EXPAND_Y = ((byte*))(word/dword/signed dword) 53271
|
||||
(byte*) SPRITES_MC
|
||||
(const byte*) SPRITES_MC#0 SPRITES_MC = ((byte*))(word/dword/signed dword) 53276
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word/dword/signed dword) 53248
|
||||
(byte*) SPRITES_YPOS
|
||||
(const byte*) SPRITES_YPOS#0 SPRITES_YPOS = ((byte*))(word/dword/signed dword) 53249
|
||||
(word) SPRITE_PTRS
|
||||
(const word) SPRITE_PTRS#0 SPRITE_PTRS = (word/signed word/dword/signed dword) 1016
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(const byte*) VIC_CONTROL#0 VIC_CONTROL = ((byte*))(word/dword/signed dword) 53265
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) YELLOW
|
||||
(void()) init_irq()
|
||||
(label) init_irq::@return
|
||||
(void()) init_sprites()
|
||||
(label) init_sprites::@1
|
||||
(label) init_sprites::@4
|
||||
(label) init_sprites::@return
|
||||
(byte) init_sprites::ptr
|
||||
(byte) init_sprites::ptr#1 ptr zp ZP_BYTE:3 7.333333333333333
|
||||
(byte) init_sprites::ptr#2 ptr zp ZP_BYTE:3 4.714285714285714
|
||||
(byte) init_sprites::s
|
||||
(byte) init_sprites::s#1 reg byte y 16.5
|
||||
(byte) init_sprites::s#2 reg byte y 6.875
|
||||
(byte) init_sprites::s2
|
||||
(byte) init_sprites::s2#0 reg byte x 16.5
|
||||
(byte*) init_sprites::sprites_ptr
|
||||
(const byte*) init_sprites::sprites_ptr#0 sprites_ptr = (const byte*) PLAYFIELD_SCREEN#0+(const word) SPRITE_PTRS#0
|
||||
(label) init_sprites::toD0181
|
||||
(word~) init_sprites::toD0181_$0
|
||||
(word~) init_sprites::toD0181_$1
|
||||
(word~) init_sprites::toD0181_$2
|
||||
(byte~) init_sprites::toD0181_$3
|
||||
(word~) init_sprites::toD0181_$4
|
||||
(byte~) init_sprites::toD0181_$5
|
||||
(byte~) init_sprites::toD0181_$6
|
||||
(byte~) init_sprites::toD0181_$7
|
||||
(byte~) init_sprites::toD0181_$8
|
||||
(byte*) init_sprites::toD0181_gfx
|
||||
(byte) init_sprites::toD0181_return
|
||||
(const byte) init_sprites::toD0181_return#0 toD0181_return = >((word))(const byte*) PLAYFIELD_SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2|>((word))(const byte*) PLAYFIELD_CHARSET#0>>(byte/signed byte/word/signed word/dword/signed dword) 2&(byte/signed byte/word/signed word/dword/signed dword) 15
|
||||
(byte*) init_sprites::toD0181_screen
|
||||
(label) init_sprites::toSpritePtr1
|
||||
(word~) init_sprites::toSpritePtr1_$0
|
||||
(word~) init_sprites::toSpritePtr1_$1
|
||||
(byte~) init_sprites::toSpritePtr1_$2
|
||||
(byte) init_sprites::toSpritePtr1_return
|
||||
(const byte) init_sprites::toSpritePtr1_return#0 toSpritePtr1_return = ((byte))((word))(const byte*) PLAYFIELD_SPRITES#0>>(byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte*) init_sprites::toSpritePtr1_sprite
|
||||
(label) init_sprites::vicSelectGfxBank1
|
||||
(byte~) init_sprites::vicSelectGfxBank1_$0
|
||||
(label) init_sprites::vicSelectGfxBank1_@1
|
||||
(byte*) init_sprites::vicSelectGfxBank1_gfx
|
||||
(label) init_sprites::vicSelectGfxBank1_toDd001
|
||||
(word~) init_sprites::vicSelectGfxBank1_toDd001_$0
|
||||
(byte~) init_sprites::vicSelectGfxBank1_toDd001_$1
|
||||
(byte~) init_sprites::vicSelectGfxBank1_toDd001_$2
|
||||
(byte/word/dword~) init_sprites::vicSelectGfxBank1_toDd001_$3
|
||||
(byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx
|
||||
(byte) init_sprites::vicSelectGfxBank1_toDd001_return
|
||||
(const byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte/signed byte/word/signed word/dword/signed dword) 3^>((word))(const byte*) PLAYFIELD_SCREEN#0>>(byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte) init_sprites::xpos
|
||||
(byte) init_sprites::xpos#1 xpos zp ZP_BYTE:2 5.5
|
||||
(byte) init_sprites::xpos#2 xpos zp ZP_BYTE:2 5.5
|
||||
(byte) init_sprites::ypos
|
||||
(const byte) init_sprites::ypos#0 ypos = (byte/signed byte/word/signed word/dword/signed dword) 50
|
||||
interrupt(KERNEL_MIN)(void()) irq()
|
||||
(label) irq::@1
|
||||
(label) irq::@2
|
||||
(label) irq::@3
|
||||
(label) irq::@return
|
||||
(byte) irq_cnt
|
||||
(byte) irq_cnt#0 irq_cnt zp ZP_BYTE:2 0.6666666666666666
|
||||
(byte) irq_cnt#1 irq_cnt zp ZP_BYTE:2 4.0
|
||||
(byte) irq_cnt#2 irq_cnt zp ZP_BYTE:2 20.0
|
||||
(byte) irq_raster_next
|
||||
(byte) irq_raster_next#0 irq_raster_next zp ZP_BYTE:2 0.5
|
||||
(byte) irq_raster_next#1 irq_raster_next zp ZP_BYTE:2 2.0
|
||||
(byte) irq_raster_next#2 irq_raster_next zp ZP_BYTE:2 2.0
|
||||
(byte) irq_raster_next#3 irq_raster_next zp ZP_BYTE:2 6.0
|
||||
(byte) irq_sprite_ypos
|
||||
(byte) irq_sprite_ypos#0 irq_sprite_ypos zp ZP_BYTE:2 1.3333333333333335
|
||||
(byte) irq_sprite_ypos#1 irq_sprite_ypos zp ZP_BYTE:2 20.0
|
||||
(byte) irq_sprite_ypos#2 irq_sprite_ypos zp ZP_BYTE:2 20.0
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
|
||||
reg byte y [ init_sprites::s#2 init_sprites::s#1 ]
|
||||
zp ZP_BYTE:2 [ init_sprites::xpos#2 init_sprites::xpos#1 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 irq_raster_next#0 irq_cnt#0 irq_cnt#1 irq_sprite_ypos#0 irq_sprite_ypos#2 irq_cnt#2 irq_sprite_ypos#1 ]
|
||||
zp ZP_BYTE:3 [ init_sprites::ptr#2 init_sprites::ptr#1 ]
|
||||
reg byte x [ init_sprites::s2#0 ]
|
@ -3,6 +3,7 @@
|
||||
.pc = $80d "Program"
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
.label COLS = $d800
|
||||
.label CIA1_PORT_A = $dc00
|
||||
.label CIA1_PORT_B = $dc01
|
||||
@ -20,6 +21,10 @@
|
||||
.const KEY_CTRL = $3a
|
||||
.const KEY_SPACE = $3c
|
||||
.const KEY_COMMODORE = $3d
|
||||
.const KEY_MODIFIER_LSHIFT = 1
|
||||
.const KEY_MODIFIER_RSHIFT = 2
|
||||
.const KEY_MODIFIER_CTRL = 4
|
||||
.const KEY_MODIFIER_COMMODORE = 8
|
||||
.label SID_VOICE3_FREQ = $d40e
|
||||
.label SID_VOICE3_CONTROL = $d412
|
||||
.const SID_CONTROL_NOISE = $80
|
||||
@ -641,7 +646,7 @@ keyboard_event_scan: {
|
||||
sta row_scan
|
||||
ldy row
|
||||
cmp keyboard_scan_values,y
|
||||
bne b2
|
||||
bne b6
|
||||
lda #8
|
||||
clc
|
||||
adc keycode
|
||||
@ -655,20 +660,40 @@ keyboard_event_scan: {
|
||||
sta keyboard_event_pressed.keycode
|
||||
jsr keyboard_event_pressed
|
||||
cmp #0
|
||||
beq b2
|
||||
ldx #0|KEY_MODIFIER_LSHIFT
|
||||
jmp b9
|
||||
b2:
|
||||
ldx #0
|
||||
b9:
|
||||
lda #KEY_RSHIFT
|
||||
sta keyboard_event_pressed.keycode
|
||||
jsr keyboard_event_pressed
|
||||
cmp #0
|
||||
beq b10
|
||||
txa
|
||||
ora #KEY_MODIFIER_RSHIFT
|
||||
tax
|
||||
b10:
|
||||
lda #KEY_CTRL
|
||||
sta keyboard_event_pressed.keycode
|
||||
jsr keyboard_event_pressed
|
||||
cmp #0
|
||||
beq b11
|
||||
txa
|
||||
ora #KEY_MODIFIER_CTRL
|
||||
tax
|
||||
b11:
|
||||
lda #KEY_COMMODORE
|
||||
sta keyboard_event_pressed.keycode
|
||||
jsr keyboard_event_pressed
|
||||
cmp #0
|
||||
beq breturn
|
||||
txa
|
||||
ora #KEY_MODIFIER_COMMODORE
|
||||
breturn:
|
||||
rts
|
||||
b2:
|
||||
b6:
|
||||
ldx #0
|
||||
b4:
|
||||
lda row_scan
|
||||
@ -755,7 +780,9 @@ render_init: {
|
||||
.label li = 5
|
||||
.label line = 5
|
||||
.label l = 2
|
||||
ldx #$a0
|
||||
lda #BLACK
|
||||
sta BGCOL
|
||||
ldx #$d0
|
||||
lda #<SCREEN
|
||||
sta fill.addr
|
||||
lda #>SCREEN
|
||||
|
@ -1,20 +1,20 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@22
|
||||
@22: scope:[] from @begin
|
||||
to:@23
|
||||
@23: scope:[] from @begin
|
||||
kickasm(location (const byte*) CHARSET#0) {{ .var charset = LoadPicture("charset.png", List().add($000000, $ffffff, $523fa0, $77c1c9))
|
||||
.for (var c=0; c<16; c++)
|
||||
.for (var y=0;y<8; y++)
|
||||
.byte charset.getMulticolorByte(c,y)
|
||||
}}
|
||||
to:@25
|
||||
@25: scope:[] from @22
|
||||
to:@26
|
||||
@26: scope:[] from @23
|
||||
[2] phi()
|
||||
[3] call main
|
||||
to:@end
|
||||
@end: scope:[] from @25
|
||||
@end: scope:[] from @26
|
||||
[4] phi()
|
||||
main: scope:[main] from @25
|
||||
main: scope:[main] from @26
|
||||
[5] phi()
|
||||
[6] call sid_rnd_init
|
||||
to:main::@21
|
||||
@ -565,7 +565,7 @@ keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan:
|
||||
[264] phi()
|
||||
to:keyboard_event_scan::@9
|
||||
keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@21 keyboard_event_scan::@26
|
||||
[265] phi()
|
||||
[265] (byte) keyboard_modifiers#11 ← phi( keyboard_event_scan::@21/(byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 keyboard_event_scan::@26/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[266] call keyboard_event_pressed
|
||||
[267] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11
|
||||
to:keyboard_event_scan::@27
|
||||
@ -574,10 +574,10 @@ keyboard_event_scan::@27: scope:[keyboard_event_scan] from keyboard_event_scan:
|
||||
[269] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10
|
||||
to:keyboard_event_scan::@22
|
||||
keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@27
|
||||
[270] phi()
|
||||
[270] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0
|
||||
to:keyboard_event_scan::@10
|
||||
keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@27
|
||||
[271] phi()
|
||||
[271] (byte) keyboard_modifiers#12 ← phi( keyboard_event_scan::@22/(byte) keyboard_modifiers#3 keyboard_event_scan::@27/(byte) keyboard_modifiers#11 )
|
||||
[272] call keyboard_event_pressed
|
||||
[273] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11
|
||||
to:keyboard_event_scan::@28
|
||||
@ -586,10 +586,10 @@ keyboard_event_scan::@28: scope:[keyboard_event_scan] from keyboard_event_scan:
|
||||
[275] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11
|
||||
to:keyboard_event_scan::@23
|
||||
keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@28
|
||||
[276] phi()
|
||||
[276] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0
|
||||
to:keyboard_event_scan::@11
|
||||
keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@23 keyboard_event_scan::@28
|
||||
[277] phi()
|
||||
[277] (byte) keyboard_modifiers#13 ← phi( keyboard_event_scan::@23/(byte) keyboard_modifiers#4 keyboard_event_scan::@28/(byte) keyboard_modifiers#12 )
|
||||
[278] call keyboard_event_pressed
|
||||
[279] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11
|
||||
to:keyboard_event_scan::@29
|
||||
@ -598,7 +598,7 @@ keyboard_event_scan::@29: scope:[keyboard_event_scan] from keyboard_event_scan:
|
||||
[281] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return
|
||||
to:keyboard_event_scan::@24
|
||||
keyboard_event_scan::@24: scope:[keyboard_event_scan] from keyboard_event_scan::@29
|
||||
[282] phi()
|
||||
[282] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0
|
||||
to:keyboard_event_scan::@return
|
||||
keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@24 keyboard_event_scan::@29
|
||||
[283] return
|
||||
@ -665,7 +665,7 @@ tables_init::@return: scope:[tables_init] from tables_init::@2
|
||||
[314] return
|
||||
to:@return
|
||||
render_init: scope:[render_init] from main::@21
|
||||
[315] phi()
|
||||
[315] *((const byte*) BGCOL#0) ← (const byte) BLACK#0
|
||||
[316] call fill
|
||||
to:render_init::@7
|
||||
render_init::@7: scope:[render_init] from render_init
|
||||
@ -701,7 +701,7 @@ render_init::@return: scope:[render_init] from render_init::@5
|
||||
[334] return
|
||||
to:@return
|
||||
fill: scope:[fill] from render_init render_init::@7
|
||||
[335] (byte) fill::val#3 ← phi( render_init/(byte/word/signed word/dword/signed dword) 160 render_init::@7/(const byte) BLACK#0 )
|
||||
[335] (byte) fill::val#3 ← phi( render_init/(byte/word/signed word/dword/signed dword) 208 render_init::@7/(const byte) BLACK#0 )
|
||||
[335] (byte*) fill::addr#0 ← phi( render_init/(const byte*) SCREEN#0 render_init::@7/(const byte*) COLS#0 )
|
||||
[336] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000
|
||||
to:fill::@1
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,17 +1,35 @@
|
||||
(label) @22
|
||||
(label) @25
|
||||
(label) @23
|
||||
(label) @26
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHARSET
|
||||
(const byte*) CHARSET#0 CHARSET = ((byte*))(word/signed word/dword/signed dword) 8192
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(const byte*) CIA1_PORT_A#0 CIA1_PORT_A = ((byte*))(word/dword/signed dword) 56320
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(const byte*) CIA1_PORT_B#0 CIA1_PORT_B = ((byte*))(word/dword/signed dword) 56321
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte) COLLISION_BOTTOM
|
||||
(const byte) COLLISION_BOTTOM#0 COLLISION_BOTTOM = (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) COLLISION_LEFT
|
||||
@ -24,34 +42,112 @@
|
||||
(const byte) COLLISION_RIGHT#0 COLLISION_RIGHT = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) COLS
|
||||
(const byte*) COLS#0 COLS = ((byte*))(word/dword/signed dword) 55296
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(const byte) DARK_GREY#0 DARK_GREY = (byte/signed byte/word/signed word/dword/signed dword) 11
|
||||
(byte) GREEN
|
||||
(const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte) KEY_0
|
||||
(byte) KEY_1
|
||||
(byte) KEY_2
|
||||
(byte) KEY_3
|
||||
(byte) KEY_4
|
||||
(byte) KEY_5
|
||||
(byte) KEY_6
|
||||
(byte) KEY_7
|
||||
(byte) KEY_8
|
||||
(byte) KEY_9
|
||||
(byte) KEY_A
|
||||
(byte) KEY_ARROW_LEFT
|
||||
(byte) KEY_ARROW_UP
|
||||
(byte) KEY_ASTERISK
|
||||
(byte) KEY_AT
|
||||
(byte) KEY_B
|
||||
(byte) KEY_C
|
||||
(byte) KEY_COLON
|
||||
(byte) KEY_COMMA
|
||||
(const byte) KEY_COMMA#0 KEY_COMMA = (byte/signed byte/word/signed word/dword/signed dword) 47
|
||||
(byte) KEY_COMMODORE
|
||||
(const byte) KEY_COMMODORE#0 KEY_COMMODORE = (byte/signed byte/word/signed word/dword/signed dword) 61
|
||||
(byte) KEY_CRSR_DOWN
|
||||
(byte) KEY_CRSR_RIGHT
|
||||
(byte) KEY_CTRL
|
||||
(const byte) KEY_CTRL#0 KEY_CTRL = (byte/signed byte/word/signed word/dword/signed dword) 58
|
||||
(byte) KEY_D
|
||||
(byte) KEY_DEL
|
||||
(byte) KEY_DOT
|
||||
(const byte) KEY_DOT#0 KEY_DOT = (byte/signed byte/word/signed word/dword/signed dword) 44
|
||||
(byte) KEY_E
|
||||
(byte) KEY_EQUALS
|
||||
(byte) KEY_F
|
||||
(byte) KEY_F1
|
||||
(byte) KEY_F3
|
||||
(byte) KEY_F5
|
||||
(byte) KEY_F7
|
||||
(byte) KEY_G
|
||||
(byte) KEY_H
|
||||
(byte) KEY_HOME
|
||||
(byte) KEY_I
|
||||
(byte) KEY_J
|
||||
(byte) KEY_K
|
||||
(byte) KEY_L
|
||||
(byte) KEY_LSHIFT
|
||||
(const byte) KEY_LSHIFT#0 KEY_LSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 15
|
||||
(byte) KEY_M
|
||||
(byte) KEY_MINUS
|
||||
(byte) KEY_MODIFIER_COMMODORE
|
||||
(const byte) KEY_MODIFIER_COMMODORE#0 KEY_MODIFIER_COMMODORE = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) KEY_MODIFIER_CTRL
|
||||
(const byte) KEY_MODIFIER_CTRL#0 KEY_MODIFIER_CTRL = (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) KEY_MODIFIER_LSHIFT
|
||||
(const byte) KEY_MODIFIER_LSHIFT#0 KEY_MODIFIER_LSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) KEY_MODIFIER_RSHIFT
|
||||
(const byte) KEY_MODIFIER_RSHIFT#0 KEY_MODIFIER_RSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) KEY_MODIFIER_SHIFT
|
||||
(byte) KEY_N
|
||||
(byte) KEY_O
|
||||
(byte) KEY_P
|
||||
(byte) KEY_PLUS
|
||||
(byte) KEY_POUND
|
||||
(byte) KEY_Q
|
||||
(byte) KEY_R
|
||||
(byte) KEY_RETURN
|
||||
(byte) KEY_RSHIFT
|
||||
(const byte) KEY_RSHIFT#0 KEY_RSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 52
|
||||
(byte) KEY_RUNSTOP
|
||||
(byte) KEY_S
|
||||
(byte) KEY_SEMICOLON
|
||||
(byte) KEY_SLASH
|
||||
(byte) KEY_SPACE
|
||||
(const byte) KEY_SPACE#0 KEY_SPACE = (byte/signed byte/word/signed word/dword/signed dword) 60
|
||||
(byte) KEY_T
|
||||
(byte) KEY_U
|
||||
(byte) KEY_V
|
||||
(byte) KEY_W
|
||||
(byte) KEY_X
|
||||
(const byte) KEY_X#0 KEY_X = (byte/signed byte/word/signed word/dword/signed dword) 23
|
||||
(byte) KEY_Y
|
||||
(byte) KEY_Z
|
||||
(const byte) KEY_Z#0 KEY_Z = (byte/signed byte/word/signed word/dword/signed dword) 12
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(const byte) LIGHT_GREY#0 LIGHT_GREY = (byte/signed byte/word/signed word/dword/signed dword) 15
|
||||
(byte) ORANGE
|
||||
(word[]) PIECES
|
||||
(const word[]) PIECES#0 PIECES = { ((word))(const byte[4*4*4]) PIECE_T#0, ((word))(const byte[4*4*4]) PIECE_S#0, ((word))(const byte[4*4*4]) PIECE_Z#0, ((word))(const byte[4*4*4]) PIECE_J#0, ((word))(const byte[4*4*4]) PIECE_O#0, ((word))(const byte[4*4*4]) PIECE_I#0, ((word))(const byte[4*4*4]) PIECE_L#0 }
|
||||
(byte[]) PIECES_COLORS
|
||||
@ -70,24 +166,67 @@
|
||||
(const byte[4*4*4]) PIECE_T#0 PIECE_T = { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 }
|
||||
(byte[4*4*4]) PIECE_Z
|
||||
(const byte[4*4*4]) PIECE_Z#0 PIECE_Z = { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 }
|
||||
(byte) PINK
|
||||
(byte) PLAYFIELD_COLS
|
||||
(const byte) PLAYFIELD_COLS#0 PLAYFIELD_COLS = (byte/signed byte/word/signed word/dword/signed dword) 10
|
||||
(byte) PLAYFIELD_LINES
|
||||
(const byte) PLAYFIELD_LINES#0 PLAYFIELD_LINES = (byte/signed byte/word/signed word/dword/signed dword) 22
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(byte) SID_CONTROL_GATE
|
||||
(byte) SID_CONTROL_NOISE
|
||||
(const byte) SID_CONTROL_NOISE#0 SID_CONTROL_NOISE = (byte/word/signed word/dword/signed dword) 128
|
||||
(byte) SID_CONTROL_PULSE
|
||||
(byte) SID_CONTROL_RING
|
||||
(byte) SID_CONTROL_SAWTOOTH
|
||||
(byte) SID_CONTROL_SYNC
|
||||
(byte) SID_CONTROL_TEST
|
||||
(byte) SID_CONTROL_TRIANGLE
|
||||
(byte*) SID_VOICE3_CONTROL
|
||||
(const byte*) SID_VOICE3_CONTROL#0 SID_VOICE3_CONTROL = ((byte*))(word/dword/signed dword) 54290
|
||||
(word*) SID_VOICE3_FREQ
|
||||
(const word*) SID_VOICE3_FREQ#0 SID_VOICE3_FREQ = ((word*))(word/dword/signed dword) 54286
|
||||
(byte*) SID_VOICE3_FREQ_HIGH
|
||||
(byte*) SID_VOICE3_FREQ_LOW
|
||||
(byte*) SID_VOICE3_OSC
|
||||
(const byte*) SID_VOICE3_OSC#0 SID_VOICE3_OSC = ((byte*))(word/dword/signed dword) 54299
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) YELLOW
|
||||
(byte()) collision((byte) collision::xpos , (byte) collision::ypos , (byte) collision::orientation)
|
||||
(byte~) collision::$7 reg byte a 2002.0
|
||||
(label) collision::@1
|
||||
@ -221,6 +360,7 @@
|
||||
(byte*) fill::start
|
||||
(byte) fill::val
|
||||
(byte) fill::val#3 reg byte x 1.8333333333333333
|
||||
(byte[]) keyboard_char_keycodes
|
||||
(byte()) keyboard_event_get()
|
||||
(label) keyboard_event_get::@3
|
||||
(label) keyboard_event_get::@return
|
||||
@ -316,6 +456,12 @@
|
||||
(byte[8]) keyboard_matrix_row_bitmask
|
||||
(const byte[8]) keyboard_matrix_row_bitmask#0 keyboard_matrix_row_bitmask = { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 }
|
||||
(byte) keyboard_modifiers
|
||||
(byte) keyboard_modifiers#11 reg byte x 0.8
|
||||
(byte) keyboard_modifiers#12 reg byte x 1.6
|
||||
(byte) keyboard_modifiers#13 reg byte x 1.2000000000000002
|
||||
(byte) keyboard_modifiers#3 reg byte x 4.0
|
||||
(byte) keyboard_modifiers#4 reg byte x 4.0
|
||||
(byte) keyboard_modifiers#5 reg byte a 20.0
|
||||
(byte[8]) keyboard_scan_values
|
||||
(const byte[8]) keyboard_scan_values#0 keyboard_scan_values = { fill( 8, 0) }
|
||||
(void()) lock_current()
|
||||
@ -623,6 +769,7 @@ reg byte y [ remove_lines::r#2 remove_lines::r#3 remove_lines::r#1 ]
|
||||
reg byte x [ remove_lines::w#6 remove_lines::w#4 remove_lines::w#12 remove_lines::w#11 remove_lines::w#1 remove_lines::w#2 remove_lines::w#3 ]
|
||||
reg byte x [ lock_current::c#2 lock_current::c#1 ]
|
||||
reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ]
|
||||
reg byte x [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ]
|
||||
reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ]
|
||||
zp ZP_BYTE:19 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ]
|
||||
reg byte x [ tables_init::j#2 tables_init::j#1 ]
|
||||
@ -675,6 +822,7 @@ reg byte a [ keyboard_event_pressed::return#2 ]
|
||||
reg byte a [ keyboard_event_scan::$22 ]
|
||||
reg byte a [ keyboard_event_pressed::return#10 ]
|
||||
reg byte a [ keyboard_event_scan::$26 ]
|
||||
reg byte a [ keyboard_modifiers#5 ]
|
||||
reg byte a [ keyboard_event_scan::$3 ]
|
||||
reg byte a [ keyboard_event_scan::$4 ]
|
||||
reg byte a [ keyboard_event_scan::event_type#0 ]
|
||||
|
@ -2,6 +2,7 @@
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
|
||||
(byte*) CHARSET#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192
|
||||
(byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248
|
||||
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272
|
||||
@ -221,6 +222,8 @@ SYMBOL TABLE SSA
|
||||
(byte*) CHARGEN#7
|
||||
(byte*) CHARGEN#8
|
||||
(byte*) CHARGEN#9
|
||||
(byte*) CHARSET
|
||||
(byte*) CHARSET#0
|
||||
(byte*) CHARSET4
|
||||
(byte*) CHARSET4#0
|
||||
(byte*) CHARSET4#1
|
||||
@ -476,6 +479,7 @@ Simple Condition (bool~) main::$39 if((byte*) main::chargen#1<(byte*~) main::$38
|
||||
Simple Condition (bool~) main::$40 if((byte) main::i#1!=rangelast(0,255)) goto main::@6
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
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
|
||||
@ -489,6 +493,7 @@ Constant (const byte*) main::charset4#0 = CHARSET4#0
|
||||
Constant (const byte) main::bits_gen#2 = main::bits_gen#0+1
|
||||
Constant (const byte*) main::$38 = CHARGEN#0+2048
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Resolved ranged next value main::i#1 ← ++ main::i#2 to ++
|
||||
Resolved ranged comparison value if(main::i#1!=rangelast(0,255)) goto main::@6 to (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inlining constant with var siblings (const byte) main::bits_gen#0
|
||||
@ -636,6 +641,7 @@ main::@return: scope:[main] from main::@12
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHARSET
|
||||
(byte*) CHARSET4
|
||||
(byte*) D018
|
||||
(byte*) PROCPORT
|
||||
@ -1685,6 +1691,7 @@ FINAL SYMBOL TABLE
|
||||
(label) @end
|
||||
(byte*) CHARGEN
|
||||
(const byte*) CHARGEN#0 CHARGEN = ((byte*))(word/dword/signed dword) 53248
|
||||
(byte*) CHARSET
|
||||
(byte*) CHARSET4
|
||||
(const byte*) CHARSET4#0 CHARSET4 = ((byte*))(word/signed word/dword/signed dword) 10240
|
||||
(byte*) D018
|
||||
|
@ -3,6 +3,7 @@
|
||||
(label) @end
|
||||
(byte*) CHARGEN
|
||||
(const byte*) CHARGEN#0 CHARGEN = ((byte*))(word/dword/signed dword) 53248
|
||||
(byte*) CHARSET
|
||||
(byte*) CHARSET4
|
||||
(const byte*) CHARSET4#0 CHARSET4 = ((byte*))(word/signed word/dword/signed dword) 10240
|
||||
(byte*) D018
|
||||
|
@ -4,10 +4,10 @@
|
||||
jsr main
|
||||
main: {
|
||||
.label w = 2
|
||||
ldx #0
|
||||
txa
|
||||
lda #<0
|
||||
sta w
|
||||
sta w+1
|
||||
tax
|
||||
b1:
|
||||
txa
|
||||
clc
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user