mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-02-21 22:29:07 +00:00
Implemented new recursion check that performs much better on programs with many different branches.
This commit is contained in:
parent
347a5d0331
commit
dcd4e070ba
@ -54,10 +54,6 @@ public class CallGraph {
|
||||
return null;
|
||||
}
|
||||
|
||||
public ScopeRef getFirstCallBlock() {
|
||||
return ScopeRef.ROOT;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get sub call blocks called from a specific call block.
|
||||
*
|
||||
@ -89,6 +85,47 @@ public class CallGraph {
|
||||
return callingBlocks;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the closure of all procedures called from a specific scope.
|
||||
* This includes the recursive closure of calls (ie. sub-calls and their sub-calls).
|
||||
* @param scopeRef The scope (procedure/root) to examine
|
||||
* @return All scopes called in the closure of calls
|
||||
*/
|
||||
public Collection<ScopeRef> getRecursiveCalls(ScopeRef scopeRef) {
|
||||
ArrayList<ScopeRef> closure = new ArrayList<>();
|
||||
CallBlock callBlock = getCallBlock(scopeRef);
|
||||
if(callBlock!=null) {
|
||||
for(CallBlock.Call call : callBlock.getCalls()) {
|
||||
addRecursiveCalls(call.getProcedure(), closure);
|
||||
}
|
||||
}
|
||||
return closure;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the closure of all procedures called from a specific scope.
|
||||
* This includes the recursive closure of calls (ie. sub-calls and their sub-calls).
|
||||
* @param scopeRef The scope (procedure/root) to examine
|
||||
* @param found The scopes already found
|
||||
*
|
||||
* @return All scopes called in the closure of calls
|
||||
*/
|
||||
private void addRecursiveCalls(ScopeRef scopeRef, Collection<ScopeRef> found) {
|
||||
if(found.contains(scopeRef)) {
|
||||
// Recursion detected - stop here
|
||||
return;
|
||||
}
|
||||
found.add(scopeRef);
|
||||
CallBlock callBlock = getCallBlock(scopeRef);
|
||||
if(callBlock!=null) {
|
||||
for(CallBlock.Call call : callBlock.getCalls()) {
|
||||
addRecursiveCalls(call.getProcedure(), found);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder out = new StringBuilder();
|
||||
@ -126,6 +163,9 @@ public class CallGraph {
|
||||
*/
|
||||
private ScopeRef scopeLabel;
|
||||
|
||||
/**
|
||||
* All direct calls from the scope.
|
||||
*/
|
||||
private List<Call> calls;
|
||||
|
||||
public CallBlock(ScopeRef scopeLabel) {
|
||||
|
@ -1,17 +1,12 @@
|
||||
package dk.camelot64.kickc.passes;
|
||||
|
||||
import dk.camelot64.kickc.model.CallGraph;
|
||||
import dk.camelot64.kickc.model.CompileError;
|
||||
import dk.camelot64.kickc.model.ControlFlowBlock;
|
||||
import dk.camelot64.kickc.model.ControlFlowGraph;
|
||||
import dk.camelot64.kickc.model.Program;
|
||||
import dk.camelot64.kickc.model.statements.Statement;
|
||||
import dk.camelot64.kickc.model.statements.StatementCall;
|
||||
import dk.camelot64.kickc.model.values.ProcedureRef;
|
||||
import dk.camelot64.kickc.model.values.SymbolRef;
|
||||
import dk.camelot64.kickc.model.symbols.Procedure;
|
||||
import dk.camelot64.kickc.model.values.ScopeRef;
|
||||
|
||||
import java.util.Deque;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.Collection;
|
||||
|
||||
/** Asserts that the program has no recursive calls */
|
||||
public class Pass1AssertNoRecursion extends Pass1Base {
|
||||
@ -22,53 +17,16 @@ public class Pass1AssertNoRecursion extends Pass1Base {
|
||||
|
||||
@Override
|
||||
public boolean step() {
|
||||
ControlFlowBlock firstBlock = getGraph().getFirstBlock();
|
||||
Deque<ControlFlowBlock> path = new LinkedList<>();
|
||||
assertNoRecursion(firstBlock, path);
|
||||
CallGraph callGraph = getProgram().getCallGraph();
|
||||
Collection<Procedure> procedures = getScope().getAllProcedures(true);
|
||||
for(Procedure procedure : procedures) {
|
||||
Collection<ScopeRef> recursiveCalls = callGraph.getRecursiveCalls(procedure.getRef());
|
||||
if(recursiveCalls.contains(procedure.getRef())) {
|
||||
throw new CompileError("ERROR! Recursion not allowed! Occurs in " + procedure.getRef());
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Asserts that no methods perform recursive calls
|
||||
* @param block The block to check
|
||||
* @param path The call-path taken to the block
|
||||
*/
|
||||
private void assertNoRecursion(ControlFlowBlock block, Deque<ControlFlowBlock> path) {
|
||||
// Detect recursion
|
||||
if(path.contains(block)) {
|
||||
StringBuffer msg = new StringBuffer();
|
||||
Iterator<ControlFlowBlock> pathIt = path.descendingIterator();
|
||||
while(pathIt.hasNext()) {
|
||||
ControlFlowBlock pathBlock = pathIt.next();
|
||||
msg.append(pathBlock.getLabel()).append(" > ");
|
||||
}
|
||||
msg.append(block.getLabel());
|
||||
throw new CompileError("ERROR! Recursion not allowed! "+msg);
|
||||
}
|
||||
path.push(block);
|
||||
// Follow all calls
|
||||
for(Statement statement : block.getStatements()) {
|
||||
if(statement instanceof StatementCall) {
|
||||
ProcedureRef procedureRef = ((StatementCall) statement).getProcedure();
|
||||
ControlFlowBlock procedureBlock = getGraph().getBlock(procedureRef.getLabelRef());
|
||||
assertNoRecursion(procedureBlock, path);
|
||||
}
|
||||
}
|
||||
// Follow successors
|
||||
if(block.getConditionalSuccessor()!=null && !block.getConditionalSuccessor().isProcExit()) {
|
||||
ControlFlowBlock conditionalSuccessor = getGraph().getConditionalSuccessor(block);
|
||||
if(!path.contains(conditionalSuccessor)) {
|
||||
assertNoRecursion(conditionalSuccessor, path);
|
||||
}
|
||||
}
|
||||
if(block.getDefaultSuccessor()!=null && !block.getDefaultSuccessor().isProcExit()) {
|
||||
ControlFlowBlock defaultSuccessor = getGraph().getDefaultSuccessor(block);
|
||||
if(!path.contains(defaultSuccessor)) {
|
||||
assertNoRecursion(defaultSuccessor, path);
|
||||
}
|
||||
}
|
||||
path.pop();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -34,7 +34,7 @@ public class Pass3LoopDepthAnalysis extends Pass2Base {
|
||||
LabelRef label = entryPointBlock.getLabel();
|
||||
ScopeRef scope;
|
||||
if(label.getFullName().equals(LabelRef.BEGIN_BLOCK_NAME)) {
|
||||
scope = callGraph.getFirstCallBlock();
|
||||
scope = ScopeRef.ROOT;
|
||||
} else {
|
||||
scope = entryPointBlock.getScope();
|
||||
}
|
||||
|
@ -44,6 +44,11 @@ public class TestPrograms {
|
||||
AsmFragmentTemplateUsages.logUsages(log, false, false, false, false, false, false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNoRecursionHeavy() throws IOException, URISyntaxException {
|
||||
compileAndCompare("no-recursion-heavy");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testScrollUp() throws IOException, URISyntaxException {
|
||||
compileAndCompare("test-scroll-up");
|
||||
|
178
src/test/kc/no-recursion-heavy.kc
Normal file
178
src/test/kc/no-recursion-heavy.kc
Normal file
@ -0,0 +1,178 @@
|
||||
|
||||
byte ba = 0;
|
||||
byte bb = 0;
|
||||
byte bc = 0;
|
||||
byte bd = 0;
|
||||
byte be = 0;
|
||||
|
||||
void main() {
|
||||
while(true) {
|
||||
f0();
|
||||
ba++;
|
||||
}
|
||||
}
|
||||
|
||||
void f0() {
|
||||
if(ba==0) {
|
||||
bb++;
|
||||
fa();
|
||||
}
|
||||
if(ba==1) {
|
||||
bb++;
|
||||
fa();
|
||||
}
|
||||
if(ba==2) {
|
||||
bb++;
|
||||
fa();
|
||||
}
|
||||
if(ba==3) {
|
||||
bb++;
|
||||
fa();
|
||||
}
|
||||
if(ba==4) {
|
||||
bb++;
|
||||
fa();
|
||||
}
|
||||
if(ba==5) {
|
||||
bb++;
|
||||
fa();
|
||||
}
|
||||
if(ba==6) {
|
||||
bb++;
|
||||
fa();
|
||||
}
|
||||
if(ba==7) {
|
||||
bb++;
|
||||
fa();
|
||||
}
|
||||
if(ba==8) {
|
||||
bb++;
|
||||
fa();
|
||||
}
|
||||
if(ba==9) {
|
||||
bb = 0;
|
||||
fa();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void fa() {
|
||||
if(bb==0) {
|
||||
bc++;
|
||||
fb();
|
||||
}
|
||||
if(bb==1) {
|
||||
bc++;
|
||||
fb();
|
||||
}
|
||||
if(bb==2) {
|
||||
bc++;
|
||||
fb();
|
||||
}
|
||||
if(bb==3) {
|
||||
bc++;
|
||||
fb();
|
||||
}
|
||||
if(bb==4) {
|
||||
bc++;
|
||||
fb();
|
||||
}
|
||||
if(bb==5) {
|
||||
bc++;
|
||||
fb();
|
||||
}
|
||||
if(bb==6) {
|
||||
bc++;
|
||||
fb();
|
||||
}
|
||||
if(bb==7) {
|
||||
bc++;
|
||||
fb();
|
||||
}
|
||||
if(bb==8) {
|
||||
bc++;
|
||||
fb();
|
||||
}
|
||||
if(bb==9) {
|
||||
bc = 0;
|
||||
fb();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void fb() {
|
||||
if(bc==0) {
|
||||
bd++;
|
||||
fc();
|
||||
}
|
||||
if(bc==1) {
|
||||
bd++;
|
||||
fc();
|
||||
}
|
||||
if(bc==2) {
|
||||
bd++;
|
||||
fc();
|
||||
}
|
||||
if(bc==3) {
|
||||
bd++;
|
||||
fc();
|
||||
}
|
||||
if(bc==4) {
|
||||
bd++;
|
||||
fc();
|
||||
}
|
||||
if(bc==5) {
|
||||
bd++;
|
||||
fc();
|
||||
}
|
||||
if(bc==6) {
|
||||
bd++;
|
||||
fc();
|
||||
}
|
||||
if(bc==7) {
|
||||
bd++;
|
||||
fc();
|
||||
}
|
||||
if(bc==8) {
|
||||
bd++;
|
||||
fc();
|
||||
}
|
||||
if(bc==9) {
|
||||
bd = 0;
|
||||
fc();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void fc() {
|
||||
if(bd==0) {
|
||||
be++;
|
||||
}
|
||||
if(bd==1) {
|
||||
be++;
|
||||
}
|
||||
if(bd==2) {
|
||||
be++;
|
||||
}
|
||||
if(bd==3) {
|
||||
be++;
|
||||
}
|
||||
if(bd==4) {
|
||||
be++;
|
||||
}
|
||||
if(bd==5) {
|
||||
be++;
|
||||
}
|
||||
if(bd==6) {
|
||||
be++;
|
||||
}
|
||||
if(bd==7) {
|
||||
be++;
|
||||
}
|
||||
if(bd==8) {
|
||||
be++;
|
||||
}
|
||||
if(bd==9) {
|
||||
be = 0;
|
||||
}
|
||||
}
|
304
src/test/ref/no-recursion-heavy.asm
Normal file
304
src/test/ref/no-recursion-heavy.asm
Normal file
@ -0,0 +1,304 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label ba = 2
|
||||
.label be = 6
|
||||
.label bb = 3
|
||||
.label bb_27 = 4
|
||||
.label bc = 5
|
||||
.label bb_101 = 4
|
||||
.label bb_102 = 4
|
||||
.label bb_103 = 4
|
||||
.label bb_104 = 4
|
||||
.label bb_105 = 4
|
||||
.label bb_106 = 4
|
||||
.label bb_107 = 4
|
||||
.label bb_108 = 4
|
||||
.label bb_109 = 4
|
||||
main: {
|
||||
lda #0
|
||||
sta ba
|
||||
sta be
|
||||
tay
|
||||
tax
|
||||
sta bb
|
||||
b2:
|
||||
jsr f0
|
||||
inc ba
|
||||
jmp b2
|
||||
}
|
||||
f0: {
|
||||
lda ba
|
||||
cmp #0
|
||||
bne b1
|
||||
inc bb
|
||||
lda bb
|
||||
sta bb_101
|
||||
jsr fa
|
||||
b1:
|
||||
lda ba
|
||||
cmp #1
|
||||
bne b2
|
||||
inc bb
|
||||
lda bb
|
||||
sta bb_102
|
||||
jsr fa
|
||||
b2:
|
||||
lda ba
|
||||
cmp #2
|
||||
bne b3
|
||||
inc bb
|
||||
lda bb
|
||||
sta bb_103
|
||||
jsr fa
|
||||
b3:
|
||||
lda ba
|
||||
cmp #3
|
||||
bne b4
|
||||
inc bb
|
||||
lda bb
|
||||
sta bb_104
|
||||
jsr fa
|
||||
b4:
|
||||
lda ba
|
||||
cmp #4
|
||||
bne b5
|
||||
inc bb
|
||||
lda bb
|
||||
sta bb_105
|
||||
jsr fa
|
||||
b5:
|
||||
lda ba
|
||||
cmp #5
|
||||
bne b6
|
||||
inc bb
|
||||
lda bb
|
||||
sta bb_106
|
||||
jsr fa
|
||||
b6:
|
||||
lda ba
|
||||
cmp #6
|
||||
bne b7
|
||||
inc bb
|
||||
lda bb
|
||||
sta bb_107
|
||||
jsr fa
|
||||
b7:
|
||||
lda ba
|
||||
cmp #7
|
||||
bne b8
|
||||
inc bb
|
||||
lda bb
|
||||
sta bb_108
|
||||
jsr fa
|
||||
b8:
|
||||
lda ba
|
||||
cmp #8
|
||||
bne b9
|
||||
inc bb
|
||||
lda bb
|
||||
sta bb_109
|
||||
jsr fa
|
||||
b9:
|
||||
lda ba
|
||||
cmp #9
|
||||
bne breturn
|
||||
lda #0
|
||||
sta bb_27
|
||||
jsr fa
|
||||
lda #0
|
||||
sta bb
|
||||
breturn:
|
||||
rts
|
||||
}
|
||||
fa: {
|
||||
lda bb_27
|
||||
cmp #0
|
||||
bne b1
|
||||
inx
|
||||
stx bc
|
||||
jsr fb
|
||||
b1:
|
||||
lda bb_27
|
||||
cmp #1
|
||||
bne b2
|
||||
inx
|
||||
stx bc
|
||||
jsr fb
|
||||
b2:
|
||||
lda bb_27
|
||||
cmp #2
|
||||
bne b3
|
||||
inx
|
||||
stx bc
|
||||
jsr fb
|
||||
b3:
|
||||
lda bb_27
|
||||
cmp #3
|
||||
bne b4
|
||||
inx
|
||||
stx bc
|
||||
jsr fb
|
||||
b4:
|
||||
lda bb_27
|
||||
cmp #4
|
||||
bne b5
|
||||
inx
|
||||
stx bc
|
||||
jsr fb
|
||||
b5:
|
||||
lda bb_27
|
||||
cmp #5
|
||||
bne b6
|
||||
inx
|
||||
stx bc
|
||||
jsr fb
|
||||
b6:
|
||||
lda bb_27
|
||||
cmp #6
|
||||
bne b7
|
||||
inx
|
||||
stx bc
|
||||
jsr fb
|
||||
b7:
|
||||
lda bb_27
|
||||
cmp #7
|
||||
bne b8
|
||||
inx
|
||||
stx bc
|
||||
jsr fb
|
||||
b8:
|
||||
lda bb_27
|
||||
cmp #8
|
||||
bne b9
|
||||
inx
|
||||
stx bc
|
||||
jsr fb
|
||||
b9:
|
||||
lda bb_27
|
||||
cmp #9
|
||||
bne breturn
|
||||
lda #0
|
||||
sta bc
|
||||
jsr fb
|
||||
ldx #0
|
||||
breturn:
|
||||
rts
|
||||
}
|
||||
fb: {
|
||||
lda bc
|
||||
cmp #0
|
||||
bne b1
|
||||
iny
|
||||
tya
|
||||
jsr fc
|
||||
b1:
|
||||
lda bc
|
||||
cmp #1
|
||||
bne b2
|
||||
iny
|
||||
tya
|
||||
jsr fc
|
||||
b2:
|
||||
lda bc
|
||||
cmp #2
|
||||
bne b3
|
||||
iny
|
||||
tya
|
||||
jsr fc
|
||||
b3:
|
||||
lda bc
|
||||
cmp #3
|
||||
bne b4
|
||||
iny
|
||||
tya
|
||||
jsr fc
|
||||
b4:
|
||||
lda bc
|
||||
cmp #4
|
||||
bne b5
|
||||
iny
|
||||
tya
|
||||
jsr fc
|
||||
b5:
|
||||
lda bc
|
||||
cmp #5
|
||||
bne b6
|
||||
iny
|
||||
tya
|
||||
jsr fc
|
||||
b6:
|
||||
lda bc
|
||||
cmp #6
|
||||
bne b7
|
||||
iny
|
||||
tya
|
||||
jsr fc
|
||||
b7:
|
||||
lda bc
|
||||
cmp #7
|
||||
bne b8
|
||||
iny
|
||||
tya
|
||||
jsr fc
|
||||
b8:
|
||||
lda bc
|
||||
cmp #8
|
||||
bne b9
|
||||
iny
|
||||
tya
|
||||
jsr fc
|
||||
b9:
|
||||
lda bc
|
||||
cmp #9
|
||||
bne breturn
|
||||
lda #0
|
||||
jsr fc
|
||||
ldy #0
|
||||
breturn:
|
||||
rts
|
||||
}
|
||||
fc: {
|
||||
cmp #0
|
||||
bne b1
|
||||
inc be
|
||||
b1:
|
||||
cmp #1
|
||||
bne b2
|
||||
inc be
|
||||
b2:
|
||||
cmp #2
|
||||
bne b3
|
||||
inc be
|
||||
b3:
|
||||
cmp #3
|
||||
bne b4
|
||||
inc be
|
||||
b4:
|
||||
cmp #4
|
||||
bne b5
|
||||
inc be
|
||||
b5:
|
||||
cmp #5
|
||||
bne b6
|
||||
inc be
|
||||
b6:
|
||||
cmp #6
|
||||
bne b7
|
||||
inc be
|
||||
b7:
|
||||
cmp #7
|
||||
bne b8
|
||||
inc be
|
||||
b8:
|
||||
cmp #8
|
||||
bne b9
|
||||
inc be
|
||||
b9:
|
||||
cmp #9
|
||||
bne breturn
|
||||
lda #0
|
||||
sta be
|
||||
breturn:
|
||||
rts
|
||||
}
|
444
src/test/ref/no-recursion-heavy.cfg
Normal file
444
src/test/ref/no-recursion-heavy.cfg
Normal file
@ -0,0 +1,444 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@5
|
||||
@5: scope:[] from @begin
|
||||
[1] phi()
|
||||
[2] call main
|
||||
to:@end
|
||||
@end: scope:[] from @5
|
||||
[3] phi()
|
||||
main: scope:[main] from @5
|
||||
[4] phi()
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@7
|
||||
[5] (byte) ba#17 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@7/(byte) ba#1 )
|
||||
[5] (byte) be#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@7/(byte) be#13 )
|
||||
[5] (byte) bd#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@7/(byte) bd#13 )
|
||||
[5] (byte) bc#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@7/(byte) bc#13 )
|
||||
[5] (byte) bb#16 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@7/(byte) bb#13 )
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1
|
||||
[6] phi()
|
||||
[7] call f0
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main::@2
|
||||
[8] (byte) ba#1 ← ++ (byte) ba#17
|
||||
to:main::@1
|
||||
f0: scope:[f0] from main::@2
|
||||
[9] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto f0::@1
|
||||
to:f0::@11
|
||||
f0::@11: scope:[f0] from f0
|
||||
[10] (byte) bb#3 ← ++ (byte) bb#16
|
||||
[11] (byte~) bb#101 ← (byte) bb#3
|
||||
[12] call fa
|
||||
to:f0::@1
|
||||
f0::@1: scope:[f0] from f0 f0::@11
|
||||
[13] (byte) be#142 ← phi( f0/(byte) be#2 f0::@11/(byte) be#24 )
|
||||
[13] (byte) bd#129 ← phi( f0/(byte) bd#2 f0::@11/(byte) bd#24 )
|
||||
[13] (byte) bc#63 ← phi( f0/(byte) bc#2 f0::@11/(byte) bc#24 )
|
||||
[13] (byte) bb#18 ← phi( f0/(byte) bb#16 f0::@11/(byte) bb#3 )
|
||||
[14] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto f0::@2
|
||||
to:f0::@12
|
||||
f0::@12: scope:[f0] from f0::@1
|
||||
[15] (byte) bb#4 ← ++ (byte) bb#18
|
||||
[16] (byte~) bb#102 ← (byte) bb#4
|
||||
[17] call fa
|
||||
to:f0::@2
|
||||
f0::@2: scope:[f0] from f0::@1 f0::@12
|
||||
[18] (byte) be#143 ← phi( f0::@1/(byte) be#142 f0::@12/(byte) be#24 )
|
||||
[18] (byte) bd#130 ← phi( f0::@1/(byte) bd#129 f0::@12/(byte) bd#24 )
|
||||
[18] (byte) bc#64 ← phi( f0::@1/(byte) bc#63 f0::@12/(byte) bc#24 )
|
||||
[18] (byte) bb#19 ← phi( f0::@1/(byte) bb#18 f0::@12/(byte) bb#4 )
|
||||
[19] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 2) goto f0::@3
|
||||
to:f0::@13
|
||||
f0::@13: scope:[f0] from f0::@2
|
||||
[20] (byte) bb#5 ← ++ (byte) bb#19
|
||||
[21] (byte~) bb#103 ← (byte) bb#5
|
||||
[22] call fa
|
||||
to:f0::@3
|
||||
f0::@3: scope:[f0] from f0::@13 f0::@2
|
||||
[23] (byte) be#144 ← phi( f0::@2/(byte) be#143 f0::@13/(byte) be#24 )
|
||||
[23] (byte) bd#131 ← phi( f0::@2/(byte) bd#130 f0::@13/(byte) bd#24 )
|
||||
[23] (byte) bc#65 ← phi( f0::@2/(byte) bc#64 f0::@13/(byte) bc#24 )
|
||||
[23] (byte) bb#20 ← phi( f0::@2/(byte) bb#19 f0::@13/(byte) bb#5 )
|
||||
[24] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto f0::@4
|
||||
to:f0::@14
|
||||
f0::@14: scope:[f0] from f0::@3
|
||||
[25] (byte) bb#6 ← ++ (byte) bb#20
|
||||
[26] (byte~) bb#104 ← (byte) bb#6
|
||||
[27] call fa
|
||||
to:f0::@4
|
||||
f0::@4: scope:[f0] from f0::@14 f0::@3
|
||||
[28] (byte) be#100 ← phi( f0::@14/(byte) be#24 f0::@3/(byte) be#144 )
|
||||
[28] (byte) bd#132 ← phi( f0::@14/(byte) bd#24 f0::@3/(byte) bd#131 )
|
||||
[28] (byte) bc#66 ← phi( f0::@14/(byte) bc#24 f0::@3/(byte) bc#65 )
|
||||
[28] (byte) bb#21 ← phi( f0::@14/(byte) bb#6 f0::@3/(byte) bb#20 )
|
||||
[29] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto f0::@5
|
||||
to:f0::@15
|
||||
f0::@15: scope:[f0] from f0::@4
|
||||
[30] (byte) bb#66 ← ++ (byte) bb#21
|
||||
[31] (byte~) bb#105 ← (byte) bb#66
|
||||
[32] call fa
|
||||
to:f0::@5
|
||||
f0::@5: scope:[f0] from f0::@15 f0::@4
|
||||
[33] (byte) be#101 ← phi( f0::@15/(byte) be#24 f0::@4/(byte) be#100 )
|
||||
[33] (byte) bd#133 ← phi( f0::@15/(byte) bd#24 f0::@4/(byte) bd#132 )
|
||||
[33] (byte) bc#100 ← phi( f0::@15/(byte) bc#24 f0::@4/(byte) bc#66 )
|
||||
[33] (byte) bb#22 ← phi( f0::@15/(byte) bb#66 f0::@4/(byte) bb#21 )
|
||||
[34] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto f0::@6
|
||||
to:f0::@16
|
||||
f0::@16: scope:[f0] from f0::@5
|
||||
[35] (byte) bb#67 ← ++ (byte) bb#22
|
||||
[36] (byte~) bb#106 ← (byte) bb#67
|
||||
[37] call fa
|
||||
to:f0::@6
|
||||
f0::@6: scope:[f0] from f0::@16 f0::@5
|
||||
[38] (byte) be#102 ← phi( f0::@16/(byte) be#24 f0::@5/(byte) be#101 )
|
||||
[38] (byte) bd#134 ← phi( f0::@16/(byte) bd#24 f0::@5/(byte) bd#133 )
|
||||
[38] (byte) bc#101 ← phi( f0::@16/(byte) bc#24 f0::@5/(byte) bc#100 )
|
||||
[38] (byte) bb#23 ← phi( f0::@16/(byte) bb#67 f0::@5/(byte) bb#22 )
|
||||
[39] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto f0::@7
|
||||
to:f0::@17
|
||||
f0::@17: scope:[f0] from f0::@6
|
||||
[40] (byte) bb#68 ← ++ (byte) bb#23
|
||||
[41] (byte~) bb#107 ← (byte) bb#68
|
||||
[42] call fa
|
||||
to:f0::@7
|
||||
f0::@7: scope:[f0] from f0::@17 f0::@6
|
||||
[43] (byte) be#103 ← phi( f0::@17/(byte) be#24 f0::@6/(byte) be#102 )
|
||||
[43] (byte) bd#135 ← phi( f0::@17/(byte) bd#24 f0::@6/(byte) bd#134 )
|
||||
[43] (byte) bc#102 ← phi( f0::@17/(byte) bc#24 f0::@6/(byte) bc#101 )
|
||||
[43] (byte) bb#24 ← phi( f0::@17/(byte) bb#68 f0::@6/(byte) bb#23 )
|
||||
[44] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto f0::@8
|
||||
to:f0::@18
|
||||
f0::@18: scope:[f0] from f0::@7
|
||||
[45] (byte) bb#10 ← ++ (byte) bb#24
|
||||
[46] (byte~) bb#108 ← (byte) bb#10
|
||||
[47] call fa
|
||||
to:f0::@8
|
||||
f0::@8: scope:[f0] from f0::@18 f0::@7
|
||||
[48] (byte) be#104 ← phi( f0::@18/(byte) be#24 f0::@7/(byte) be#103 )
|
||||
[48] (byte) bd#136 ← phi( f0::@18/(byte) bd#24 f0::@7/(byte) bd#135 )
|
||||
[48] (byte) bc#103 ← phi( f0::@18/(byte) bc#24 f0::@7/(byte) bc#102 )
|
||||
[48] (byte) bb#25 ← phi( f0::@18/(byte) bb#10 f0::@7/(byte) bb#24 )
|
||||
[49] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto f0::@9
|
||||
to:f0::@19
|
||||
f0::@19: scope:[f0] from f0::@8
|
||||
[50] (byte) bb#11 ← ++ (byte) bb#25
|
||||
[51] (byte~) bb#109 ← (byte) bb#11
|
||||
[52] call fa
|
||||
to:f0::@9
|
||||
f0::@9: scope:[f0] from f0::@19 f0::@8
|
||||
[53] (byte) be#105 ← phi( f0::@19/(byte) be#24 f0::@8/(byte) be#104 )
|
||||
[53] (byte) bd#137 ← phi( f0::@19/(byte) bd#24 f0::@8/(byte) bd#136 )
|
||||
[53] (byte) bc#104 ← phi( f0::@19/(byte) bc#24 f0::@8/(byte) bc#103 )
|
||||
[53] (byte) bb#49 ← phi( f0::@19/(byte) bb#11 f0::@8/(byte) bb#25 )
|
||||
[54] if((byte) ba#17!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto f0::@return
|
||||
to:f0::@20
|
||||
f0::@20: scope:[f0] from f0::@9
|
||||
[55] phi()
|
||||
[56] call fa
|
||||
to:f0::@return
|
||||
f0::@return: scope:[f0] from f0::@20 f0::@9
|
||||
[57] (byte) be#13 ← phi( f0::@9/(byte) be#105 f0::@20/(byte) be#24 )
|
||||
[57] (byte) bd#13 ← phi( f0::@9/(byte) bd#137 f0::@20/(byte) bd#24 )
|
||||
[57] (byte) bc#13 ← phi( f0::@9/(byte) bc#104 f0::@20/(byte) bc#24 )
|
||||
[57] (byte) bb#13 ← phi( f0::@9/(byte) bb#49 f0::@20/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[58] return
|
||||
to:@return
|
||||
fa: scope:[fa] from f0::@11 f0::@12 f0::@13 f0::@14 f0::@15 f0::@16 f0::@17 f0::@18 f0::@19 f0::@20
|
||||
[59] (byte) be#107 ← phi( f0::@11/(byte) be#2 f0::@12/(byte) be#142 f0::@13/(byte) be#143 f0::@14/(byte) be#144 f0::@15/(byte) be#100 f0::@16/(byte) be#101 f0::@17/(byte) be#102 f0::@18/(byte) be#103 f0::@19/(byte) be#104 f0::@20/(byte) be#105 )
|
||||
[59] (byte) bd#138 ← phi( f0::@11/(byte) bd#2 f0::@12/(byte) bd#129 f0::@13/(byte) bd#130 f0::@14/(byte) bd#131 f0::@15/(byte) bd#132 f0::@16/(byte) bd#133 f0::@17/(byte) bd#134 f0::@18/(byte) bd#135 f0::@19/(byte) bd#136 f0::@20/(byte) bd#137 )
|
||||
[59] (byte) bc#39 ← phi( f0::@11/(byte) bc#2 f0::@12/(byte) bc#63 f0::@13/(byte) bc#64 f0::@14/(byte) bc#65 f0::@15/(byte) bc#66 f0::@16/(byte) bc#100 f0::@17/(byte) bc#101 f0::@18/(byte) bc#102 f0::@19/(byte) bc#103 f0::@20/(byte) bc#104 )
|
||||
[59] (byte) bb#27 ← phi( f0::@11/(byte~) bb#101 f0::@12/(byte~) bb#102 f0::@13/(byte~) bb#103 f0::@14/(byte~) bb#104 f0::@15/(byte~) bb#105 f0::@16/(byte~) bb#106 f0::@17/(byte~) bb#107 f0::@18/(byte~) bb#108 f0::@19/(byte~) bb#109 f0::@20/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[60] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto fa::@1
|
||||
to:fa::@11
|
||||
fa::@11: scope:[fa] from fa
|
||||
[61] (byte) bc#105 ← ++ (byte) bc#39
|
||||
[62] (byte~) bc#174 ← (byte) bc#105
|
||||
[63] call fb
|
||||
to:fa::@1
|
||||
fa::@1: scope:[fa] from fa fa::@11
|
||||
[64] (byte) be#108 ← phi( fa/(byte) be#107 fa::@11/(byte) be#35 )
|
||||
[64] (byte) bd#139 ← phi( fa/(byte) bd#138 fa::@11/(byte) bd#35 )
|
||||
[64] (byte) bc#40 ← phi( fa/(byte) bc#39 fa::@11/(byte) bc#105 )
|
||||
[65] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto fa::@2
|
||||
to:fa::@12
|
||||
fa::@12: scope:[fa] from fa::@1
|
||||
[66] (byte) bc#106 ← ++ (byte) bc#40
|
||||
[67] (byte~) bc#175 ← (byte) bc#106
|
||||
[68] call fb
|
||||
to:fa::@2
|
||||
fa::@2: scope:[fa] from fa::@1 fa::@12
|
||||
[69] (byte) be#109 ← phi( fa::@1/(byte) be#108 fa::@12/(byte) be#35 )
|
||||
[69] (byte) bd#140 ← phi( fa::@1/(byte) bd#139 fa::@12/(byte) bd#35 )
|
||||
[69] (byte) bc#41 ← phi( fa::@1/(byte) bc#40 fa::@12/(byte) bc#106 )
|
||||
[70] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 2) goto fa::@3
|
||||
to:fa::@13
|
||||
fa::@13: scope:[fa] from fa::@2
|
||||
[71] (byte) bc#107 ← ++ (byte) bc#41
|
||||
[72] (byte~) bc#176 ← (byte) bc#107
|
||||
[73] call fb
|
||||
to:fa::@3
|
||||
fa::@3: scope:[fa] from fa::@13 fa::@2
|
||||
[74] (byte) be#110 ← phi( fa::@2/(byte) be#109 fa::@13/(byte) be#35 )
|
||||
[74] (byte) bd#141 ← phi( fa::@2/(byte) bd#140 fa::@13/(byte) bd#35 )
|
||||
[74] (byte) bc#42 ← phi( fa::@2/(byte) bc#41 fa::@13/(byte) bc#107 )
|
||||
[75] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto fa::@4
|
||||
to:fa::@14
|
||||
fa::@14: scope:[fa] from fa::@3
|
||||
[76] (byte) bc#108 ← ++ (byte) bc#42
|
||||
[77] (byte~) bc#177 ← (byte) bc#108
|
||||
[78] call fb
|
||||
to:fa::@4
|
||||
fa::@4: scope:[fa] from fa::@14 fa::@3
|
||||
[79] (byte) be#111 ← phi( fa::@14/(byte) be#35 fa::@3/(byte) be#110 )
|
||||
[79] (byte) bd#142 ← phi( fa::@14/(byte) bd#35 fa::@3/(byte) bd#141 )
|
||||
[79] (byte) bc#43 ← phi( fa::@14/(byte) bc#108 fa::@3/(byte) bc#42 )
|
||||
[80] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto fa::@5
|
||||
to:fa::@15
|
||||
fa::@15: scope:[fa] from fa::@4
|
||||
[81] (byte) bc#109 ← ++ (byte) bc#43
|
||||
[82] (byte~) bc#178 ← (byte) bc#109
|
||||
[83] call fb
|
||||
to:fa::@5
|
||||
fa::@5: scope:[fa] from fa::@15 fa::@4
|
||||
[84] (byte) be#112 ← phi( fa::@15/(byte) be#35 fa::@4/(byte) be#111 )
|
||||
[84] (byte) bd#100 ← phi( fa::@15/(byte) bd#35 fa::@4/(byte) bd#142 )
|
||||
[84] (byte) bc#44 ← phi( fa::@15/(byte) bc#109 fa::@4/(byte) bc#43 )
|
||||
[85] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto fa::@6
|
||||
to:fa::@16
|
||||
fa::@16: scope:[fa] from fa::@5
|
||||
[86] (byte) bc#110 ← ++ (byte) bc#44
|
||||
[87] (byte~) bc#179 ← (byte) bc#110
|
||||
[88] call fb
|
||||
to:fa::@6
|
||||
fa::@6: scope:[fa] from fa::@16 fa::@5
|
||||
[89] (byte) be#113 ← phi( fa::@16/(byte) be#35 fa::@5/(byte) be#112 )
|
||||
[89] (byte) bd#101 ← phi( fa::@16/(byte) bd#35 fa::@5/(byte) bd#100 )
|
||||
[89] (byte) bc#45 ← phi( fa::@16/(byte) bc#110 fa::@5/(byte) bc#44 )
|
||||
[90] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto fa::@7
|
||||
to:fa::@17
|
||||
fa::@17: scope:[fa] from fa::@6
|
||||
[91] (byte) bc#111 ← ++ (byte) bc#45
|
||||
[92] (byte~) bc#180 ← (byte) bc#111
|
||||
[93] call fb
|
||||
to:fa::@7
|
||||
fa::@7: scope:[fa] from fa::@17 fa::@6
|
||||
[94] (byte) be#114 ← phi( fa::@17/(byte) be#35 fa::@6/(byte) be#113 )
|
||||
[94] (byte) bd#102 ← phi( fa::@17/(byte) bd#35 fa::@6/(byte) bd#101 )
|
||||
[94] (byte) bc#46 ← phi( fa::@17/(byte) bc#111 fa::@6/(byte) bc#45 )
|
||||
[95] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto fa::@8
|
||||
to:fa::@18
|
||||
fa::@18: scope:[fa] from fa::@7
|
||||
[96] (byte) bc#112 ← ++ (byte) bc#46
|
||||
[97] (byte~) bc#181 ← (byte) bc#112
|
||||
[98] call fb
|
||||
to:fa::@8
|
||||
fa::@8: scope:[fa] from fa::@18 fa::@7
|
||||
[99] (byte) be#115 ← phi( fa::@18/(byte) be#35 fa::@7/(byte) be#114 )
|
||||
[99] (byte) bd#103 ← phi( fa::@18/(byte) bd#35 fa::@7/(byte) bd#102 )
|
||||
[99] (byte) bc#47 ← phi( fa::@18/(byte) bc#112 fa::@7/(byte) bc#46 )
|
||||
[100] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto fa::@9
|
||||
to:fa::@19
|
||||
fa::@19: scope:[fa] from fa::@8
|
||||
[101] (byte) bc#123 ← ++ (byte) bc#47
|
||||
[102] (byte~) bc#182 ← (byte) bc#123
|
||||
[103] call fb
|
||||
to:fa::@9
|
||||
fa::@9: scope:[fa] from fa::@19 fa::@8
|
||||
[104] (byte) be#116 ← phi( fa::@19/(byte) be#35 fa::@8/(byte) be#115 )
|
||||
[104] (byte) bd#104 ← phi( fa::@19/(byte) bd#35 fa::@8/(byte) bd#103 )
|
||||
[104] (byte) bc#113 ← phi( fa::@19/(byte) bc#123 fa::@8/(byte) bc#47 )
|
||||
[105] if((byte) bb#27!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto fa::@return
|
||||
to:fa::@20
|
||||
fa::@20: scope:[fa] from fa::@9
|
||||
[106] phi()
|
||||
[107] call fb
|
||||
to:fa::@return
|
||||
fa::@return: scope:[fa] from fa::@20 fa::@9
|
||||
[108] (byte) be#24 ← phi( fa::@9/(byte) be#116 fa::@20/(byte) be#35 )
|
||||
[108] (byte) bd#24 ← phi( fa::@9/(byte) bd#104 fa::@20/(byte) bd#35 )
|
||||
[108] (byte) bc#24 ← phi( fa::@9/(byte) bc#113 fa::@20/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[109] return
|
||||
to:@return
|
||||
fb: scope:[fb] from fa::@11 fa::@12 fa::@13 fa::@14 fa::@15 fa::@16 fa::@17 fa::@18 fa::@19 fa::@20
|
||||
[110] (byte) be#118 ← phi( fa::@11/(byte) be#107 fa::@12/(byte) be#108 fa::@13/(byte) be#109 fa::@14/(byte) be#110 fa::@15/(byte) be#111 fa::@16/(byte) be#112 fa::@17/(byte) be#113 fa::@18/(byte) be#114 fa::@19/(byte) be#115 fa::@20/(byte) be#116 )
|
||||
[110] (byte) bd#106 ← phi( fa::@11/(byte) bd#138 fa::@12/(byte) bd#139 fa::@13/(byte) bd#140 fa::@14/(byte) bd#141 fa::@15/(byte) bd#142 fa::@16/(byte) bd#100 fa::@17/(byte) bd#101 fa::@18/(byte) bd#102 fa::@19/(byte) bd#103 fa::@20/(byte) bd#104 )
|
||||
[110] (byte) bc#114 ← phi( fa::@11/(byte~) bc#174 fa::@12/(byte~) bc#175 fa::@13/(byte~) bc#176 fa::@14/(byte~) bc#177 fa::@15/(byte~) bc#178 fa::@16/(byte~) bc#179 fa::@17/(byte~) bc#180 fa::@18/(byte~) bc#181 fa::@19/(byte~) bc#182 fa::@20/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[111] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto fb::@1
|
||||
to:fb::@11
|
||||
fb::@11: scope:[fb] from fb
|
||||
[112] (byte) bd#148 ← ++ (byte) bd#106
|
||||
[113] (byte~) bd#238 ← (byte) bd#148
|
||||
[114] call fc
|
||||
to:fb::@1
|
||||
fb::@1: scope:[fb] from fb fb::@11
|
||||
[115] (byte) be#119 ← phi( fb/(byte) be#118 fb::@11/(byte) be#46 )
|
||||
[115] (byte) bd#107 ← phi( fb/(byte) bd#106 fb::@11/(byte) bd#148 )
|
||||
[116] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto fb::@2
|
||||
to:fb::@12
|
||||
fb::@12: scope:[fb] from fb::@1
|
||||
[117] (byte) bd#149 ← ++ (byte) bd#107
|
||||
[118] (byte~) bd#239 ← (byte) bd#149
|
||||
[119] call fc
|
||||
to:fb::@2
|
||||
fb::@2: scope:[fb] from fb::@1 fb::@12
|
||||
[120] (byte) be#120 ← phi( fb::@1/(byte) be#119 fb::@12/(byte) be#46 )
|
||||
[120] (byte) bd#108 ← phi( fb::@1/(byte) bd#107 fb::@12/(byte) bd#149 )
|
||||
[121] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 2) goto fb::@3
|
||||
to:fb::@13
|
||||
fb::@13: scope:[fb] from fb::@2
|
||||
[122] (byte) bd#150 ← ++ (byte) bd#108
|
||||
[123] (byte~) bd#240 ← (byte) bd#150
|
||||
[124] call fc
|
||||
to:fb::@3
|
||||
fb::@3: scope:[fb] from fb::@13 fb::@2
|
||||
[125] (byte) be#121 ← phi( fb::@2/(byte) be#120 fb::@13/(byte) be#46 )
|
||||
[125] (byte) bd#109 ← phi( fb::@2/(byte) bd#108 fb::@13/(byte) bd#150 )
|
||||
[126] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto fb::@4
|
||||
to:fb::@14
|
||||
fb::@14: scope:[fb] from fb::@3
|
||||
[127] (byte) bd#151 ← ++ (byte) bd#109
|
||||
[128] (byte~) bd#241 ← (byte) bd#151
|
||||
[129] call fc
|
||||
to:fb::@4
|
||||
fb::@4: scope:[fb] from fb::@14 fb::@3
|
||||
[130] (byte) be#122 ← phi( fb::@14/(byte) be#46 fb::@3/(byte) be#121 )
|
||||
[130] (byte) bd#110 ← phi( fb::@14/(byte) bd#151 fb::@3/(byte) bd#109 )
|
||||
[131] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto fb::@5
|
||||
to:fb::@15
|
||||
fb::@15: scope:[fb] from fb::@4
|
||||
[132] (byte) bd#152 ← ++ (byte) bd#110
|
||||
[133] (byte~) bd#242 ← (byte) bd#152
|
||||
[134] call fc
|
||||
to:fb::@5
|
||||
fb::@5: scope:[fb] from fb::@15 fb::@4
|
||||
[135] (byte) be#123 ← phi( fb::@15/(byte) be#46 fb::@4/(byte) be#122 )
|
||||
[135] (byte) bd#111 ← phi( fb::@15/(byte) bd#152 fb::@4/(byte) bd#110 )
|
||||
[136] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto fb::@6
|
||||
to:fb::@16
|
||||
fb::@16: scope:[fb] from fb::@5
|
||||
[137] (byte) bd#153 ← ++ (byte) bd#111
|
||||
[138] (byte~) bd#243 ← (byte) bd#153
|
||||
[139] call fc
|
||||
to:fb::@6
|
||||
fb::@6: scope:[fb] from fb::@16 fb::@5
|
||||
[140] (byte) be#124 ← phi( fb::@16/(byte) be#46 fb::@5/(byte) be#123 )
|
||||
[140] (byte) bd#112 ← phi( fb::@16/(byte) bd#153 fb::@5/(byte) bd#111 )
|
||||
[141] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto fb::@7
|
||||
to:fb::@17
|
||||
fb::@17: scope:[fb] from fb::@6
|
||||
[142] (byte) bd#154 ← ++ (byte) bd#112
|
||||
[143] (byte~) bd#244 ← (byte) bd#154
|
||||
[144] call fc
|
||||
to:fb::@7
|
||||
fb::@7: scope:[fb] from fb::@17 fb::@6
|
||||
[145] (byte) be#125 ← phi( fb::@17/(byte) be#46 fb::@6/(byte) be#124 )
|
||||
[145] (byte) bd#113 ← phi( fb::@17/(byte) bd#154 fb::@6/(byte) bd#112 )
|
||||
[146] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto fb::@8
|
||||
to:fb::@18
|
||||
fb::@18: scope:[fb] from fb::@7
|
||||
[147] (byte) bd#155 ← ++ (byte) bd#113
|
||||
[148] (byte~) bd#245 ← (byte) bd#155
|
||||
[149] call fc
|
||||
to:fb::@8
|
||||
fb::@8: scope:[fb] from fb::@18 fb::@7
|
||||
[150] (byte) be#126 ← phi( fb::@18/(byte) be#46 fb::@7/(byte) be#125 )
|
||||
[150] (byte) bd#114 ← phi( fb::@18/(byte) bd#155 fb::@7/(byte) bd#113 )
|
||||
[151] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto fb::@9
|
||||
to:fb::@19
|
||||
fb::@19: scope:[fb] from fb::@8
|
||||
[152] (byte) bd#157 ← ++ (byte) bd#114
|
||||
[153] (byte~) bd#246 ← (byte) bd#157
|
||||
[154] call fc
|
||||
to:fb::@9
|
||||
fb::@9: scope:[fb] from fb::@19 fb::@8
|
||||
[155] (byte) be#127 ← phi( fb::@19/(byte) be#46 fb::@8/(byte) be#126 )
|
||||
[155] (byte) bd#115 ← phi( fb::@19/(byte) bd#157 fb::@8/(byte) bd#114 )
|
||||
[156] if((byte) bc#114!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto fb::@return
|
||||
to:fb::@20
|
||||
fb::@20: scope:[fb] from fb::@9
|
||||
[157] phi()
|
||||
[158] call fc
|
||||
to:fb::@return
|
||||
fb::@return: scope:[fb] from fb::@20 fb::@9
|
||||
[159] (byte) be#35 ← phi( fb::@9/(byte) be#127 fb::@20/(byte) be#46 )
|
||||
[159] (byte) bd#35 ← phi( fb::@9/(byte) bd#115 fb::@20/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[160] return
|
||||
to:@return
|
||||
fc: scope:[fc] from fb::@11 fb::@12 fb::@13 fb::@14 fb::@15 fb::@16 fb::@17 fb::@18 fb::@19 fb::@20
|
||||
[161] (byte) be#129 ← phi( fb::@11/(byte) be#118 fb::@12/(byte) be#119 fb::@13/(byte) be#120 fb::@14/(byte) be#121 fb::@15/(byte) be#122 fb::@16/(byte) be#123 fb::@17/(byte) be#124 fb::@18/(byte) be#125 fb::@19/(byte) be#126 fb::@20/(byte) be#127 )
|
||||
[161] (byte) bd#117 ← phi( fb::@11/(byte~) bd#238 fb::@12/(byte~) bd#239 fb::@13/(byte~) bd#240 fb::@14/(byte~) bd#241 fb::@15/(byte~) bd#242 fb::@16/(byte~) bd#243 fb::@17/(byte~) bd#244 fb::@18/(byte~) bd#245 fb::@19/(byte~) bd#246 fb::@20/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[162] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto fc::@1
|
||||
to:fc::@11
|
||||
fc::@11: scope:[fc] from fc
|
||||
[163] (byte) be#36 ← ++ (byte) be#129
|
||||
to:fc::@1
|
||||
fc::@1: scope:[fc] from fc fc::@11
|
||||
[164] (byte) be#130 ← phi( fc/(byte) be#129 fc::@11/(byte) be#36 )
|
||||
[165] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto fc::@2
|
||||
to:fc::@12
|
||||
fc::@12: scope:[fc] from fc::@1
|
||||
[166] (byte) be#37 ← ++ (byte) be#130
|
||||
to:fc::@2
|
||||
fc::@2: scope:[fc] from fc::@1 fc::@12
|
||||
[167] (byte) be#131 ← phi( fc::@1/(byte) be#130 fc::@12/(byte) be#37 )
|
||||
[168] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 2) goto fc::@3
|
||||
to:fc::@13
|
||||
fc::@13: scope:[fc] from fc::@2
|
||||
[169] (byte) be#38 ← ++ (byte) be#131
|
||||
to:fc::@3
|
||||
fc::@3: scope:[fc] from fc::@13 fc::@2
|
||||
[170] (byte) be#132 ← phi( fc::@13/(byte) be#38 fc::@2/(byte) be#131 )
|
||||
[171] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto fc::@4
|
||||
to:fc::@14
|
||||
fc::@14: scope:[fc] from fc::@3
|
||||
[172] (byte) be#39 ← ++ (byte) be#132
|
||||
to:fc::@4
|
||||
fc::@4: scope:[fc] from fc::@14 fc::@3
|
||||
[173] (byte) be#133 ← phi( fc::@14/(byte) be#39 fc::@3/(byte) be#132 )
|
||||
[174] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto fc::@5
|
||||
to:fc::@15
|
||||
fc::@15: scope:[fc] from fc::@4
|
||||
[175] (byte) be#40 ← ++ (byte) be#133
|
||||
to:fc::@5
|
||||
fc::@5: scope:[fc] from fc::@15 fc::@4
|
||||
[176] (byte) be#134 ← phi( fc::@15/(byte) be#40 fc::@4/(byte) be#133 )
|
||||
[177] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 5) goto fc::@6
|
||||
to:fc::@16
|
||||
fc::@16: scope:[fc] from fc::@5
|
||||
[178] (byte) be#41 ← ++ (byte) be#134
|
||||
to:fc::@6
|
||||
fc::@6: scope:[fc] from fc::@16 fc::@5
|
||||
[179] (byte) be#135 ← phi( fc::@16/(byte) be#41 fc::@5/(byte) be#134 )
|
||||
[180] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto fc::@7
|
||||
to:fc::@17
|
||||
fc::@17: scope:[fc] from fc::@6
|
||||
[181] (byte) be#42 ← ++ (byte) be#135
|
||||
to:fc::@7
|
||||
fc::@7: scope:[fc] from fc::@17 fc::@6
|
||||
[182] (byte) be#136 ← phi( fc::@17/(byte) be#42 fc::@6/(byte) be#135 )
|
||||
[183] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto fc::@8
|
||||
to:fc::@18
|
||||
fc::@18: scope:[fc] from fc::@7
|
||||
[184] (byte) be#43 ← ++ (byte) be#136
|
||||
to:fc::@8
|
||||
fc::@8: scope:[fc] from fc::@18 fc::@7
|
||||
[185] (byte) be#137 ← phi( fc::@18/(byte) be#43 fc::@7/(byte) be#136 )
|
||||
[186] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto fc::@9
|
||||
to:fc::@19
|
||||
fc::@19: scope:[fc] from fc::@8
|
||||
[187] (byte) be#44 ← ++ (byte) be#137
|
||||
to:fc::@9
|
||||
fc::@9: scope:[fc] from fc::@19 fc::@8
|
||||
[188] (byte) be#138 ← phi( fc::@19/(byte) be#44 fc::@8/(byte) be#137 )
|
||||
[189] if((byte) bd#117!=(byte/signed byte/word/signed word/dword/signed dword) 9) goto fc::@30
|
||||
to:fc::@return
|
||||
fc::@return: scope:[fc] from fc::@30 fc::@9
|
||||
[190] (byte) be#46 ← phi( fc::@30/(byte) be#138 fc::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[191] return
|
||||
to:@return
|
||||
fc::@30: scope:[fc] from fc::@9
|
||||
[192] phi()
|
||||
to:fc::@return
|
7033
src/test/ref/no-recursion-heavy.log
Normal file
7033
src/test/ref/no-recursion-heavy.log
Normal file
File diff suppressed because it is too large
Load Diff
283
src/test/ref/no-recursion-heavy.sym
Normal file
283
src/test/ref/no-recursion-heavy.sym
Normal file
@ -0,0 +1,283 @@
|
||||
(label) @5
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte) ba
|
||||
(byte) ba#1 ba zp ZP_BYTE:2 22.0
|
||||
(byte) ba#17 ba zp ZP_BYTE:2 0.7924528301886792
|
||||
(byte) bb
|
||||
(byte) bb#10 bb zp ZP_BYTE:3 2.0
|
||||
(byte~) bb#101 bb#101 zp ZP_BYTE:4 4.0
|
||||
(byte~) bb#102 bb#102 zp ZP_BYTE:4 4.0
|
||||
(byte~) bb#103 bb#103 zp ZP_BYTE:4 4.0
|
||||
(byte~) bb#104 bb#104 zp ZP_BYTE:4 4.0
|
||||
(byte~) bb#105 bb#105 zp ZP_BYTE:4 4.0
|
||||
(byte~) bb#106 bb#106 zp ZP_BYTE:4 4.0
|
||||
(byte~) bb#107 bb#107 zp ZP_BYTE:4 4.0
|
||||
(byte~) bb#108 bb#108 zp ZP_BYTE:4 4.0
|
||||
(byte~) bb#109 bb#109 zp ZP_BYTE:4 4.0
|
||||
(byte) bb#11 bb zp ZP_BYTE:3 2.0
|
||||
(byte) bb#13 bb zp ZP_BYTE:3 3.25
|
||||
(byte) bb#16 bb zp ZP_BYTE:3 5.0
|
||||
(byte) bb#18 bb zp ZP_BYTE:3 4.0
|
||||
(byte) bb#19 bb zp ZP_BYTE:3 4.0
|
||||
(byte) bb#20 bb zp ZP_BYTE:3 4.0
|
||||
(byte) bb#21 bb zp ZP_BYTE:3 4.0
|
||||
(byte) bb#22 bb zp ZP_BYTE:3 4.0
|
||||
(byte) bb#23 bb zp ZP_BYTE:3 4.0
|
||||
(byte) bb#24 bb zp ZP_BYTE:3 4.0
|
||||
(byte) bb#25 bb zp ZP_BYTE:3 4.0
|
||||
(byte) bb#27 bb#27 zp ZP_BYTE:4 0.8260869565217388
|
||||
(byte) bb#3 bb zp ZP_BYTE:3 2.0
|
||||
(byte) bb#4 bb zp ZP_BYTE:3 2.0
|
||||
(byte) bb#49 bb zp ZP_BYTE:3 3.0
|
||||
(byte) bb#5 bb zp ZP_BYTE:3 2.0
|
||||
(byte) bb#6 bb zp ZP_BYTE:3 2.0
|
||||
(byte) bb#66 bb zp ZP_BYTE:3 2.0
|
||||
(byte) bb#67 bb zp ZP_BYTE:3 2.0
|
||||
(byte) bb#68 bb zp ZP_BYTE:3 2.0
|
||||
(byte) bc
|
||||
(byte) bc#100 reg byte x 2.0
|
||||
(byte) bc#101 reg byte x 2.0
|
||||
(byte) bc#102 reg byte x 2.0
|
||||
(byte) bc#103 reg byte x 2.0
|
||||
(byte) bc#104 reg byte x 2.6666666666666665
|
||||
(byte) bc#105 reg byte x 2.0
|
||||
(byte) bc#106 reg byte x 2.0
|
||||
(byte) bc#107 reg byte x 2.0
|
||||
(byte) bc#108 reg byte x 2.0
|
||||
(byte) bc#109 reg byte x 2.0
|
||||
(byte) bc#110 reg byte x 2.0
|
||||
(byte) bc#111 reg byte x 2.0
|
||||
(byte) bc#112 reg byte x 2.0
|
||||
(byte) bc#113 reg byte x 3.0
|
||||
(byte) bc#114 bc zp ZP_BYTE:5 0.8260869565217388
|
||||
(byte) bc#123 reg byte x 2.0
|
||||
(byte) bc#13 reg byte x 3.75
|
||||
(byte~) bc#174 bc zp ZP_BYTE:5 4.0
|
||||
(byte~) bc#175 bc zp ZP_BYTE:5 4.0
|
||||
(byte~) bc#176 bc zp ZP_BYTE:5 4.0
|
||||
(byte~) bc#177 bc zp ZP_BYTE:5 4.0
|
||||
(byte~) bc#178 bc zp ZP_BYTE:5 4.0
|
||||
(byte~) bc#179 bc zp ZP_BYTE:5 4.0
|
||||
(byte~) bc#180 bc zp ZP_BYTE:5 4.0
|
||||
(byte~) bc#181 bc zp ZP_BYTE:5 4.0
|
||||
(byte~) bc#182 bc zp ZP_BYTE:5 4.0
|
||||
(byte) bc#2 reg byte x 3.0
|
||||
(byte) bc#24 reg byte x 1.8333333333333335
|
||||
(byte) bc#39 reg byte x 12.0
|
||||
(byte) bc#40 reg byte x 4.0
|
||||
(byte) bc#41 reg byte x 4.0
|
||||
(byte) bc#42 reg byte x 4.0
|
||||
(byte) bc#43 reg byte x 4.0
|
||||
(byte) bc#44 reg byte x 4.0
|
||||
(byte) bc#45 reg byte x 4.0
|
||||
(byte) bc#46 reg byte x 4.0
|
||||
(byte) bc#47 reg byte x 4.0
|
||||
(byte) bc#63 reg byte x 2.0
|
||||
(byte) bc#64 reg byte x 2.0
|
||||
(byte) bc#65 reg byte x 2.0
|
||||
(byte) bc#66 reg byte x 2.0
|
||||
(byte) bd
|
||||
(byte) bd#100 reg byte y 2.0
|
||||
(byte) bd#101 reg byte y 2.0
|
||||
(byte) bd#102 reg byte y 2.0
|
||||
(byte) bd#103 reg byte y 2.0
|
||||
(byte) bd#104 reg byte y 2.6666666666666665
|
||||
(byte) bd#106 reg byte y 12.0
|
||||
(byte) bd#107 reg byte y 4.0
|
||||
(byte) bd#108 reg byte y 4.0
|
||||
(byte) bd#109 reg byte y 4.0
|
||||
(byte) bd#110 reg byte y 4.0
|
||||
(byte) bd#111 reg byte y 4.0
|
||||
(byte) bd#112 reg byte y 4.0
|
||||
(byte) bd#113 reg byte y 4.0
|
||||
(byte) bd#114 reg byte y 4.0
|
||||
(byte) bd#115 reg byte y 3.0
|
||||
(byte) bd#117 reg byte a 1.3571428571428568
|
||||
(byte) bd#129 reg byte y 2.0
|
||||
(byte) bd#13 reg byte y 3.75
|
||||
(byte) bd#130 reg byte y 2.0
|
||||
(byte) bd#131 reg byte y 2.0
|
||||
(byte) bd#132 reg byte y 2.0
|
||||
(byte) bd#133 reg byte y 2.0
|
||||
(byte) bd#134 reg byte y 2.0
|
||||
(byte) bd#135 reg byte y 2.0
|
||||
(byte) bd#136 reg byte y 2.0
|
||||
(byte) bd#137 reg byte y 2.6666666666666665
|
||||
(byte) bd#138 reg byte y 6.0
|
||||
(byte) bd#139 reg byte y 2.0
|
||||
(byte) bd#140 reg byte y 2.0
|
||||
(byte) bd#141 reg byte y 2.0
|
||||
(byte) bd#142 reg byte y 2.0
|
||||
(byte) bd#148 reg byte y 2.0
|
||||
(byte) bd#149 reg byte y 2.0
|
||||
(byte) bd#150 reg byte y 2.0
|
||||
(byte) bd#151 reg byte y 2.0
|
||||
(byte) bd#152 reg byte y 2.0
|
||||
(byte) bd#153 reg byte y 2.0
|
||||
(byte) bd#154 reg byte y 2.0
|
||||
(byte) bd#155 reg byte y 2.0
|
||||
(byte) bd#157 reg byte y 2.0
|
||||
(byte) bd#2 reg byte y 3.0
|
||||
(byte~) bd#238 reg byte a 4.0
|
||||
(byte~) bd#239 reg byte a 4.0
|
||||
(byte) bd#24 reg byte y 2.0
|
||||
(byte~) bd#240 reg byte a 4.0
|
||||
(byte~) bd#241 reg byte a 4.0
|
||||
(byte~) bd#242 reg byte a 4.0
|
||||
(byte~) bd#243 reg byte a 4.0
|
||||
(byte~) bd#244 reg byte a 4.0
|
||||
(byte~) bd#245 reg byte a 4.0
|
||||
(byte~) bd#246 reg byte a 4.0
|
||||
(byte) bd#35 reg byte y 1.8333333333333335
|
||||
(byte) be
|
||||
(byte) be#100 be zp ZP_BYTE:6 2.0
|
||||
(byte) be#101 be zp ZP_BYTE:6 2.0
|
||||
(byte) be#102 be zp ZP_BYTE:6 2.0
|
||||
(byte) be#103 be zp ZP_BYTE:6 2.0
|
||||
(byte) be#104 be zp ZP_BYTE:6 2.0
|
||||
(byte) be#105 be zp ZP_BYTE:6 2.6666666666666665
|
||||
(byte) be#107 be zp ZP_BYTE:6 6.0
|
||||
(byte) be#108 be zp ZP_BYTE:6 2.0
|
||||
(byte) be#109 be zp ZP_BYTE:6 2.0
|
||||
(byte) be#110 be zp ZP_BYTE:6 2.0
|
||||
(byte) be#111 be zp ZP_BYTE:6 2.0
|
||||
(byte) be#112 be zp ZP_BYTE:6 2.0
|
||||
(byte) be#113 be zp ZP_BYTE:6 2.0
|
||||
(byte) be#114 be zp ZP_BYTE:6 2.0
|
||||
(byte) be#115 be zp ZP_BYTE:6 2.0
|
||||
(byte) be#116 be zp ZP_BYTE:6 2.6666666666666665
|
||||
(byte) be#118 be zp ZP_BYTE:6 6.0
|
||||
(byte) be#119 be zp ZP_BYTE:6 2.0
|
||||
(byte) be#120 be zp ZP_BYTE:6 2.0
|
||||
(byte) be#121 be zp ZP_BYTE:6 2.0
|
||||
(byte) be#122 be zp ZP_BYTE:6 2.0
|
||||
(byte) be#123 be zp ZP_BYTE:6 2.0
|
||||
(byte) be#124 be zp ZP_BYTE:6 2.0
|
||||
(byte) be#125 be zp ZP_BYTE:6 2.0
|
||||
(byte) be#126 be zp ZP_BYTE:6 2.0
|
||||
(byte) be#127 be zp ZP_BYTE:6 2.6666666666666665
|
||||
(byte) be#129 be zp ZP_BYTE:6 12.0
|
||||
(byte) be#13 be zp ZP_BYTE:6 3.75
|
||||
(byte) be#130 be zp ZP_BYTE:6 4.0
|
||||
(byte) be#131 be zp ZP_BYTE:6 4.0
|
||||
(byte) be#132 be zp ZP_BYTE:6 4.0
|
||||
(byte) be#133 be zp ZP_BYTE:6 4.0
|
||||
(byte) be#134 be zp ZP_BYTE:6 4.0
|
||||
(byte) be#135 be zp ZP_BYTE:6 4.0
|
||||
(byte) be#136 be zp ZP_BYTE:6 4.0
|
||||
(byte) be#137 be zp ZP_BYTE:6 4.0
|
||||
(byte) be#138 be zp ZP_BYTE:6 2.0
|
||||
(byte) be#142 be zp ZP_BYTE:6 2.0
|
||||
(byte) be#143 be zp ZP_BYTE:6 2.0
|
||||
(byte) be#144 be zp ZP_BYTE:6 2.0
|
||||
(byte) be#2 be zp ZP_BYTE:6 3.0
|
||||
(byte) be#24 be zp ZP_BYTE:6 2.0
|
||||
(byte) be#35 be zp ZP_BYTE:6 2.0
|
||||
(byte) be#36 be zp ZP_BYTE:6 4.0
|
||||
(byte) be#37 be zp ZP_BYTE:6 4.0
|
||||
(byte) be#38 be zp ZP_BYTE:6 4.0
|
||||
(byte) be#39 be zp ZP_BYTE:6 4.0
|
||||
(byte) be#40 be zp ZP_BYTE:6 4.0
|
||||
(byte) be#41 be zp ZP_BYTE:6 4.0
|
||||
(byte) be#42 be zp ZP_BYTE:6 4.0
|
||||
(byte) be#43 be zp ZP_BYTE:6 4.0
|
||||
(byte) be#44 be zp ZP_BYTE:6 4.0
|
||||
(byte) be#46 be zp ZP_BYTE:6 1.8333333333333335
|
||||
(void()) f0()
|
||||
(label) f0::@1
|
||||
(label) f0::@11
|
||||
(label) f0::@12
|
||||
(label) f0::@13
|
||||
(label) f0::@14
|
||||
(label) f0::@15
|
||||
(label) f0::@16
|
||||
(label) f0::@17
|
||||
(label) f0::@18
|
||||
(label) f0::@19
|
||||
(label) f0::@2
|
||||
(label) f0::@20
|
||||
(label) f0::@3
|
||||
(label) f0::@4
|
||||
(label) f0::@5
|
||||
(label) f0::@6
|
||||
(label) f0::@7
|
||||
(label) f0::@8
|
||||
(label) f0::@9
|
||||
(label) f0::@return
|
||||
(void()) fa()
|
||||
(label) fa::@1
|
||||
(label) fa::@11
|
||||
(label) fa::@12
|
||||
(label) fa::@13
|
||||
(label) fa::@14
|
||||
(label) fa::@15
|
||||
(label) fa::@16
|
||||
(label) fa::@17
|
||||
(label) fa::@18
|
||||
(label) fa::@19
|
||||
(label) fa::@2
|
||||
(label) fa::@20
|
||||
(label) fa::@3
|
||||
(label) fa::@4
|
||||
(label) fa::@5
|
||||
(label) fa::@6
|
||||
(label) fa::@7
|
||||
(label) fa::@8
|
||||
(label) fa::@9
|
||||
(label) fa::@return
|
||||
(void()) fb()
|
||||
(label) fb::@1
|
||||
(label) fb::@11
|
||||
(label) fb::@12
|
||||
(label) fb::@13
|
||||
(label) fb::@14
|
||||
(label) fb::@15
|
||||
(label) fb::@16
|
||||
(label) fb::@17
|
||||
(label) fb::@18
|
||||
(label) fb::@19
|
||||
(label) fb::@2
|
||||
(label) fb::@20
|
||||
(label) fb::@3
|
||||
(label) fb::@4
|
||||
(label) fb::@5
|
||||
(label) fb::@6
|
||||
(label) fb::@7
|
||||
(label) fb::@8
|
||||
(label) fb::@9
|
||||
(label) fb::@return
|
||||
(void()) fc()
|
||||
(label) fc::@1
|
||||
(label) fc::@11
|
||||
(label) fc::@12
|
||||
(label) fc::@13
|
||||
(label) fc::@14
|
||||
(label) fc::@15
|
||||
(label) fc::@16
|
||||
(label) fc::@17
|
||||
(label) fc::@18
|
||||
(label) fc::@19
|
||||
(label) fc::@2
|
||||
(label) fc::@3
|
||||
(label) fc::@30
|
||||
(label) fc::@4
|
||||
(label) fc::@5
|
||||
(label) fc::@6
|
||||
(label) fc::@7
|
||||
(label) fc::@8
|
||||
(label) fc::@9
|
||||
(label) fc::@return
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@7
|
||||
|
||||
zp ZP_BYTE:2 [ ba#17 ba#1 ]
|
||||
zp ZP_BYTE:3 [ bb#49 bb#11 bb#25 bb#10 bb#24 bb#68 bb#23 bb#67 bb#22 bb#66 bb#21 bb#6 bb#20 bb#19 bb#18 bb#16 bb#13 bb#3 bb#4 bb#5 ]
|
||||
zp ZP_BYTE:4 [ bb#27 bb#101 bb#102 bb#103 bb#104 bb#105 bb#106 bb#107 bb#108 bb#109 ]
|
||||
reg byte x [ bc#113 bc#123 bc#47 bc#112 bc#46 bc#111 bc#45 bc#110 bc#44 bc#109 bc#43 bc#108 bc#42 bc#41 bc#40 bc#39 bc#104 bc#103 bc#102 bc#101 bc#100 bc#66 bc#65 bc#64 bc#63 bc#2 bc#13 bc#24 bc#105 bc#106 bc#107 ]
|
||||
zp ZP_BYTE:5 [ bc#114 bc#174 bc#175 bc#176 bc#177 bc#178 bc#179 bc#180 bc#181 bc#182 ]
|
||||
reg byte y [ bd#115 bd#157 bd#114 bd#155 bd#113 bd#154 bd#112 bd#153 bd#111 bd#152 bd#110 bd#151 bd#109 bd#108 bd#107 bd#106 bd#104 bd#103 bd#102 bd#101 bd#100 bd#142 bd#141 bd#140 bd#139 bd#138 bd#137 bd#136 bd#135 bd#134 bd#133 bd#132 bd#131 bd#130 bd#129 bd#2 bd#13 bd#24 bd#35 bd#148 bd#149 bd#150 ]
|
||||
reg byte a [ bd#117 bd#238 bd#239 bd#240 bd#241 bd#242 bd#243 bd#244 bd#245 bd#246 ]
|
||||
zp ZP_BYTE:6 [ be#138 be#44 be#137 be#43 be#136 be#42 be#135 be#41 be#134 be#40 be#133 be#39 be#132 be#38 be#131 be#130 be#129 be#127 be#126 be#125 be#124 be#123 be#122 be#121 be#120 be#119 be#118 be#116 be#115 be#114 be#113 be#112 be#111 be#110 be#109 be#108 be#107 be#105 be#104 be#103 be#102 be#101 be#100 be#144 be#143 be#142 be#2 be#13 be#24 be#35 be#46 be#36 be#37 ]
|
Loading…
x
Reference in New Issue
Block a user