mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-04-09 21:37:31 +00:00
Implemented signed word multiplication & test.
This commit is contained in:
parent
34d3c732da
commit
8f21ffc0e4
@ -214,6 +214,12 @@ class AsmFragmentTemplateSynthesisRule {
|
||||
mapSToU.put("vwsc1", "vwuc1");
|
||||
mapSToU.put("vwsc2", "vwuc2");
|
||||
mapSToU.put("vwsc3", "vwuc3");
|
||||
mapSToU.put("vdsz1", "vduz1");
|
||||
mapSToU.put("vdsz2", "vduz2");
|
||||
mapSToU.put("vdsz3", "vduz3");
|
||||
mapSToU.put("vdsc1", "vduc1");
|
||||
mapSToU.put("vdsc2", "vduc2");
|
||||
mapSToU.put("vdsc3", "vduc3");
|
||||
mapSToU.put("pbsz1", "pbuz1");
|
||||
mapSToU.put("pbsz2", "pbuz2");
|
||||
mapSToU.put("pbsz3", "pbuz3");
|
||||
@ -491,12 +497,31 @@ class AsmFragmentTemplateSynthesisRule {
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(vbuz.|vbuaa|vbuxx|vbuyy)=_(lo|hi)_vws(z.|c.)", null, null, "$1=_$2_vwu$3", null, mapSToU));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(vbs..)=(vbs..)_(plus)_(vbs..)", null, null, "$1=$2_$3_$4", null, mapSToU));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(vws..)=(vws..)_(plus)_(vws..)", null, null, "$1=$2_$3_$4", null, mapSToU));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(vds..)=(vds..)_(plus)_(vds..)", null, null, "$1=$2_$3_$4", null, mapSToU));
|
||||
|
||||
// Use constant word ASM to synthesize unsigned constant byte ASM ( ...vb.c... -> vw.c... )
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(vwuz.)=(vwuz.)_(plus|minus|band|bxor|bor)_vb.c(.)", null, null, "$1=$2_$3_vwuc$4", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(vwuz.)=vb.c(.)_(plus|minus|band|bxor|bor)_(vwuz.)", null, null, "$1=vwuc$2_$3_$4", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(vwsz.)=(vwsz.)_(plus|minus|band|bxor|bor)_vb.c(.)", null, null, "$1=$2_$3_vwsc$4", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(vwsz.)=vb.c(.)_(plus|minus|band|bxor|bor)_(vwsz.)", null, null, "$1=vwsc$2_$3_$4", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(vwuz.)=vb.c(.)", null, null, "$1=vwuc$2", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(vwsz.)=vb.c(.)", null, null, "$1=vwsc$2", null, null));
|
||||
|
||||
// Use constant dword ASM to synthesize unsigned constant word ASM ( ...vw.c... -> vd.c... )
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(vduz.)=(vduz.)_(plus|minus|band|bxor|bor)_vw.c(.)", null, null, "$1=$2_$3_vduc$4", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(vduz.)=vw.c(.)_(plus|minus|band|bxor|bor)_(vduz.)", null, null, "$1=vduc$2_$3_$4", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(vdsz.)=(vdsz.)_(plus|minus|band|bxor|bor)_vw.c(.)", null, null, "$1=$2_$3_vdsc$4", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(vdsz.)=vw.c(.)_(plus|minus|band|bxor|bor)_(vdsz.)", null, null, "$1=vdsc$2_$3_$4", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(vduz.)=vw.c(.)", null, null, "$1=vduc$2", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(vdsz.)=vw.c(.)", null, null, "$1=vdsc$2", null, null));
|
||||
|
||||
// Use constant dword ASM to synthesize unsigned constant byte ASM ( ...vb.c... -> vd.c... )
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(vduz.)=(vduz.)_(plus|minus|band|bxor|bor)_vb.c(.)", null, null, "$1=$2_$3_vduc$4", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(vduz.)=vb.c(.)_(plus|minus|band|bxor|bor)_(vduz.)", null, null, "$1=vduc$2_$3_$4", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(vdsz.)=(vdsz.)_(plus|minus|band|bxor|bor)_vb.c(.)", null, null, "$1=$2_$3_vdsc$4", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(vdsz.)=vb.c(.)_(plus|minus|band|bxor|bor)_(vdsz.)", null, null, "$1=vdsc$2_$3_$4", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(vduz.)=vb.c(.)", null, null, "$1=vduc$2", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(vdsz.)=vb.c(.)", null, null, "$1=vdsc$2", null, null));
|
||||
|
||||
// Use Z1/Z2 ASM to synthesize Z1-only code ( ...z1...z1... -> ...z1...z2... )
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(v..)z1=(v..)z1_(plus|minus|band|bxor|bor)_(.*)", oneZ2, null, "$1z1=$2z2_$3_$4", null, mapZ, false));
|
||||
|
@ -0,0 +1,17 @@
|
||||
sec
|
||||
lda {z2}
|
||||
eor #$ff
|
||||
adc #$0
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
eor #$ff
|
||||
adc #$0
|
||||
sta {z1}+1
|
||||
lda {z2}+2
|
||||
eor #$ff
|
||||
adc #$0
|
||||
sta {z1}+2
|
||||
lda {z2}+3
|
||||
eor #$ff
|
||||
adc #$0
|
||||
sta {z1}+3
|
@ -0,0 +1,8 @@
|
||||
lda {z2}
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
sta {z1}+1
|
||||
lda {z2}+2
|
||||
sta {z1}+2
|
||||
lda {z2}+3
|
||||
sta {z1}+3
|
@ -0,0 +1,19 @@
|
||||
lda {z2}+1
|
||||
ora #$7f
|
||||
bmi !+
|
||||
lda #0
|
||||
!:
|
||||
sta $ff
|
||||
sec
|
||||
lda {z1}
|
||||
sbc {z2}
|
||||
sta {z1}
|
||||
lda {z1}+1
|
||||
sbc {z2}+1
|
||||
sta {z1}+1
|
||||
lda {z1}+2
|
||||
sbc $ff
|
||||
sta {z1}+2
|
||||
lda {z1}+3
|
||||
sbc $ff
|
||||
sta {z1}+3
|
@ -0,0 +1,20 @@
|
||||
lda {z2}+1
|
||||
ora #$7f
|
||||
bmi !+
|
||||
lda #0
|
||||
!:
|
||||
sta $ff
|
||||
lda {z1}
|
||||
clc
|
||||
adc {z2}
|
||||
sta {z1}
|
||||
lda {z1}+1
|
||||
adc {z2}+1
|
||||
sta {z1}+1
|
||||
lda {z1}+2
|
||||
adc $ff
|
||||
sta {z1}+2
|
||||
lda {z1}+3
|
||||
adc $ff
|
||||
sta {z1}+3
|
||||
|
@ -0,0 +1,2 @@
|
||||
lda {z1}+3
|
||||
bpl {la1}
|
@ -0,0 +1,8 @@
|
||||
lda {z2}
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
sta {z1}+1
|
||||
lda {z2}+2
|
||||
sta {z1}+2
|
||||
lda {z2}+3
|
||||
sta {z1}+3
|
@ -0,0 +1,13 @@
|
||||
lda {z1}
|
||||
sec
|
||||
sbc {z2}
|
||||
sta {z1}
|
||||
lda {z1}+1
|
||||
sbc {z2}+1
|
||||
sta {z1}+1
|
||||
lda {z1}+2
|
||||
sbc {z2}+2
|
||||
sta {z1}+2
|
||||
lda {z1}+3
|
||||
sbc {z2}+3
|
||||
sta {z1}+3
|
@ -0,0 +1,4 @@
|
||||
lda {z2}
|
||||
sta {z1}+2
|
||||
lda {z2}+1
|
||||
sta {z1}+3
|
@ -1,7 +1,7 @@
|
||||
clc
|
||||
lda {z1}
|
||||
adc {z2}
|
||||
adc #<{c1}
|
||||
sta {z1}
|
||||
lda {z1}+1
|
||||
adc {z2}+1
|
||||
adc #>{c1}
|
||||
sta {z1}+1
|
@ -0,0 +1,6 @@
|
||||
lda {z1}+1
|
||||
bmi {la1}
|
||||
bne !+
|
||||
lda {z1}
|
||||
beq {la1}
|
||||
!:
|
@ -0,0 +1,5 @@
|
||||
lda {z1}
|
||||
bne !+
|
||||
dec {z1}+1
|
||||
!:
|
||||
dec {z1}
|
@ -0,0 +1,7 @@
|
||||
clc
|
||||
lda {z1}
|
||||
adc #<{c1}
|
||||
sta {z1}
|
||||
lda {z1}+1
|
||||
adc #>{c1}
|
||||
sta {z1}+1
|
@ -49,6 +49,15 @@ void print_dword(dword dw) {
|
||||
print_word(<dw);
|
||||
}
|
||||
|
||||
// Print a signed dword as HEX
|
||||
void print_sdword(signed dword dw) {
|
||||
if(dw<0) {
|
||||
print_char('-');
|
||||
dw = -dw;
|
||||
}
|
||||
print_dword((dword)dw);
|
||||
}
|
||||
|
||||
// Print a byte as HEX
|
||||
void print_byte(byte b) {
|
||||
// Table of hexadecimal digits
|
||||
|
@ -14,6 +14,7 @@ void main() {
|
||||
mul8u_compare();
|
||||
mul8s_compare();
|
||||
mul16u_compare();
|
||||
mul16s_compare();
|
||||
}
|
||||
|
||||
// Slow multiplication of unsigned bytes
|
||||
@ -29,7 +30,7 @@ word muls8u(byte a, byte b) {
|
||||
}
|
||||
|
||||
// Slow multiplication of signed bytes
|
||||
// Perform a signed multiplication by repeated addition/
|
||||
// Perform a signed multiplication by repeated addition/subtraction
|
||||
signed word muls8s(signed byte a, signed byte b) {
|
||||
signed word m = 0;
|
||||
if(a<0) {
|
||||
@ -56,6 +57,24 @@ dword muls16u(word a, word b) {
|
||||
return m;
|
||||
}
|
||||
|
||||
// Slow multiplication of signed words
|
||||
// Perform a signed multiplication by repeated addition/subtraction
|
||||
signed dword muls16s(signed word a, signed word b) {
|
||||
signed dword m = 0;
|
||||
if(a<0) {
|
||||
for(signed word i = 0; i!=a; i--) {
|
||||
m = m - b;
|
||||
}
|
||||
} else if (a>0) {
|
||||
for(signed word j = 0; j!=a; j++) {
|
||||
m = m + b;
|
||||
}
|
||||
}
|
||||
return m;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// ASM based multiplication tables
|
||||
// <(( x * x )/4)
|
||||
byte[512] align($100) mula_sqr1_lo;
|
||||
@ -249,3 +268,40 @@ void mul16u_error(word a, word b, dword ms, dword mn) {
|
||||
print_dword(mn);
|
||||
print_ln();
|
||||
}
|
||||
|
||||
// Perform many possible word multiplications (slow and fast) and compare the results
|
||||
void mul16s_compare() {
|
||||
signed word a = -$7fff;
|
||||
signed word b = -$7fff;
|
||||
for(byte i: 0..15) {
|
||||
for(byte j: 0..15) {
|
||||
a=a+3371;
|
||||
b=b+4093;
|
||||
signed dword ms = muls16s(a, b);
|
||||
signed dword mn = mul16s(a,b);
|
||||
byte ok = 1;
|
||||
if(ms!=mn) {
|
||||
ok = 0;
|
||||
}
|
||||
if(ok==0) {
|
||||
*BGCOL = 2;
|
||||
mul16s_error(a,b, ms, mn);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
print_str("signed word multiply results match!@");
|
||||
print_ln();
|
||||
}
|
||||
|
||||
void mul16s_error(signed word a, signed word b, signed dword ms, signed dword mn) {
|
||||
print_str("signed word multiply mismatch @");
|
||||
print_sword(a);
|
||||
print_str("*@");
|
||||
print_sword(b);
|
||||
print_str(" slow:@");
|
||||
print_sdword(ms);
|
||||
print_str(" / normal:@");
|
||||
print_sdword(mn);
|
||||
print_ln();
|
||||
}
|
||||
|
@ -342,8 +342,8 @@ init_plot_tables: {
|
||||
and #7
|
||||
cmp #7
|
||||
bne b4
|
||||
lda yoffs
|
||||
clc
|
||||
lda yoffs
|
||||
adc #<$28*8
|
||||
sta yoffs
|
||||
lda yoffs+1
|
||||
|
@ -5160,8 +5160,8 @@ init_plot_tables: {
|
||||
//SEG323 init_plot_tables::@7
|
||||
b7:
|
||||
//SEG324 [174] (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 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- pbuz1=pbuz1_plus_vwuc1
|
||||
lda yoffs
|
||||
clc
|
||||
lda yoffs
|
||||
adc #<$28*8
|
||||
sta yoffs
|
||||
lda yoffs+1
|
||||
@ -6420,8 +6420,8 @@ init_plot_tables: {
|
||||
//SEG323 init_plot_tables::@7
|
||||
b7:
|
||||
//SEG324 [174] (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 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- pbuz1=pbuz1_plus_vwuc1
|
||||
lda yoffs
|
||||
clc
|
||||
lda yoffs
|
||||
adc #<$28*8
|
||||
sta yoffs
|
||||
lda yoffs+1
|
||||
@ -7732,8 +7732,8 @@ init_plot_tables: {
|
||||
bne b4
|
||||
//SEG323 init_plot_tables::@7
|
||||
//SEG324 [174] (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 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- pbuz1=pbuz1_plus_vwuc1
|
||||
lda yoffs
|
||||
clc
|
||||
lda yoffs
|
||||
adc #<$28*8
|
||||
sta yoffs
|
||||
lda yoffs+1
|
||||
|
@ -120,8 +120,8 @@ init_plot_tables: {
|
||||
and #7
|
||||
cmp #7
|
||||
bne b4
|
||||
lda yoffs
|
||||
clc
|
||||
lda yoffs
|
||||
adc #<$28*8
|
||||
sta yoffs
|
||||
lda yoffs+1
|
||||
|
@ -2055,8 +2055,8 @@ init_plot_tables: {
|
||||
//SEG92 init_plot_tables::@7
|
||||
b7:
|
||||
//SEG93 [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 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- pbuz1=pbuz1_plus_vwuc1
|
||||
lda yoffs
|
||||
clc
|
||||
lda yoffs
|
||||
adc #<$28*8
|
||||
sta yoffs
|
||||
lda yoffs+1
|
||||
@ -2542,8 +2542,8 @@ init_plot_tables: {
|
||||
//SEG92 init_plot_tables::@7
|
||||
b7:
|
||||
//SEG93 [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 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- pbuz1=pbuz1_plus_vwuc1
|
||||
lda yoffs
|
||||
clc
|
||||
lda yoffs
|
||||
adc #<$28*8
|
||||
sta yoffs
|
||||
lda yoffs+1
|
||||
@ -3094,8 +3094,8 @@ init_plot_tables: {
|
||||
bne b4
|
||||
//SEG92 init_plot_tables::@7
|
||||
//SEG93 [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 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- pbuz1=pbuz1_plus_vwuc1
|
||||
lda yoffs
|
||||
clc
|
||||
lda yoffs
|
||||
adc #<$28*8
|
||||
sta yoffs
|
||||
lda yoffs+1
|
||||
|
@ -15,9 +15,9 @@ main: {
|
||||
sta y
|
||||
ldy #yd/2
|
||||
tax
|
||||
lda #0+0*$28
|
||||
lda #<0+0*$28
|
||||
sta idx
|
||||
txa
|
||||
lda #>0+0*$28
|
||||
sta idx+1
|
||||
b1:
|
||||
lda #<screen
|
||||
@ -43,12 +43,12 @@ main: {
|
||||
bcc b2
|
||||
beq b2
|
||||
inc y
|
||||
lda #$28
|
||||
clc
|
||||
adc idx
|
||||
lda idx
|
||||
adc #<$28
|
||||
sta idx
|
||||
lda #0
|
||||
adc idx+1
|
||||
lda idx+1
|
||||
adc #>$28
|
||||
sta idx+1
|
||||
tya
|
||||
sec
|
||||
|
@ -608,9 +608,9 @@ main: {
|
||||
lda #0
|
||||
sta x
|
||||
//SEG14 [5] phi (word) main::idx#3 = (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) 40 [phi:main->main::@1#3] -- vwuz1=vbuc1
|
||||
lda #0+0*$28
|
||||
lda #<0+0*$28
|
||||
sta idx
|
||||
lda #0
|
||||
lda #>0+0*$28
|
||||
sta idx+1
|
||||
jmp b1
|
||||
//SEG15 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
|
||||
@ -655,12 +655,12 @@ main: {
|
||||
//SEG27 [11] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ( main:2 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ) -- vbuz1=vbuz1_plus_1
|
||||
inc y
|
||||
//SEG28 [12] (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ( main:2 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ) -- vwuz1=vwuz1_plus_vbuc1
|
||||
lda #$28
|
||||
clc
|
||||
adc idx
|
||||
lda idx
|
||||
adc #<$28
|
||||
sta idx
|
||||
lda #0
|
||||
adc idx+1
|
||||
lda idx+1
|
||||
adc #>$28
|
||||
sta idx+1
|
||||
//SEG29 [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ( main:2 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ) -- vbuz1=vbuz1_minus_vbuc1
|
||||
lda e
|
||||
@ -756,9 +756,9 @@ main: {
|
||||
//SEG13 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuxx=vbuc1
|
||||
ldx #0
|
||||
//SEG14 [5] phi (word) main::idx#3 = (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) 40 [phi:main->main::@1#3] -- vwuz1=vbuc1
|
||||
lda #0+0*$28
|
||||
lda #<0+0*$28
|
||||
sta idx
|
||||
lda #0
|
||||
lda #>0+0*$28
|
||||
sta idx+1
|
||||
jmp b1
|
||||
//SEG15 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
|
||||
@ -803,12 +803,12 @@ main: {
|
||||
//SEG27 [11] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ( main:2 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ) -- vbuz1=vbuz1_plus_1
|
||||
inc y
|
||||
//SEG28 [12] (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ( main:2 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ) -- vwuz1=vwuz1_plus_vbuc1
|
||||
lda #$28
|
||||
clc
|
||||
adc idx
|
||||
lda idx
|
||||
adc #<$28
|
||||
sta idx
|
||||
lda #0
|
||||
adc idx+1
|
||||
lda idx+1
|
||||
adc #>$28
|
||||
sta idx+1
|
||||
//SEG29 [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ( main:2 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ) -- vbuyy=vbuyy_minus_vbuc1
|
||||
tya
|
||||
@ -843,7 +843,6 @@ Removing instruction jmp b2
|
||||
Removing instruction jmp breturn
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Replacing instruction ldx #0 with TAX
|
||||
Replacing instruction lda #0 with TXA
|
||||
Replacing label b2_from_b1 with b2
|
||||
Replacing label b2_from_b1 with b2
|
||||
Replacing label b1_from_b2 with b1
|
||||
@ -946,9 +945,9 @@ main: {
|
||||
//SEG13 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuxx=vbuc1
|
||||
tax
|
||||
//SEG14 [5] phi (word) main::idx#3 = (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) 40 [phi:main->main::@1#3] -- vwuz1=vbuc1
|
||||
lda #0+0*$28
|
||||
lda #<0+0*$28
|
||||
sta idx
|
||||
txa
|
||||
lda #>0+0*$28
|
||||
sta idx+1
|
||||
//SEG15 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
|
||||
//SEG16 [5] phi (byte) main::y#2 = (byte) main::y#4 [phi:main::@2->main::@1#0] -- register_copy
|
||||
@ -988,12 +987,12 @@ main: {
|
||||
//SEG27 [11] (byte) main::y#1 ← (byte) main::y#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ( main:2 [ main::x#1 main::idx#1 main::e#1 main::y#1 ] ) -- vbuz1=vbuz1_plus_1
|
||||
inc y
|
||||
//SEG28 [12] (word) main::idx#2 ← (word) main::idx#1 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ( main:2 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ) -- vwuz1=vwuz1_plus_vbuc1
|
||||
lda #$28
|
||||
clc
|
||||
adc idx
|
||||
lda idx
|
||||
adc #<$28
|
||||
sta idx
|
||||
lda #0
|
||||
adc idx+1
|
||||
lda idx+1
|
||||
adc #>$28
|
||||
sta idx+1
|
||||
//SEG29 [13] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ( main:2 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ) -- vbuyy=vbuyy_minus_vbuc1
|
||||
tya
|
||||
|
@ -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 param-assignment [ ] ( )
|
||||
to:@end
|
||||
@end: scope:[] from @14
|
||||
@end: scope:[] from @15
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @14
|
||||
main: scope:[main] from @15
|
||||
[4] phi() [ ] ( main:2 [ ] )
|
||||
[5] call print_cls param-assignment [ ] ( main:2 [ ] )
|
||||
to:main::@1
|
||||
|
@ -112,6 +112,15 @@ void print_dword(dword dw) {
|
||||
print_word(<dw);
|
||||
}
|
||||
|
||||
// Print a signed dword as HEX
|
||||
void print_sdword(signed dword dw) {
|
||||
if(dw<0) {
|
||||
print_char('-');
|
||||
dw = -dw;
|
||||
}
|
||||
print_dword((dword)dw);
|
||||
}
|
||||
|
||||
// Print a byte as HEX
|
||||
void print_byte(byte b) {
|
||||
// Table of hexadecimal digits
|
||||
@ -211,6 +220,19 @@ proc (void()) print_dword((dword) print_dword::dw)
|
||||
print_dword::@return:
|
||||
return
|
||||
endproc // print_dword()
|
||||
proc (void()) print_sdword((signed dword) print_sdword::dw)
|
||||
(boolean~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(boolean~) print_sdword::$1 ← ! (boolean~) print_sdword::$0
|
||||
if((boolean~) print_sdword::$1) goto print_sdword::@1
|
||||
(void~) print_sdword::$2 ← call print_char (byte) '-'
|
||||
(signed dword~) print_sdword::$3 ← - (signed dword) print_sdword::dw
|
||||
(signed dword) print_sdword::dw ← (signed dword~) print_sdword::$3
|
||||
print_sdword::@1:
|
||||
(dword~) print_sdword::$4 ← ((dword)) (signed dword) print_sdword::dw
|
||||
(void~) print_sdword::$5 ← call print_dword (dword~) print_sdword::$4
|
||||
print_sdword::@return:
|
||||
return
|
||||
endproc // print_sdword()
|
||||
proc (void()) print_byte((byte) print_byte::b)
|
||||
(byte[]) print_byte::hextab ← (string) "0123456789abcdef"
|
||||
(byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
@ -397,6 +419,16 @@ SYMBOLS
|
||||
(label) print_sbyte::@1
|
||||
(label) print_sbyte::@return
|
||||
(signed byte) print_sbyte::b
|
||||
(void()) print_sdword((signed dword) print_sdword::dw)
|
||||
(boolean~) print_sdword::$0
|
||||
(boolean~) print_sdword::$1
|
||||
(void~) print_sdword::$2
|
||||
(signed dword~) print_sdword::$3
|
||||
(dword~) print_sdword::$4
|
||||
(void~) print_sdword::$5
|
||||
(label) print_sdword::@1
|
||||
(label) print_sdword::@return
|
||||
(signed dword) print_sdword::dw
|
||||
(void()) print_str((byte*) print_str::str)
|
||||
(boolean~) print_str::$0
|
||||
(label) print_str::@1
|
||||
@ -560,6 +592,25 @@ print_dword::@return: scope:[print_dword] from print_dword
|
||||
to:@return
|
||||
@6: scope:[] from @5
|
||||
to:@7
|
||||
print_sdword: scope:[print_sdword] from
|
||||
(boolean~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(boolean~) print_sdword::$1 ← ! (boolean~) print_sdword::$0
|
||||
if((boolean~) print_sdword::$1) goto print_sdword::@1
|
||||
to:print_sdword::@2
|
||||
print_sdword::@1: scope:[print_sdword] from print_sdword print_sdword::@2
|
||||
(dword~) print_sdword::$4 ← ((dword)) (signed dword) print_sdword::dw
|
||||
(void~) print_sdword::$5 ← call print_dword (dword~) print_sdword::$4
|
||||
to:print_sdword::@return
|
||||
print_sdword::@2: scope:[print_sdword] from print_sdword
|
||||
(void~) print_sdword::$2 ← call print_char (byte) '-'
|
||||
(signed dword~) print_sdword::$3 ← - (signed dword) print_sdword::dw
|
||||
(signed dword) print_sdword::dw ← (signed dword~) print_sdword::$3
|
||||
to:print_sdword::@1
|
||||
print_sdword::@return: scope:[print_sdword] from print_sdword::@1
|
||||
return
|
||||
to:@return
|
||||
@7: scope:[] from @6
|
||||
to:@8
|
||||
print_byte: scope:[print_byte] from
|
||||
(byte[]) print_byte::hextab ← (string) "0123456789abcdef"
|
||||
(byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
@ -570,8 +621,8 @@ print_byte: scope:[print_byte] from
|
||||
print_byte::@return: scope:[print_byte] from print_byte
|
||||
return
|
||||
to:@return
|
||||
@7: scope:[] from @6
|
||||
to:@8
|
||||
@8: scope:[] from @7
|
||||
to:@9
|
||||
print_char: scope:[print_char] from
|
||||
*((byte*) char_cursor) ← (byte) print_char::ch
|
||||
(byte*) char_cursor ← ++ (byte*) char_cursor
|
||||
@ -579,8 +630,8 @@ print_char: scope:[print_char] from
|
||||
print_char::@return: scope:[print_char] from print_char
|
||||
return
|
||||
to:@return
|
||||
@8: scope:[] from @7
|
||||
to:@9
|
||||
@9: scope:[] from @8
|
||||
to:@10
|
||||
print_cls: scope:[print_cls] from
|
||||
(byte*) print_cls::sc ← (byte*) SCREEN
|
||||
to:print_cls::@1
|
||||
@ -598,11 +649,11 @@ print_cls::@2: scope:[print_cls] from print_cls::@1
|
||||
print_cls::@return: scope:[print_cls] from print_cls::@2
|
||||
return
|
||||
to:@return
|
||||
@9: scope:[] from @8
|
||||
@10: scope:[] from @9
|
||||
(byte*) BGCOL ← ((byte*)) (word/dword/signed dword) 53281
|
||||
(byte) GREEN ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) RED ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
to:@10
|
||||
to:@11
|
||||
main: scope:[main] from
|
||||
(void~) main::$0 ← call print_cls
|
||||
*((byte*) BGCOL) ← (byte) GREEN
|
||||
@ -612,8 +663,8 @@ main: scope:[main] from
|
||||
main::@return: scope:[main] from main
|
||||
return
|
||||
to:@return
|
||||
@10: scope:[] from @9
|
||||
to:@11
|
||||
@11: scope:[] from @10
|
||||
to:@12
|
||||
test_bytes: scope:[test_bytes] from
|
||||
(byte) test_bytes::bb ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(void~) test_bytes::$0 ← call assert_byte (string) "0=0@" (byte) test_bytes::bb (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
@ -628,8 +679,8 @@ test_bytes: scope:[test_bytes] from
|
||||
test_bytes::@return: scope:[test_bytes] from test_bytes
|
||||
return
|
||||
to:@return
|
||||
@11: scope:[] from @10
|
||||
to:@12
|
||||
@12: scope:[] from @11
|
||||
to:@13
|
||||
assert_byte: scope:[assert_byte] from
|
||||
(void~) assert_byte::$0 ← call print_str (byte*) assert_byte::msg
|
||||
(void~) assert_byte::$1 ← call print_str (string) " @"
|
||||
@ -652,8 +703,8 @@ assert_byte::@4: scope:[assert_byte] from
|
||||
assert_byte::@return: scope:[assert_byte] from assert_byte::@2
|
||||
return
|
||||
to:@return
|
||||
@12: scope:[] from @11
|
||||
to:@13
|
||||
@13: scope:[] from @12
|
||||
to:@14
|
||||
test_sbytes: scope:[test_sbytes] from
|
||||
(signed byte) test_sbytes::bb ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(void~) test_sbytes::$0 ← call assert_sbyte (string) "0=0@" (signed byte) test_sbytes::bb (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
@ -676,8 +727,8 @@ test_sbytes: scope:[test_sbytes] from
|
||||
test_sbytes::@return: scope:[test_sbytes] from test_sbytes
|
||||
return
|
||||
to:@return
|
||||
@13: scope:[] from @12
|
||||
to:@14
|
||||
@14: scope:[] from @13
|
||||
to:@15
|
||||
assert_sbyte: scope:[assert_sbyte] from
|
||||
(void~) assert_sbyte::$0 ← call print_str (byte*) assert_sbyte::msg
|
||||
(void~) assert_sbyte::$1 ← call print_str (string) " @"
|
||||
@ -700,13 +751,14 @@ assert_sbyte::@4: scope:[assert_sbyte] from
|
||||
assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@2
|
||||
return
|
||||
to:@return
|
||||
@14: scope:[] from @13
|
||||
@15: scope:[] from @14
|
||||
call main
|
||||
to:@end
|
||||
@end: scope:[] from @14
|
||||
@end: scope:[] from @15
|
||||
|
||||
Removing unused procedure print_sword
|
||||
Removing unused procedure print_sbyte
|
||||
Removing unused procedure print_sdword
|
||||
Removing unused procedure print_dword
|
||||
Removing unused procedure print_word
|
||||
Removing unused procedure print_byte
|
||||
@ -758,11 +810,12 @@ Removing empty block @5
|
||||
Removing empty block @6
|
||||
Removing empty block @7
|
||||
Removing empty block @8
|
||||
Removing empty block @10
|
||||
Removing empty block @9
|
||||
Removing empty block @11
|
||||
Removing empty block assert_byte::@4
|
||||
Removing empty block @12
|
||||
Removing empty block assert_byte::@4
|
||||
Removing empty block @13
|
||||
Removing empty block @14
|
||||
Removing empty block assert_sbyte::@4
|
||||
PROCEDURE MODIFY VARIABLE ANALYSIS
|
||||
print_str modifies char_cursor
|
||||
@ -794,7 +847,7 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN
|
||||
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
|
||||
(byte*) line_cursor#0 ← (byte*) SCREEN#0
|
||||
(byte*) char_cursor#0 ← (byte*) line_cursor#0
|
||||
to:@9
|
||||
to:@10
|
||||
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*) char_cursor#80 ← phi( assert_byte/(byte*) char_cursor#70 assert_byte::@1/(byte*) char_cursor#71 assert_byte::@3/(byte*) char_cursor#72 assert_byte::@5/(byte*) char_cursor#15 assert_sbyte/(byte*) char_cursor#75 assert_sbyte::@1/(byte*) char_cursor#76 assert_sbyte::@3/(byte*) char_cursor#77 assert_sbyte::@5/(byte*) 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 )
|
||||
@ -862,16 +915,16 @@ print_cls::@return: scope:[print_cls] from print_cls::@2
|
||||
(byte*) char_cursor#6 ← (byte*) char_cursor#38
|
||||
return
|
||||
to:@return
|
||||
@9: scope:[] from @begin
|
||||
@10: scope:[] from @begin
|
||||
(byte*) char_cursor#81 ← phi( @begin/(byte*) char_cursor#0 )
|
||||
(byte*) line_cursor#58 ← phi( @begin/(byte*) line_cursor#0 )
|
||||
(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
|
||||
to:@14
|
||||
main: scope:[main] from @14
|
||||
(byte*) char_cursor#68 ← phi( @14/(byte*) char_cursor#79 )
|
||||
(byte*) line_cursor#48 ← phi( @14/(byte*) line_cursor#53 )
|
||||
to:@15
|
||||
main: scope:[main] from @15
|
||||
(byte*) char_cursor#68 ← phi( @15/(byte*) char_cursor#79 )
|
||||
(byte*) line_cursor#48 ← phi( @15/(byte*) line_cursor#53 )
|
||||
call print_cls param-assignment
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main
|
||||
@ -1165,23 +1218,23 @@ assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@9
|
||||
(byte*) line_cursor#22 ← (byte*) line_cursor#45
|
||||
return
|
||||
to:@return
|
||||
@14: scope:[] from @9
|
||||
(byte*) char_cursor#79 ← phi( @9/(byte*) char_cursor#81 )
|
||||
(byte*) line_cursor#53 ← phi( @9/(byte*) line_cursor#58 )
|
||||
@15: scope:[] from @10
|
||||
(byte*) char_cursor#79 ← phi( @10/(byte*) char_cursor#81 )
|
||||
(byte*) line_cursor#53 ← phi( @10/(byte*) line_cursor#58 )
|
||||
call main param-assignment
|
||||
to:@15
|
||||
@15: scope:[] from @14
|
||||
(byte*) char_cursor#65 ← phi( @14/(byte*) char_cursor#10 )
|
||||
(byte*) line_cursor#46 ← phi( @14/(byte*) line_cursor#8 )
|
||||
to:@16
|
||||
@16: scope:[] from @15
|
||||
(byte*) char_cursor#65 ← phi( @15/(byte*) char_cursor#10 )
|
||||
(byte*) line_cursor#46 ← phi( @15/(byte*) line_cursor#8 )
|
||||
(byte*) line_cursor#23 ← (byte*) line_cursor#46
|
||||
(byte*) char_cursor#33 ← (byte*) char_cursor#65
|
||||
to:@end
|
||||
@end: scope:[] from @15
|
||||
@end: scope:[] from @16
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @14
|
||||
(label) @10
|
||||
(label) @15
|
||||
(label) @9
|
||||
(label) @16
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
@ -1892,7 +1945,7 @@ Constant (const signed byte) assert_sbyte::b#3 = test_sbytes::be#0
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Culled Empty Block (label) print_ln::@2
|
||||
Culled Empty Block (label) print_cls::@2
|
||||
Culled Empty Block (label) @9
|
||||
Culled Empty Block (label) @10
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) test_bytes::@3
|
||||
Culled Empty Block (label) assert_byte::@7
|
||||
@ -1902,7 +1955,7 @@ Culled Empty Block (label) test_sbytes::@5
|
||||
Culled Empty Block (label) assert_sbyte::@7
|
||||
Culled Empty Block (label) assert_sbyte::@8
|
||||
Culled Empty Block (label) assert_sbyte::@9
|
||||
Culled Empty Block (label) @15
|
||||
Culled Empty Block (label) @16
|
||||
Succesful SSA optimization Pass2CullEmptyBlocks
|
||||
Not aliassing across scopes: print_str::str#11 print_str::str#1
|
||||
Not aliassing across scopes: char_cursor#80 char_cursor#70
|
||||
@ -2032,12 +2085,12 @@ Constant inlined print_str::str#8 = (const string) assert_sbyte::str2
|
||||
Constant inlined print_str::str#7 = (const string) assert_sbyte::str1
|
||||
Constant inlined print_str::str#6 = (const string) assert_sbyte::str
|
||||
Succesful SSA optimization Pass2ConstantInlining
|
||||
Block Sequence Planned @begin @14 @end main main::@1 main::@2 main::@return test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 test_sbytes::@return assert_sbyte assert_sbyte::@5 assert_sbyte::@6 assert_sbyte::@3 assert_sbyte::@2 assert_sbyte::@return assert_sbyte::@1 print_str print_str::@1 print_str::@return print_str::@2 print_ln print_ln::@1 print_ln::@return test_bytes test_bytes::@1 test_bytes::@2 test_bytes::@return assert_byte assert_byte::@5 assert_byte::@6 assert_byte::@3 assert_byte::@2 assert_byte::@return assert_byte::@1 print_cls print_cls::@1 print_cls::@return
|
||||
Block Sequence Planned @begin @15 @end main main::@1 main::@2 main::@return test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 test_sbytes::@return assert_sbyte assert_sbyte::@5 assert_sbyte::@6 assert_sbyte::@3 assert_sbyte::@2 assert_sbyte::@return assert_sbyte::@1 print_str print_str::@1 print_str::@return print_str::@2 print_ln print_ln::@1 print_ln::@return test_bytes test_bytes::@1 test_bytes::@2 test_bytes::@return assert_byte assert_byte::@5 assert_byte::@6 assert_byte::@3 assert_byte::@2 assert_byte::@return assert_byte::@1 print_cls print_cls::@1 print_cls::@return
|
||||
Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1)
|
||||
Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1)
|
||||
Block Sequence Planned @begin @14 @end main main::@1 main::@2 main::@return test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 test_sbytes::@return assert_sbyte assert_sbyte::@5 assert_sbyte::@6 assert_sbyte::@3 assert_sbyte::@2 assert_sbyte::@return assert_sbyte::@1 print_str print_str::@1 print_str::@return print_str::@2 print_ln print_ln::@1 print_ln::@return print_ln::@3 test_bytes test_bytes::@1 test_bytes::@2 test_bytes::@return assert_byte assert_byte::@5 assert_byte::@6 assert_byte::@3 assert_byte::@2 assert_byte::@return assert_byte::@1 print_cls print_cls::@1 print_cls::@return print_cls::@3
|
||||
Block Sequence Planned @begin @15 @end main main::@1 main::@2 main::@return test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 test_sbytes::@return assert_sbyte assert_sbyte::@5 assert_sbyte::@6 assert_sbyte::@3 assert_sbyte::@2 assert_sbyte::@return assert_sbyte::@1 print_str print_str::@1 print_str::@return print_str::@2 print_ln print_ln::@1 print_ln::@return print_ln::@3 test_bytes test_bytes::@1 test_bytes::@2 test_bytes::@return assert_byte assert_byte::@5 assert_byte::@6 assert_byte::@3 assert_byte::@2 assert_byte::@return assert_byte::@1 print_cls print_cls::@1 print_cls::@return print_cls::@3
|
||||
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
|
||||
Adding NOP phi() at start of main::@2
|
||||
@ -2093,9 +2146,9 @@ Coalesced [87] print_cls::sc#3 ← print_cls::sc#1
|
||||
Coalesced down to 10 phi equivalence classes
|
||||
Culled Empty Block (label) print_ln::@3
|
||||
Culled Empty Block (label) print_cls::@3
|
||||
Block Sequence Planned @begin @14 @end main main::@1 main::@2 main::@return test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 test_sbytes::@return assert_sbyte assert_sbyte::@5 assert_sbyte::@6 assert_sbyte::@3 assert_sbyte::@2 assert_sbyte::@return assert_sbyte::@1 print_str print_str::@1 print_str::@return print_str::@2 print_ln print_ln::@1 print_ln::@return test_bytes test_bytes::@1 test_bytes::@2 test_bytes::@return assert_byte assert_byte::@5 assert_byte::@6 assert_byte::@3 assert_byte::@2 assert_byte::@return assert_byte::@1 print_cls print_cls::@1 print_cls::@return
|
||||
Block Sequence Planned @begin @15 @end main main::@1 main::@2 main::@return test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 test_sbytes::@return assert_sbyte assert_sbyte::@5 assert_sbyte::@6 assert_sbyte::@3 assert_sbyte::@2 assert_sbyte::@return assert_sbyte::@1 print_str print_str::@1 print_str::@return print_str::@2 print_ln print_ln::@1 print_ln::@return test_bytes test_bytes::@1 test_bytes::@2 test_bytes::@return assert_byte assert_byte::@5 assert_byte::@6 assert_byte::@3 assert_byte::@2 assert_byte::@return assert_byte::@1 print_cls print_cls::@1 print_cls::@return
|
||||
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
|
||||
Adding NOP phi() at start of main::@2
|
||||
@ -2124,14 +2177,14 @@ Propagating live ranges...
|
||||
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 param-assignment [ ] ( )
|
||||
to:@end
|
||||
@end: scope:[] from @14
|
||||
@end: scope:[] from @15
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @14
|
||||
main: scope:[main] from @15
|
||||
[4] phi() [ ] ( main:2 [ ] )
|
||||
[5] call print_cls param-assignment [ ] ( main:2 [ ] )
|
||||
to:main::@1
|
||||
@ -2288,46 +2341,46 @@ print_cls::@return: scope:[print_cls] from print_cls::@1
|
||||
|
||||
DOMINATORS
|
||||
@begin dominated by @begin
|
||||
@14 dominated by @begin @14
|
||||
@end dominated by @end @begin @14
|
||||
main dominated by main @begin @14
|
||||
main::@1 dominated by main main::@1 @begin @14
|
||||
main::@2 dominated by main main::@1 main::@2 @begin @14
|
||||
main::@return dominated by main::@return main main::@1 main::@2 @begin @14
|
||||
test_sbytes dominated by main test_sbytes main::@1 main::@2 @begin @14
|
||||
test_sbytes::@1 dominated by main test_sbytes main::@1 main::@2 @begin @14 test_sbytes::@1
|
||||
test_sbytes::@2 dominated by main test_sbytes main::@1 main::@2 @begin @14 test_sbytes::@1 test_sbytes::@2
|
||||
test_sbytes::@3 dominated by main test_sbytes main::@1 main::@2 @begin @14 test_sbytes::@1 test_sbytes::@2 test_sbytes::@3
|
||||
test_sbytes::@4 dominated by main test_sbytes main::@1 main::@2 @begin @14 test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4
|
||||
test_sbytes::@return dominated by test_sbytes::@return main test_sbytes main::@1 main::@2 @begin @14 test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4
|
||||
assert_sbyte dominated by assert_sbyte main test_sbytes main::@1 main::@2 @begin @14
|
||||
assert_sbyte::@5 dominated by assert_sbyte main test_sbytes main::@1 main::@2 @begin @14 assert_sbyte::@5
|
||||
assert_sbyte::@6 dominated by assert_sbyte main test_sbytes main::@1 main::@2 @begin @14 assert_sbyte::@5 assert_sbyte::@6
|
||||
assert_sbyte::@3 dominated by assert_sbyte main test_sbytes main::@1 main::@2 @begin @14 assert_sbyte::@5 assert_sbyte::@3 assert_sbyte::@6
|
||||
assert_sbyte::@2 dominated by assert_sbyte main test_sbytes main::@1 main::@2 @begin @14 assert_sbyte::@5 assert_sbyte::@2 assert_sbyte::@6
|
||||
assert_sbyte::@return dominated by assert_sbyte assert_sbyte::@return main test_sbytes main::@1 main::@2 @begin @14 assert_sbyte::@5 assert_sbyte::@2 assert_sbyte::@6
|
||||
assert_sbyte::@1 dominated by assert_sbyte main test_sbytes main::@1 main::@2 @begin @14 assert_sbyte::@5 assert_sbyte::@1 assert_sbyte::@6
|
||||
print_str dominated by main main::@1 @begin @14 print_str
|
||||
print_str::@1 dominated by main print_str::@1 main::@1 @begin @14 print_str
|
||||
print_str::@return dominated by print_str::@return main print_str::@1 main::@1 @begin @14 print_str
|
||||
print_str::@2 dominated by main print_str::@1 print_str::@2 main::@1 @begin @14 print_str
|
||||
print_ln dominated by main main::@1 @begin @14 print_ln
|
||||
print_ln::@1 dominated by print_ln::@1 main main::@1 @begin @14 print_ln
|
||||
print_ln::@return dominated by print_ln::@1 main print_ln::@return main::@1 @begin @14 print_ln
|
||||
test_bytes dominated by test_bytes main main::@1 @begin @14
|
||||
test_bytes::@1 dominated by test_bytes main main::@1 @begin @14 test_bytes::@1
|
||||
test_bytes::@2 dominated by test_bytes main main::@1 @begin @14 test_bytes::@2 test_bytes::@1
|
||||
test_bytes::@return dominated by test_bytes main main::@1 @begin @14 test_bytes::@2 test_bytes::@1 test_bytes::@return
|
||||
assert_byte dominated by test_bytes main main::@1 @begin @14 assert_byte
|
||||
assert_byte::@5 dominated by test_bytes main assert_byte::@5 main::@1 @begin @14 assert_byte
|
||||
assert_byte::@6 dominated by test_bytes main assert_byte::@5 assert_byte::@6 main::@1 @begin @14 assert_byte
|
||||
assert_byte::@3 dominated by test_bytes assert_byte::@3 main assert_byte::@5 assert_byte::@6 main::@1 @begin @14 assert_byte
|
||||
assert_byte::@2 dominated by test_bytes main assert_byte::@5 assert_byte::@6 assert_byte::@2 main::@1 @begin @14 assert_byte
|
||||
assert_byte::@return dominated by test_bytes main assert_byte::@5 assert_byte::@6 assert_byte::@2 main::@1 assert_byte::@return @begin @14 assert_byte
|
||||
assert_byte::@1 dominated by test_bytes main assert_byte::@5 assert_byte::@6 assert_byte::@1 main::@1 @begin @14 assert_byte
|
||||
print_cls dominated by main @begin @14 print_cls
|
||||
print_cls::@1 dominated by main @begin @14 print_cls::@1 print_cls
|
||||
print_cls::@return dominated by main print_cls::@return @begin @14 print_cls::@1 print_cls
|
||||
@15 dominated by @begin @15
|
||||
@end dominated by @end @begin @15
|
||||
main dominated by main @begin @15
|
||||
main::@1 dominated by main main::@1 @begin @15
|
||||
main::@2 dominated by main main::@1 main::@2 @begin @15
|
||||
main::@return dominated by main::@return main main::@1 main::@2 @begin @15
|
||||
test_sbytes dominated by main test_sbytes main::@1 main::@2 @begin @15
|
||||
test_sbytes::@1 dominated by main test_sbytes main::@1 main::@2 @begin @15 test_sbytes::@1
|
||||
test_sbytes::@2 dominated by main test_sbytes main::@1 main::@2 @begin @15 test_sbytes::@1 test_sbytes::@2
|
||||
test_sbytes::@3 dominated by main test_sbytes main::@1 main::@2 @begin @15 test_sbytes::@1 test_sbytes::@2 test_sbytes::@3
|
||||
test_sbytes::@4 dominated by main test_sbytes main::@1 main::@2 @begin @15 test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4
|
||||
test_sbytes::@return dominated by test_sbytes::@return main test_sbytes main::@1 main::@2 @begin @15 test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4
|
||||
assert_sbyte dominated by assert_sbyte main test_sbytes main::@1 main::@2 @begin @15
|
||||
assert_sbyte::@5 dominated by assert_sbyte main test_sbytes main::@1 main::@2 @begin @15 assert_sbyte::@5
|
||||
assert_sbyte::@6 dominated by assert_sbyte main test_sbytes main::@1 main::@2 @begin @15 assert_sbyte::@5 assert_sbyte::@6
|
||||
assert_sbyte::@3 dominated by assert_sbyte main test_sbytes main::@1 main::@2 @begin @15 assert_sbyte::@5 assert_sbyte::@3 assert_sbyte::@6
|
||||
assert_sbyte::@2 dominated by assert_sbyte main test_sbytes main::@1 main::@2 @begin @15 assert_sbyte::@5 assert_sbyte::@2 assert_sbyte::@6
|
||||
assert_sbyte::@return dominated by assert_sbyte assert_sbyte::@return main test_sbytes main::@1 main::@2 @begin @15 assert_sbyte::@5 assert_sbyte::@2 assert_sbyte::@6
|
||||
assert_sbyte::@1 dominated by assert_sbyte main test_sbytes main::@1 main::@2 @begin @15 assert_sbyte::@5 assert_sbyte::@1 assert_sbyte::@6
|
||||
print_str dominated by main main::@1 @begin @15 print_str
|
||||
print_str::@1 dominated by main print_str::@1 main::@1 @begin @15 print_str
|
||||
print_str::@return dominated by print_str::@return main print_str::@1 main::@1 @begin @15 print_str
|
||||
print_str::@2 dominated by main print_str::@1 print_str::@2 main::@1 @begin @15 print_str
|
||||
print_ln dominated by main main::@1 @begin @15 print_ln
|
||||
print_ln::@1 dominated by print_ln::@1 main main::@1 @begin @15 print_ln
|
||||
print_ln::@return dominated by print_ln::@1 main print_ln::@return main::@1 @begin @15 print_ln
|
||||
test_bytes dominated by test_bytes main main::@1 @begin @15
|
||||
test_bytes::@1 dominated by test_bytes main main::@1 @begin @15 test_bytes::@1
|
||||
test_bytes::@2 dominated by test_bytes main main::@1 @begin @15 test_bytes::@2 test_bytes::@1
|
||||
test_bytes::@return dominated by test_bytes main main::@1 @begin @15 test_bytes::@2 test_bytes::@1 test_bytes::@return
|
||||
assert_byte dominated by test_bytes main main::@1 @begin @15 assert_byte
|
||||
assert_byte::@5 dominated by test_bytes main assert_byte::@5 main::@1 @begin @15 assert_byte
|
||||
assert_byte::@6 dominated by test_bytes main assert_byte::@5 assert_byte::@6 main::@1 @begin @15 assert_byte
|
||||
assert_byte::@3 dominated by test_bytes assert_byte::@3 main assert_byte::@5 assert_byte::@6 main::@1 @begin @15 assert_byte
|
||||
assert_byte::@2 dominated by test_bytes main assert_byte::@5 assert_byte::@6 assert_byte::@2 main::@1 @begin @15 assert_byte
|
||||
assert_byte::@return dominated by test_bytes main assert_byte::@5 assert_byte::@6 assert_byte::@2 main::@1 assert_byte::@return @begin @15 assert_byte
|
||||
assert_byte::@1 dominated by test_bytes main assert_byte::@5 assert_byte::@6 assert_byte::@1 main::@1 @begin @15 assert_byte
|
||||
print_cls dominated by main @begin @15 print_cls
|
||||
print_cls::@1 dominated by main @begin @15 print_cls::@1 print_cls
|
||||
print_cls::@return dominated by main print_cls::@return @begin @15 print_cls::@1 print_cls
|
||||
|
||||
NATURAL LOOPS
|
||||
Found back edge: Loop head: print_str::@1 tails: print_str::@2 blocks: null
|
||||
@ -2461,17 +2514,17 @@ INITIAL ASM
|
||||
.label line_cursor = $a
|
||||
//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 param-assignment [ ] ( )
|
||||
//SEG6 [4] phi from @14 to main [phi:@14->main]
|
||||
main_from_b14:
|
||||
//SEG6 [4] phi from @15 to main [phi:@15->main]
|
||||
main_from_b15:
|
||||
jsr main
|
||||
//SEG7 [3] phi from @14 to @end [phi:@14->@end]
|
||||
bend_from_b14:
|
||||
//SEG7 [3] phi from @15 to @end [phi:@15->@end]
|
||||
bend_from_b15:
|
||||
jmp bend
|
||||
//SEG8 @end
|
||||
bend:
|
||||
@ -3099,17 +3152,17 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.label line_cursor = 7
|
||||
//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 param-assignment [ ] ( )
|
||||
//SEG6 [4] phi from @14 to main [phi:@14->main]
|
||||
main_from_b14:
|
||||
//SEG6 [4] phi from @15 to main [phi:@15->main]
|
||||
main_from_b15:
|
||||
jsr main
|
||||
//SEG7 [3] phi from @14 to @end [phi:@14->@end]
|
||||
bend_from_b14:
|
||||
//SEG7 [3] phi from @15 to @end [phi:@15->@end]
|
||||
bend_from_b15:
|
||||
jmp bend
|
||||
//SEG8 @end
|
||||
bend:
|
||||
@ -3626,7 +3679,7 @@ print_cls: {
|
||||
}
|
||||
|
||||
ASSEMBLER OPTIMIZATIONS
|
||||
Removing instruction jmp b14
|
||||
Removing instruction jmp b15
|
||||
Removing instruction jmp bend
|
||||
Removing instruction jmp b1
|
||||
Removing instruction jmp b2
|
||||
@ -3670,9 +3723,9 @@ Replacing label b2_from_b1 with b2
|
||||
Replacing label b1_from_b1 with b1
|
||||
Replacing label b1_from_b1 with b1
|
||||
Removing instruction bbegin:
|
||||
Removing instruction b14_from_bbegin:
|
||||
Removing instruction main_from_b14:
|
||||
Removing instruction bend_from_b14:
|
||||
Removing instruction b15_from_bbegin:
|
||||
Removing instruction main_from_b15:
|
||||
Removing instruction bend_from_b15:
|
||||
Removing instruction b2_from_b1:
|
||||
Removing instruction test_sbytes_from_b2:
|
||||
Removing instruction b1_from_test_sbytes:
|
||||
@ -3703,7 +3756,7 @@ Removing instruction b1_from_b6:
|
||||
Removing instruction print_str_from_b1:
|
||||
Removing instruction b1_from_b1:
|
||||
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||
Removing instruction b14:
|
||||
Removing instruction b15:
|
||||
Removing instruction bend:
|
||||
Removing instruction print_cls_from_main:
|
||||
Removing instruction b1:
|
||||
@ -3743,7 +3796,7 @@ Removing instruction jmp b1
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(label) @14
|
||||
(label) @15
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
@ -3880,12 +3933,12 @@ Score: 1846
|
||||
.label char_cursor = 5
|
||||
.label line_cursor = 7
|
||||
//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 param-assignment [ ] ( )
|
||||
//SEG6 [4] phi from @14 to main [phi:@14->main]
|
||||
//SEG6 [4] phi from @15 to main [phi:@15->main]
|
||||
jsr main
|
||||
//SEG7 [3] phi from @14 to @end [phi:@14->@end]
|
||||
//SEG7 [3] phi from @15 to @end [phi:@15->@end]
|
||||
//SEG8 @end
|
||||
//SEG9 main
|
||||
main: {
|
||||
|
@ -1,4 +1,4 @@
|
||||
(label) @14
|
||||
(label) @15
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
|
@ -1,13 +1,13 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi() [ ] ( )
|
||||
to:@10
|
||||
@10: scope:[] from @begin
|
||||
to:@11
|
||||
@11: scope:[] from @begin
|
||||
[1] phi() [ ] ( )
|
||||
[2] call main param-assignment [ ] ( )
|
||||
to:@end
|
||||
@end: scope:[] from @10
|
||||
@end: scope:[] from @11
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @10
|
||||
main: scope:[main] from @11
|
||||
[4] phi() [ ] ( main:2 [ ] )
|
||||
[5] call print_cls param-assignment [ ] ( main:2 [ ] )
|
||||
to:main::@1
|
||||
|
@ -65,6 +65,15 @@ void print_dword(dword dw) {
|
||||
print_word(<dw);
|
||||
}
|
||||
|
||||
// Print a signed dword as HEX
|
||||
void print_sdword(signed dword dw) {
|
||||
if(dw<0) {
|
||||
print_char('-');
|
||||
dw = -dw;
|
||||
}
|
||||
print_dword((dword)dw);
|
||||
}
|
||||
|
||||
// Print a byte as HEX
|
||||
void print_byte(byte b) {
|
||||
// Table of hexadecimal digits
|
||||
@ -165,6 +174,19 @@ proc (void()) print_dword((dword) print_dword::dw)
|
||||
print_dword::@return:
|
||||
return
|
||||
endproc // print_dword()
|
||||
proc (void()) print_sdword((signed dword) print_sdword::dw)
|
||||
(boolean~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(boolean~) print_sdword::$1 ← ! (boolean~) print_sdword::$0
|
||||
if((boolean~) print_sdword::$1) goto print_sdword::@1
|
||||
(void~) print_sdword::$2 ← call print_char (byte) '-'
|
||||
(signed dword~) print_sdword::$3 ← - (signed dword) print_sdword::dw
|
||||
(signed dword) print_sdword::dw ← (signed dword~) print_sdword::$3
|
||||
print_sdword::@1:
|
||||
(dword~) print_sdword::$4 ← ((dword)) (signed dword) print_sdword::dw
|
||||
(void~) print_sdword::$5 ← call print_dword (dword~) print_sdword::$4
|
||||
print_sdword::@return:
|
||||
return
|
||||
endproc // print_sdword()
|
||||
proc (void()) print_byte((byte) print_byte::b)
|
||||
(byte[]) print_byte::hextab ← (string) "0123456789abcdef"
|
||||
(byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
@ -260,6 +282,16 @@ SYMBOLS
|
||||
(label) print_sbyte::@1
|
||||
(label) print_sbyte::@return
|
||||
(signed byte) print_sbyte::b
|
||||
(void()) print_sdword((signed dword) print_sdword::dw)
|
||||
(boolean~) print_sdword::$0
|
||||
(boolean~) print_sdword::$1
|
||||
(void~) print_sdword::$2
|
||||
(signed dword~) print_sdword::$3
|
||||
(dword~) print_sdword::$4
|
||||
(void~) print_sdword::$5
|
||||
(label) print_sdword::@1
|
||||
(label) print_sdword::@return
|
||||
(signed dword) print_sdword::dw
|
||||
(void()) print_str((byte*) print_str::str)
|
||||
(boolean~) print_str::$0
|
||||
(label) print_str::@1
|
||||
@ -393,6 +425,25 @@ print_dword::@return: scope:[print_dword] from print_dword
|
||||
to:@return
|
||||
@6: scope:[] from @5
|
||||
to:@7
|
||||
print_sdword: scope:[print_sdword] from
|
||||
(boolean~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(boolean~) print_sdword::$1 ← ! (boolean~) print_sdword::$0
|
||||
if((boolean~) print_sdword::$1) goto print_sdword::@1
|
||||
to:print_sdword::@2
|
||||
print_sdword::@1: scope:[print_sdword] from print_sdword print_sdword::@2
|
||||
(dword~) print_sdword::$4 ← ((dword)) (signed dword) print_sdword::dw
|
||||
(void~) print_sdword::$5 ← call print_dword (dword~) print_sdword::$4
|
||||
to:print_sdword::@return
|
||||
print_sdword::@2: scope:[print_sdword] from print_sdword
|
||||
(void~) print_sdword::$2 ← call print_char (byte) '-'
|
||||
(signed dword~) print_sdword::$3 ← - (signed dword) print_sdword::dw
|
||||
(signed dword) print_sdword::dw ← (signed dword~) print_sdword::$3
|
||||
to:print_sdword::@1
|
||||
print_sdword::@return: scope:[print_sdword] from print_sdword::@1
|
||||
return
|
||||
to:@return
|
||||
@7: scope:[] from @6
|
||||
to:@8
|
||||
print_byte: scope:[print_byte] from
|
||||
(byte[]) print_byte::hextab ← (string) "0123456789abcdef"
|
||||
(byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
@ -403,8 +454,8 @@ print_byte: scope:[print_byte] from
|
||||
print_byte::@return: scope:[print_byte] from print_byte
|
||||
return
|
||||
to:@return
|
||||
@7: scope:[] from @6
|
||||
to:@8
|
||||
@8: scope:[] from @7
|
||||
to:@9
|
||||
print_char: scope:[print_char] from
|
||||
*((byte*) char_cursor) ← (byte) print_char::ch
|
||||
(byte*) char_cursor ← ++ (byte*) char_cursor
|
||||
@ -412,8 +463,8 @@ print_char: scope:[print_char] from
|
||||
print_char::@return: scope:[print_char] from print_char
|
||||
return
|
||||
to:@return
|
||||
@8: scope:[] from @7
|
||||
to:@9
|
||||
@9: scope:[] from @8
|
||||
to:@10
|
||||
print_cls: scope:[print_cls] from
|
||||
(byte*) print_cls::sc ← (byte*) SCREEN
|
||||
to:print_cls::@1
|
||||
@ -431,9 +482,9 @@ print_cls::@2: scope:[print_cls] from print_cls::@1
|
||||
print_cls::@return: scope:[print_cls] from print_cls::@2
|
||||
return
|
||||
to:@return
|
||||
@9: scope:[] from @8
|
||||
@10: scope:[] from @9
|
||||
(byte[]) txt ← (string) "camelot@"
|
||||
to:@10
|
||||
to:@11
|
||||
main: scope:[main] from
|
||||
(void~) main::$0 ← call print_cls
|
||||
(byte) main::i ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
@ -451,13 +502,14 @@ main::@2: scope:[main] from main::@1
|
||||
main::@return: scope:[main] from main::@2
|
||||
return
|
||||
to:@return
|
||||
@10: scope:[] from @9
|
||||
@11: scope:[] from @10
|
||||
call main
|
||||
to:@end
|
||||
@end: scope:[] from @10
|
||||
@end: scope:[] from @11
|
||||
|
||||
Removing unused procedure print_sword
|
||||
Removing unused procedure print_sbyte
|
||||
Removing unused procedure print_sdword
|
||||
Removing unused procedure print_dword
|
||||
Removing unused procedure print_word
|
||||
Removing unused procedure print_byte
|
||||
@ -478,6 +530,7 @@ Removing empty block @5
|
||||
Removing empty block @6
|
||||
Removing empty block @7
|
||||
Removing empty block @8
|
||||
Removing empty block @9
|
||||
Removing empty block main::@2
|
||||
PROCEDURE MODIFY VARIABLE ANALYSIS
|
||||
print_str modifies char_cursor
|
||||
@ -497,7 +550,7 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN
|
||||
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
|
||||
(byte*) line_cursor#0 ← (byte*) SCREEN#0
|
||||
(byte*) char_cursor#0 ← (byte*) line_cursor#0
|
||||
to:@9
|
||||
to:@10
|
||||
print_str: scope:[print_str] from main::@1
|
||||
(byte*) char_cursor#27 ← phi( main::@1/(byte*) char_cursor#25 )
|
||||
(byte*) print_str::str#4 ← phi( main::@1/(byte*) print_str::str#1 )
|
||||
@ -565,14 +618,14 @@ print_cls::@return: scope:[print_cls] from print_cls::@2
|
||||
(byte*) char_cursor#6 ← (byte*) char_cursor#16
|
||||
return
|
||||
to:@return
|
||||
@9: scope:[] from @begin
|
||||
@10: scope:[] from @begin
|
||||
(byte*) char_cursor#28 ← phi( @begin/(byte*) char_cursor#0 )
|
||||
(byte*) line_cursor#22 ← phi( @begin/(byte*) line_cursor#0 )
|
||||
(byte[]) txt#0 ← (const string) $0
|
||||
to:@10
|
||||
main: scope:[main] from @10
|
||||
(byte*) char_cursor#24 ← phi( @10/(byte*) char_cursor#26 )
|
||||
(byte*) line_cursor#18 ← phi( @10/(byte*) line_cursor#20 )
|
||||
to:@11
|
||||
main: scope:[main] from @11
|
||||
(byte*) char_cursor#24 ← phi( @11/(byte*) char_cursor#26 )
|
||||
(byte*) line_cursor#18 ← phi( @11/(byte*) line_cursor#20 )
|
||||
call print_cls param-assignment
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main
|
||||
@ -614,24 +667,24 @@ main::@return: scope:[main] from main::@5
|
||||
(byte*) char_cursor#10 ← (byte*) char_cursor#20
|
||||
return
|
||||
to:@return
|
||||
@10: scope:[] from @9
|
||||
(byte*) char_cursor#26 ← phi( @9/(byte*) char_cursor#28 )
|
||||
(byte*) line_cursor#20 ← phi( @9/(byte*) line_cursor#22 )
|
||||
call main param-assignment
|
||||
to:@11
|
||||
@11: scope:[] from @10
|
||||
(byte*) char_cursor#21 ← phi( @10/(byte*) char_cursor#10 )
|
||||
(byte*) line_cursor#16 ← phi( @10/(byte*) line_cursor#7 )
|
||||
(byte*) char_cursor#26 ← phi( @10/(byte*) char_cursor#28 )
|
||||
(byte*) line_cursor#20 ← phi( @10/(byte*) line_cursor#22 )
|
||||
call main param-assignment
|
||||
to:@12
|
||||
@12: scope:[] from @11
|
||||
(byte*) char_cursor#21 ← phi( @11/(byte*) char_cursor#10 )
|
||||
(byte*) line_cursor#16 ← phi( @11/(byte*) line_cursor#7 )
|
||||
(byte*) line_cursor#8 ← (byte*) line_cursor#16
|
||||
(byte*) char_cursor#11 ← (byte*) char_cursor#21
|
||||
to:@end
|
||||
@end: scope:[] from @11
|
||||
@end: scope:[] from @12
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(const string) $0 = (string) "camelot@"
|
||||
(label) @10
|
||||
(label) @11
|
||||
(label) @9
|
||||
(label) @12
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) SCREEN
|
||||
@ -817,9 +870,9 @@ Consolidated array index constant in *(txt#0+1)
|
||||
Succesful SSA optimization Pass2ConstantAdditionElimination
|
||||
Culled Empty Block (label) print_ln::@2
|
||||
Culled Empty Block (label) print_cls::@2
|
||||
Culled Empty Block (label) @9
|
||||
Culled Empty Block (label) @10
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) @11
|
||||
Culled Empty Block (label) @12
|
||||
Succesful SSA optimization Pass2CullEmptyBlocks
|
||||
Not aliassing across scopes: char_cursor#12 char_cursor#25
|
||||
Not aliassing across scopes: line_cursor#9 line_cursor#19
|
||||
@ -842,13 +895,13 @@ Constant inlined print_cls::$0 = (const byte*) SCREEN#0+(word/signed word/dword/
|
||||
Constant inlined print_cls::sc#0 = (const byte*) SCREEN#0
|
||||
Constant inlined $0 = (const string) txt#0
|
||||
Succesful SSA optimization Pass2ConstantInlining
|
||||
Block Sequence Planned @begin @10 @end main main::@1 main::@4 main::@5 main::@return print_ln print_ln::@1 print_ln::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return
|
||||
Block Sequence Planned @begin @11 @end main main::@1 main::@4 main::@5 main::@return print_ln print_ln::@1 print_ln::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return
|
||||
Added new block during phi lifting main::@6(between main::@5 and main::@1)
|
||||
Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1)
|
||||
Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1)
|
||||
Block Sequence Planned @begin @10 @end main main::@1 main::@4 main::@5 main::@return main::@6 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return print_cls::@3
|
||||
Block Sequence Planned @begin @11 @end main main::@1 main::@4 main::@5 main::@return main::@6 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return print_cls::@3
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @10
|
||||
Adding NOP phi() at start of @11
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@4
|
||||
@ -877,9 +930,9 @@ Coalesced [38] print_cls::sc#3 ← print_cls::sc#1
|
||||
Coalesced down to 5 phi equivalence classes
|
||||
Culled Empty Block (label) print_ln::@3
|
||||
Culled Empty Block (label) print_cls::@3
|
||||
Block Sequence Planned @begin @10 @end main main::@1 main::@4 main::@5 main::@return main::@6 print_ln print_ln::@1 print_ln::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return
|
||||
Block Sequence Planned @begin @11 @end main main::@1 main::@4 main::@5 main::@return main::@6 print_ln print_ln::@1 print_ln::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @10
|
||||
Adding NOP phi() at start of @11
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@4
|
||||
@ -897,14 +950,14 @@ Propagating live ranges...
|
||||
FINAL CONTROL FLOW GRAPH
|
||||
@begin: scope:[] from
|
||||
[0] phi() [ ] ( )
|
||||
to:@10
|
||||
@10: scope:[] from @begin
|
||||
to:@11
|
||||
@11: scope:[] from @begin
|
||||
[1] phi() [ ] ( )
|
||||
[2] call main param-assignment [ ] ( )
|
||||
to:@end
|
||||
@end: scope:[] from @10
|
||||
@end: scope:[] from @11
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @10
|
||||
main: scope:[main] from @11
|
||||
[4] phi() [ ] ( main:2 [ ] )
|
||||
[5] call print_cls param-assignment [ ] ( main:2 [ ] )
|
||||
to:main::@1
|
||||
@ -971,24 +1024,24 @@ print_cls::@return: scope:[print_cls] from print_cls::@1
|
||||
|
||||
DOMINATORS
|
||||
@begin dominated by @begin
|
||||
@10 dominated by @begin @10
|
||||
@end dominated by @begin @end @10
|
||||
main dominated by @begin main @10
|
||||
main::@1 dominated by @begin main main::@1 @10
|
||||
main::@4 dominated by @begin main main::@1 @10 main::@4
|
||||
main::@5 dominated by @begin main main::@1 main::@5 @10 main::@4
|
||||
main::@return dominated by main::@return @begin main main::@1 main::@5 @10 main::@4
|
||||
main::@6 dominated by @begin main main::@1 main::@5 main::@6 @10 main::@4
|
||||
print_ln dominated by @begin main print_ln main::@1 @10 main::@4
|
||||
print_ln::@1 dominated by print_ln::@1 @begin main print_ln main::@1 @10 main::@4
|
||||
print_ln::@return dominated by print_ln::@1 @begin main print_ln print_ln::@return main::@1 @10 main::@4
|
||||
print_str dominated by @begin main print_str main::@1 @10
|
||||
print_str::@1 dominated by @begin main print_str::@1 print_str main::@1 @10
|
||||
print_str::@return dominated by @begin print_str::@return main print_str::@1 print_str main::@1 @10
|
||||
print_str::@2 dominated by @begin main print_str::@1 print_str::@2 print_str main::@1 @10
|
||||
print_cls dominated by @begin main print_cls @10
|
||||
print_cls::@1 dominated by @begin print_cls::@1 main print_cls @10
|
||||
print_cls::@return dominated by @begin print_cls::@1 main print_cls print_cls::@return @10
|
||||
@11 dominated by @11 @begin
|
||||
@end dominated by @11 @begin @end
|
||||
main dominated by @11 @begin main
|
||||
main::@1 dominated by @11 @begin main main::@1
|
||||
main::@4 dominated by @11 @begin main main::@1 main::@4
|
||||
main::@5 dominated by @11 @begin main main::@1 main::@5 main::@4
|
||||
main::@return dominated by @11 main::@return @begin main main::@1 main::@5 main::@4
|
||||
main::@6 dominated by @11 @begin main main::@1 main::@5 main::@6 main::@4
|
||||
print_ln dominated by @11 @begin main print_ln main::@1 main::@4
|
||||
print_ln::@1 dominated by @11 print_ln::@1 @begin main print_ln main::@1 main::@4
|
||||
print_ln::@return dominated by @11 print_ln::@1 @begin main print_ln print_ln::@return main::@1 main::@4
|
||||
print_str dominated by @11 @begin main print_str main::@1
|
||||
print_str::@1 dominated by @11 @begin main print_str::@1 print_str main::@1
|
||||
print_str::@return dominated by @11 @begin print_str::@return main print_str::@1 print_str main::@1
|
||||
print_str::@2 dominated by @11 @begin main print_str::@1 print_str::@2 print_str main::@1
|
||||
print_cls dominated by @11 @begin main print_cls
|
||||
print_cls::@1 dominated by @11 @begin print_cls::@1 main print_cls
|
||||
print_cls::@return dominated by @11 @begin print_cls::@1 main print_cls print_cls::@return
|
||||
|
||||
NATURAL LOOPS
|
||||
Found back edge: Loop head: main::@1 tails: main::@6 blocks: null
|
||||
@ -1075,17 +1128,17 @@ INITIAL ASM
|
||||
.label line_cursor = 3
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @10 [phi:@begin->@10]
|
||||
b10_from_bbegin:
|
||||
jmp b10
|
||||
//SEG4 @10
|
||||
b10:
|
||||
//SEG3 [1] phi from @begin to @11 [phi:@begin->@11]
|
||||
b11_from_bbegin:
|
||||
jmp b11
|
||||
//SEG4 @11
|
||||
b11:
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
//SEG6 [4] phi from @10 to main [phi:@10->main]
|
||||
main_from_b10:
|
||||
//SEG6 [4] phi from @11 to main [phi:@11->main]
|
||||
main_from_b11:
|
||||
jsr main
|
||||
//SEG7 [3] phi from @10 to @end [phi:@10->@end]
|
||||
bend_from_b10:
|
||||
//SEG7 [3] phi from @11 to @end [phi:@11->@end]
|
||||
bend_from_b11:
|
||||
jmp bend
|
||||
//SEG8 @end
|
||||
bend:
|
||||
@ -1333,17 +1386,17 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.label line_cursor = 2
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @10 [phi:@begin->@10]
|
||||
b10_from_bbegin:
|
||||
jmp b10
|
||||
//SEG4 @10
|
||||
b10:
|
||||
//SEG3 [1] phi from @begin to @11 [phi:@begin->@11]
|
||||
b11_from_bbegin:
|
||||
jmp b11
|
||||
//SEG4 @11
|
||||
b11:
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
//SEG6 [4] phi from @10 to main [phi:@10->main]
|
||||
main_from_b10:
|
||||
//SEG6 [4] phi from @11 to main [phi:@11->main]
|
||||
main_from_b11:
|
||||
jsr main
|
||||
//SEG7 [3] phi from @10 to @end [phi:@10->@end]
|
||||
bend_from_b10:
|
||||
//SEG7 [3] phi from @11 to @end [phi:@11->@end]
|
||||
bend_from_b11:
|
||||
jmp bend
|
||||
//SEG8 @end
|
||||
bend:
|
||||
@ -1536,7 +1589,7 @@ print_cls: {
|
||||
txt: .text "camelot@"
|
||||
|
||||
ASSEMBLER OPTIMIZATIONS
|
||||
Removing instruction jmp b10
|
||||
Removing instruction jmp b11
|
||||
Removing instruction jmp bend
|
||||
Removing instruction jmp b1
|
||||
Removing instruction jmp b4
|
||||
@ -1556,9 +1609,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 b10_from_bbegin:
|
||||
Removing instruction main_from_b10:
|
||||
Removing instruction bend_from_b10:
|
||||
Removing instruction b11_from_bbegin:
|
||||
Removing instruction main_from_b11:
|
||||
Removing instruction bend_from_b11:
|
||||
Removing instruction print_str_from_b1:
|
||||
Removing instruction b4_from_b1:
|
||||
Removing instruction print_ln_from_b4:
|
||||
@ -1566,7 +1619,7 @@ Removing instruction b1_from_print_ln:
|
||||
Removing instruction b1_from_b1:
|
||||
Removing instruction b1_from_b1:
|
||||
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||
Removing instruction b10:
|
||||
Removing instruction b11:
|
||||
Removing instruction bend:
|
||||
Removing instruction print_cls_from_main:
|
||||
Removing instruction b1_from_main:
|
||||
@ -1585,7 +1638,7 @@ Removing instruction jmp b1
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(label) @10
|
||||
(label) @11
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) SCREEN
|
||||
@ -1645,12 +1698,12 @@ Score: 11128
|
||||
.label char_cursor = 6
|
||||
.label line_cursor = 2
|
||||
//SEG2 @begin
|
||||
//SEG3 [1] phi from @begin to @10 [phi:@begin->@10]
|
||||
//SEG4 @10
|
||||
//SEG3 [1] phi from @begin to @11 [phi:@begin->@11]
|
||||
//SEG4 @11
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
//SEG6 [4] phi from @10 to main [phi:@10->main]
|
||||
//SEG6 [4] phi from @11 to main [phi:@11->main]
|
||||
jsr main
|
||||
//SEG7 [3] phi from @10 to @end [phi:@10->@end]
|
||||
//SEG7 [3] phi from @11 to @end [phi:@11->@end]
|
||||
//SEG8 @end
|
||||
//SEG9 main
|
||||
main: {
|
||||
|
@ -1,4 +1,4 @@
|
||||
(label) @10
|
||||
(label) @11
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) SCREEN
|
||||
|
@ -5,11 +5,11 @@
|
||||
.label w2 = 2
|
||||
jsr main
|
||||
main: {
|
||||
lda #0
|
||||
lda #<0
|
||||
sta w1
|
||||
sta w1+1
|
||||
jsr incw1
|
||||
lda #0
|
||||
lda #<0
|
||||
sta w2
|
||||
sta w2+1
|
||||
jsr incw2
|
||||
|
@ -442,9 +442,9 @@ main: {
|
||||
//SEG11 [16] phi from main to incw1 [phi:main->incw1]
|
||||
incw1_from_main:
|
||||
//SEG12 [16] phi (word) w1#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->incw1#0] -- vwuz1=vbuc1
|
||||
lda #0
|
||||
lda #<0
|
||||
sta w1
|
||||
lda #0
|
||||
lda #>0
|
||||
sta w1+1
|
||||
jsr incw1
|
||||
//SEG13 [6] phi from main to main::@1 [phi:main->main::@1]
|
||||
@ -456,9 +456,9 @@ main: {
|
||||
//SEG16 [13] phi from main::@1 to incw2 [phi:main::@1->incw2]
|
||||
incw2_from_b1:
|
||||
//SEG17 [13] phi (word) w2#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->incw2#0] -- vwuz1=vbuc1
|
||||
lda #0
|
||||
lda #<0
|
||||
sta w2
|
||||
lda #0
|
||||
lda #>0
|
||||
sta w2+1
|
||||
jsr incw2
|
||||
//SEG18 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
|
||||
@ -559,9 +559,9 @@ main: {
|
||||
//SEG11 [16] phi from main to incw1 [phi:main->incw1]
|
||||
incw1_from_main:
|
||||
//SEG12 [16] phi (word) w1#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->incw1#0] -- vwuz1=vbuc1
|
||||
lda #0
|
||||
lda #<0
|
||||
sta w1
|
||||
lda #0
|
||||
lda #>0
|
||||
sta w1+1
|
||||
jsr incw1
|
||||
//SEG13 [6] phi from main to main::@1 [phi:main->main::@1]
|
||||
@ -573,9 +573,9 @@ main: {
|
||||
//SEG16 [13] phi from main::@1 to incw2 [phi:main::@1->incw2]
|
||||
incw2_from_b1:
|
||||
//SEG17 [13] phi (word) w2#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->incw2#0] -- vwuz1=vbuc1
|
||||
lda #0
|
||||
lda #<0
|
||||
sta w2
|
||||
lda #0
|
||||
lda #>0
|
||||
sta w2+1
|
||||
jsr incw2
|
||||
//SEG18 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
|
||||
@ -641,8 +641,8 @@ Removing instruction jmp breturn
|
||||
Removing instruction jmp breturn
|
||||
Removing instruction jmp breturn
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Removing instruction lda #0
|
||||
Removing instruction lda #0
|
||||
Removing instruction lda #>0
|
||||
Removing instruction lda #>0
|
||||
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
||||
Removing instruction bbegin:
|
||||
Removing instruction b3_from_bbegin:
|
||||
@ -713,7 +713,7 @@ main: {
|
||||
//SEG10 [5] call incw1 param-assignment [ w1#11 ] ( main:2 [ w1#11 ] )
|
||||
//SEG11 [16] phi from main to incw1 [phi:main->incw1]
|
||||
//SEG12 [16] phi (word) w1#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->incw1#0] -- vwuz1=vbuc1
|
||||
lda #0
|
||||
lda #<0
|
||||
sta w1
|
||||
sta w1+1
|
||||
jsr incw1
|
||||
@ -722,7 +722,7 @@ main: {
|
||||
//SEG15 [7] call incw2 param-assignment [ w2#11 w1#11 ] ( main:2 [ w2#11 w1#11 ] )
|
||||
//SEG16 [13] phi from main::@1 to incw2 [phi:main::@1->incw2]
|
||||
//SEG17 [13] phi (word) w2#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->incw2#0] -- vwuz1=vbuc1
|
||||
lda #0
|
||||
lda #<0
|
||||
sta w2
|
||||
sta w2+1
|
||||
jsr incw2
|
||||
|
@ -1,13 +1,13 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi() [ ] ( )
|
||||
to:@10
|
||||
@10: scope:[] from @begin
|
||||
to:@11
|
||||
@11: scope:[] from @begin
|
||||
[1] phi() [ ] ( )
|
||||
[2] call main param-assignment [ ] ( )
|
||||
to:@end
|
||||
@end: scope:[] from @10
|
||||
@end: scope:[] from @11
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @10
|
||||
main: scope:[main] from @11
|
||||
[4] phi() [ ] ( main:2 [ ] )
|
||||
[5] call print_str param-assignment [ char_cursor#13 ] ( main:2 [ char_cursor#13 ] )
|
||||
to:main::@1
|
||||
|
@ -67,6 +67,15 @@ void print_dword(dword dw) {
|
||||
print_word(<dw);
|
||||
}
|
||||
|
||||
// Print a signed dword as HEX
|
||||
void print_sdword(signed dword dw) {
|
||||
if(dw<0) {
|
||||
print_char('-');
|
||||
dw = -dw;
|
||||
}
|
||||
print_dword((dword)dw);
|
||||
}
|
||||
|
||||
// Print a byte as HEX
|
||||
void print_byte(byte b) {
|
||||
// Table of hexadecimal digits
|
||||
@ -166,6 +175,19 @@ proc (void()) print_dword((dword) print_dword::dw)
|
||||
print_dword::@return:
|
||||
return
|
||||
endproc // print_dword()
|
||||
proc (void()) print_sdword((signed dword) print_sdword::dw)
|
||||
(boolean~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(boolean~) print_sdword::$1 ← ! (boolean~) print_sdword::$0
|
||||
if((boolean~) print_sdword::$1) goto print_sdword::@1
|
||||
(void~) print_sdword::$2 ← call print_char (byte) '-'
|
||||
(signed dword~) print_sdword::$3 ← - (signed dword) print_sdword::dw
|
||||
(signed dword) print_sdword::dw ← (signed dword~) print_sdword::$3
|
||||
print_sdword::@1:
|
||||
(dword~) print_sdword::$4 ← ((dword)) (signed dword) print_sdword::dw
|
||||
(void~) print_sdword::$5 ← call print_dword (dword~) print_sdword::$4
|
||||
print_sdword::@return:
|
||||
return
|
||||
endproc // print_sdword()
|
||||
proc (void()) print_byte((byte) print_byte::b)
|
||||
(byte[]) print_byte::hextab ← (string) "0123456789abcdef"
|
||||
(byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
@ -263,6 +285,16 @@ SYMBOLS
|
||||
(label) print_sbyte::@1
|
||||
(label) print_sbyte::@return
|
||||
(signed byte) print_sbyte::b
|
||||
(void()) print_sdword((signed dword) print_sdword::dw)
|
||||
(boolean~) print_sdword::$0
|
||||
(boolean~) print_sdword::$1
|
||||
(void~) print_sdword::$2
|
||||
(signed dword~) print_sdword::$3
|
||||
(dword~) print_sdword::$4
|
||||
(void~) print_sdword::$5
|
||||
(label) print_sdword::@1
|
||||
(label) print_sdword::@return
|
||||
(signed dword) print_sdword::dw
|
||||
(void()) print_str((byte*) print_str::str)
|
||||
(boolean~) print_str::$0
|
||||
(label) print_str::@1
|
||||
@ -395,6 +427,25 @@ print_dword::@return: scope:[print_dword] from print_dword
|
||||
to:@return
|
||||
@6: scope:[] from @5
|
||||
to:@7
|
||||
print_sdword: scope:[print_sdword] from
|
||||
(boolean~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(boolean~) print_sdword::$1 ← ! (boolean~) print_sdword::$0
|
||||
if((boolean~) print_sdword::$1) goto print_sdword::@1
|
||||
to:print_sdword::@2
|
||||
print_sdword::@1: scope:[print_sdword] from print_sdword print_sdword::@2
|
||||
(dword~) print_sdword::$4 ← ((dword)) (signed dword) print_sdword::dw
|
||||
(void~) print_sdword::$5 ← call print_dword (dword~) print_sdword::$4
|
||||
to:print_sdword::@return
|
||||
print_sdword::@2: scope:[print_sdword] from print_sdword
|
||||
(void~) print_sdword::$2 ← call print_char (byte) '-'
|
||||
(signed dword~) print_sdword::$3 ← - (signed dword) print_sdword::dw
|
||||
(signed dword) print_sdword::dw ← (signed dword~) print_sdword::$3
|
||||
to:print_sdword::@1
|
||||
print_sdword::@return: scope:[print_sdword] from print_sdword::@1
|
||||
return
|
||||
to:@return
|
||||
@7: scope:[] from @6
|
||||
to:@8
|
||||
print_byte: scope:[print_byte] from
|
||||
(byte[]) print_byte::hextab ← (string) "0123456789abcdef"
|
||||
(byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
@ -405,8 +456,8 @@ print_byte: scope:[print_byte] from
|
||||
print_byte::@return: scope:[print_byte] from print_byte
|
||||
return
|
||||
to:@return
|
||||
@7: scope:[] from @6
|
||||
to:@8
|
||||
@8: scope:[] from @7
|
||||
to:@9
|
||||
print_char: scope:[print_char] from
|
||||
*((byte*) char_cursor) ← (byte) print_char::ch
|
||||
(byte*) char_cursor ← ++ (byte*) char_cursor
|
||||
@ -414,8 +465,8 @@ print_char: scope:[print_char] from
|
||||
print_char::@return: scope:[print_char] from print_char
|
||||
return
|
||||
to:@return
|
||||
@8: scope:[] from @7
|
||||
to:@9
|
||||
@9: scope:[] from @8
|
||||
to:@10
|
||||
print_cls: scope:[print_cls] from
|
||||
(byte*) print_cls::sc ← (byte*) SCREEN
|
||||
to:print_cls::@1
|
||||
@ -433,11 +484,11 @@ print_cls::@2: scope:[print_cls] from print_cls::@1
|
||||
print_cls::@return: scope:[print_cls] from print_cls::@2
|
||||
return
|
||||
to:@return
|
||||
@9: scope:[] from @8
|
||||
@10: scope:[] from @9
|
||||
(byte[]) msg ← (string) "hello world! @"
|
||||
(byte[]) msg2 ← (string) "hello c64! @"
|
||||
(byte[]) msg3 ← (string) "hello 2017! @"
|
||||
to:@10
|
||||
to:@11
|
||||
main: scope:[main] from
|
||||
(void~) main::$0 ← call print_str (byte[]) msg
|
||||
(void~) main::$1 ← call print_ln
|
||||
@ -449,15 +500,16 @@ main: scope:[main] from
|
||||
main::@return: scope:[main] from main
|
||||
return
|
||||
to:@return
|
||||
@10: scope:[] from @9
|
||||
@11: scope:[] from @10
|
||||
call main
|
||||
to:@end
|
||||
@end: scope:[] from @10
|
||||
@end: scope:[] from @11
|
||||
|
||||
Removing unused procedure print_sword
|
||||
Removing unused procedure print_sbyte
|
||||
Removing unused procedure print_dword
|
||||
Removing unused procedure print_sdword
|
||||
Removing unused procedure print_cls
|
||||
Removing unused procedure print_dword
|
||||
Removing unused procedure print_word
|
||||
Removing unused procedure print_byte
|
||||
Removing unused procedure print_char
|
||||
@ -482,6 +534,7 @@ Removing empty block @5
|
||||
Removing empty block @6
|
||||
Removing empty block @7
|
||||
Removing empty block @8
|
||||
Removing empty block @9
|
||||
PROCEDURE MODIFY VARIABLE ANALYSIS
|
||||
print_str modifies char_cursor
|
||||
print_ln modifies line_cursor
|
||||
@ -498,7 +551,7 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN
|
||||
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
|
||||
(byte*) line_cursor#0 ← (byte*) SCREEN#0
|
||||
(byte*) char_cursor#0 ← (byte*) line_cursor#0
|
||||
to:@9
|
||||
to:@10
|
||||
print_str: scope:[print_str] from main main::@2 main::@4
|
||||
(byte*) char_cursor#29 ← phi( main/(byte*) char_cursor#27 main::@2/(byte*) char_cursor#6 main::@4/(byte*) char_cursor#8 )
|
||||
(byte*) print_str::str#6 ← phi( main/(byte*) print_str::str#1 main::@2/(byte*) print_str::str#2 main::@4/(byte*) print_str::str#3 )
|
||||
@ -544,16 +597,16 @@ print_ln::@return: scope:[print_ln] from print_ln::@2
|
||||
(byte*) char_cursor#4 ← (byte*) char_cursor#16
|
||||
return
|
||||
to:@return
|
||||
@9: scope:[] from @begin
|
||||
@10: scope:[] from @begin
|
||||
(byte*) line_cursor#22 ← phi( @begin/(byte*) line_cursor#0 )
|
||||
(byte*) char_cursor#30 ← phi( @begin/(byte*) char_cursor#0 )
|
||||
(byte[]) msg#0 ← (const string) $0
|
||||
(byte[]) msg2#0 ← (const string) $1
|
||||
(byte[]) msg3#0 ← (const string) $2
|
||||
to:@10
|
||||
main: scope:[main] from @10
|
||||
(byte*) line_cursor#21 ← phi( @10/(byte*) line_cursor#20 )
|
||||
(byte*) char_cursor#27 ← phi( @10/(byte*) char_cursor#28 )
|
||||
to:@11
|
||||
main: scope:[main] from @11
|
||||
(byte*) line_cursor#21 ← phi( @11/(byte*) line_cursor#20 )
|
||||
(byte*) char_cursor#27 ← phi( @11/(byte*) char_cursor#28 )
|
||||
(byte*) print_str::str#1 ← (byte[]) msg#0
|
||||
call print_str param-assignment
|
||||
to:main::@1
|
||||
@ -604,18 +657,18 @@ main::@return: scope:[main] from main::@6
|
||||
(byte*) line_cursor#6 ← (byte*) line_cursor#14
|
||||
return
|
||||
to:@return
|
||||
@10: scope:[] from @9
|
||||
(byte*) line_cursor#20 ← phi( @9/(byte*) line_cursor#22 )
|
||||
(byte*) char_cursor#28 ← phi( @9/(byte*) char_cursor#30 )
|
||||
call main param-assignment
|
||||
to:@11
|
||||
@11: scope:[] from @10
|
||||
(byte*) line_cursor#15 ← phi( @10/(byte*) line_cursor#6 )
|
||||
(byte*) char_cursor#24 ← phi( @10/(byte*) char_cursor#11 )
|
||||
(byte*) line_cursor#20 ← phi( @10/(byte*) line_cursor#22 )
|
||||
(byte*) char_cursor#28 ← phi( @10/(byte*) char_cursor#30 )
|
||||
call main param-assignment
|
||||
to:@12
|
||||
@12: scope:[] from @11
|
||||
(byte*) line_cursor#15 ← phi( @11/(byte*) line_cursor#6 )
|
||||
(byte*) char_cursor#24 ← phi( @11/(byte*) char_cursor#11 )
|
||||
(byte*) char_cursor#12 ← (byte*) char_cursor#24
|
||||
(byte*) line_cursor#7 ← (byte*) line_cursor#15
|
||||
to:@end
|
||||
@end: scope:[] from @11
|
||||
@end: scope:[] from @12
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(const string) $0 = (string) "hello world! @"
|
||||
@ -623,7 +676,7 @@ SYMBOL TABLE SSA
|
||||
(const string) $2 = (string) "hello 2017! @"
|
||||
(label) @10
|
||||
(label) @11
|
||||
(label) @9
|
||||
(label) @12
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) SCREEN
|
||||
@ -808,9 +861,9 @@ Constant (const string) print_str::str#2 = msg2#0
|
||||
Constant (const string) print_str::str#3 = msg3#0
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Culled Empty Block (label) print_ln::@2
|
||||
Culled Empty Block (label) @9
|
||||
Culled Empty Block (label) @10
|
||||
Culled Empty Block (label) main::@6
|
||||
Culled Empty Block (label) @11
|
||||
Culled Empty Block (label) @12
|
||||
Succesful SSA optimization Pass2CullEmptyBlocks
|
||||
OPTIMIZING CONTROL FLOW GRAPH
|
||||
Inlining constant with var siblings (const string) print_str::str#1
|
||||
@ -829,11 +882,11 @@ Constant inlined $0 = (const string) msg#0
|
||||
Constant inlined $1 = (const string) msg2#0
|
||||
Constant inlined $2 = (const string) msg3#0
|
||||
Succesful SSA optimization Pass2ConstantInlining
|
||||
Block Sequence Planned @begin @10 @end main main::@1 main::@2 main::@3 main::@4 main::@5 main::@return print_ln print_ln::@1 print_ln::@return print_str print_str::@1 print_str::@return print_str::@2
|
||||
Block Sequence Planned @begin @11 @end main main::@1 main::@2 main::@3 main::@4 main::@5 main::@return print_ln print_ln::@1 print_ln::@return print_str print_str::@1 print_str::@return print_str::@2
|
||||
Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1)
|
||||
Block Sequence Planned @begin @10 @end main main::@1 main::@2 main::@3 main::@4 main::@5 main::@return print_ln print_ln::@1 print_ln::@return print_ln::@3 print_str print_str::@1 print_str::@return print_str::@2
|
||||
Block Sequence Planned @begin @11 @end main main::@1 main::@2 main::@3 main::@4 main::@5 main::@return print_ln print_ln::@1 print_ln::@return print_ln::@3 print_str print_str::@1 print_str::@return print_str::@2
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @10
|
||||
Adding NOP phi() at start of @11
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@1
|
||||
@ -862,9 +915,9 @@ Coalesced [33] print_str::str#8 ← print_str::str#0
|
||||
Coalesced [34] char_cursor#34 ← char_cursor#1
|
||||
Coalesced down to 3 phi equivalence classes
|
||||
Culled Empty Block (label) print_ln::@3
|
||||
Block Sequence Planned @begin @10 @end main main::@1 main::@2 main::@3 main::@4 main::@5 main::@return print_ln print_ln::@1 print_ln::@return print_str print_str::@1 print_str::@return print_str::@2
|
||||
Block Sequence Planned @begin @11 @end main main::@1 main::@2 main::@3 main::@4 main::@5 main::@return print_ln print_ln::@1 print_ln::@return print_str print_str::@1 print_str::@return print_str::@2
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @10
|
||||
Adding NOP phi() at start of @11
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@1
|
||||
@ -881,14 +934,14 @@ Propagating live ranges...
|
||||
FINAL CONTROL FLOW GRAPH
|
||||
@begin: scope:[] from
|
||||
[0] phi() [ ] ( )
|
||||
to:@10
|
||||
@10: scope:[] from @begin
|
||||
to:@11
|
||||
@11: scope:[] from @begin
|
||||
[1] phi() [ ] ( )
|
||||
[2] call main param-assignment [ ] ( )
|
||||
to:@end
|
||||
@end: scope:[] from @10
|
||||
@end: scope:[] from @11
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @10
|
||||
main: scope:[main] from @11
|
||||
[4] phi() [ ] ( main:2 [ ] )
|
||||
[5] call print_str param-assignment [ char_cursor#13 ] ( main:2 [ char_cursor#13 ] )
|
||||
to:main::@1
|
||||
@ -946,22 +999,22 @@ print_str::@2: scope:[print_str] from print_str::@1
|
||||
|
||||
DOMINATORS
|
||||
@begin dominated by @begin
|
||||
@10 dominated by @begin @10
|
||||
@end dominated by @begin @end @10
|
||||
main dominated by @begin main @10
|
||||
main::@1 dominated by @begin main main::@1 @10
|
||||
main::@2 dominated by @begin main main::@1 main::@2 @10
|
||||
main::@3 dominated by @begin main main::@1 main::@2 main::@3 @10
|
||||
main::@4 dominated by @begin main main::@1 main::@2 main::@3 @10 main::@4
|
||||
main::@5 dominated by @begin main main::@1 main::@2 main::@5 main::@3 @10 main::@4
|
||||
main::@return dominated by main::@return @begin main main::@1 main::@2 main::@5 main::@3 @10 main::@4
|
||||
print_ln dominated by @begin main print_ln main::@1 @10
|
||||
print_ln::@1 dominated by print_ln::@1 @begin main print_ln main::@1 @10
|
||||
print_ln::@return dominated by print_ln::@1 @begin main print_ln print_ln::@return main::@1 @10
|
||||
print_str dominated by @begin main print_str @10
|
||||
print_str::@1 dominated by @begin main print_str::@1 print_str @10
|
||||
print_str::@return dominated by @begin print_str::@return main print_str::@1 print_str @10
|
||||
print_str::@2 dominated by @begin main print_str::@1 print_str::@2 print_str @10
|
||||
@11 dominated by @11 @begin
|
||||
@end dominated by @11 @begin @end
|
||||
main dominated by @11 @begin main
|
||||
main::@1 dominated by @11 @begin main main::@1
|
||||
main::@2 dominated by @11 @begin main main::@1 main::@2
|
||||
main::@3 dominated by @11 @begin main main::@1 main::@2 main::@3
|
||||
main::@4 dominated by @11 @begin main main::@1 main::@2 main::@3 main::@4
|
||||
main::@5 dominated by @11 @begin main main::@1 main::@2 main::@5 main::@3 main::@4
|
||||
main::@return dominated by @11 main::@return @begin main main::@1 main::@2 main::@5 main::@3 main::@4
|
||||
print_ln dominated by @11 @begin main print_ln main::@1
|
||||
print_ln::@1 dominated by @11 print_ln::@1 @begin main print_ln main::@1
|
||||
print_ln::@return dominated by @11 print_ln::@1 @begin main print_ln print_ln::@return main::@1
|
||||
print_str dominated by @11 @begin main print_str
|
||||
print_str::@1 dominated by @11 @begin main print_str::@1 print_str
|
||||
print_str::@return dominated by @11 @begin print_str::@return main print_str::@1 print_str
|
||||
print_str::@2 dominated by @11 @begin main print_str::@1 print_str::@2 print_str
|
||||
|
||||
NATURAL LOOPS
|
||||
Found back edge: Loop head: print_ln::@1 tails: print_ln::@1 blocks: null
|
||||
@ -1028,17 +1081,17 @@ INITIAL ASM
|
||||
.label line_cursor = 2
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @10 [phi:@begin->@10]
|
||||
b10_from_bbegin:
|
||||
jmp b10
|
||||
//SEG4 @10
|
||||
b10:
|
||||
//SEG3 [1] phi from @begin to @11 [phi:@begin->@11]
|
||||
b11_from_bbegin:
|
||||
jmp b11
|
||||
//SEG4 @11
|
||||
b11:
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
//SEG6 [4] phi from @10 to main [phi:@10->main]
|
||||
main_from_b10:
|
||||
//SEG6 [4] phi from @11 to main [phi:@11->main]
|
||||
main_from_b11:
|
||||
jsr main
|
||||
//SEG7 [3] phi from @10 to @end [phi:@10->@end]
|
||||
bend_from_b10:
|
||||
//SEG7 [3] phi from @11 to @end [phi:@11->@end]
|
||||
bend_from_b11:
|
||||
jmp bend
|
||||
//SEG8 @end
|
||||
bend:
|
||||
@ -1243,17 +1296,17 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.label line_cursor = 2
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @10 [phi:@begin->@10]
|
||||
b10_from_bbegin:
|
||||
jmp b10
|
||||
//SEG4 @10
|
||||
b10:
|
||||
//SEG3 [1] phi from @begin to @11 [phi:@begin->@11]
|
||||
b11_from_bbegin:
|
||||
jmp b11
|
||||
//SEG4 @11
|
||||
b11:
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
//SEG6 [4] phi from @10 to main [phi:@10->main]
|
||||
main_from_b10:
|
||||
//SEG6 [4] phi from @11 to main [phi:@11->main]
|
||||
main_from_b11:
|
||||
jsr main
|
||||
//SEG7 [3] phi from @10 to @end [phi:@10->@end]
|
||||
bend_from_b10:
|
||||
//SEG7 [3] phi from @11 to @end [phi:@11->@end]
|
||||
bend_from_b11:
|
||||
jmp bend
|
||||
//SEG8 @end
|
||||
bend:
|
||||
@ -1426,7 +1479,7 @@ print_str: {
|
||||
msg3: .text "hello 2017! @"
|
||||
|
||||
ASSEMBLER OPTIMIZATIONS
|
||||
Removing instruction jmp b10
|
||||
Removing instruction jmp b11
|
||||
Removing instruction jmp bend
|
||||
Removing instruction jmp b1
|
||||
Removing instruction jmp b2
|
||||
@ -1445,9 +1498,9 @@ Replacing label b1_from_b1 with b1
|
||||
Replacing label b1_from_b1 with b1
|
||||
Replacing label b1_from_b2 with b1
|
||||
Removing instruction bbegin:
|
||||
Removing instruction b10_from_bbegin:
|
||||
Removing instruction main_from_b10:
|
||||
Removing instruction bend_from_b10:
|
||||
Removing instruction b11_from_bbegin:
|
||||
Removing instruction main_from_b11:
|
||||
Removing instruction bend_from_b11:
|
||||
Removing instruction b1_from_main:
|
||||
Removing instruction print_ln_from_b1:
|
||||
Removing instruction b3_from_b2:
|
||||
@ -1459,7 +1512,7 @@ Removing instruction b1_from_b1:
|
||||
Removing instruction b1_from_print_str:
|
||||
Removing instruction b1_from_b2:
|
||||
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||
Removing instruction b10:
|
||||
Removing instruction b11:
|
||||
Removing instruction bend:
|
||||
Removing instruction print_str_from_main:
|
||||
Removing instruction b1:
|
||||
@ -1475,7 +1528,7 @@ Removing instruction breturn:
|
||||
Succesful ASM optimization Pass5UnusedLabelElimination
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(label) @10
|
||||
(label) @11
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) SCREEN
|
||||
@ -1532,12 +1585,12 @@ Score: 1039
|
||||
.label char_cursor = 6
|
||||
.label line_cursor = 2
|
||||
//SEG2 @begin
|
||||
//SEG3 [1] phi from @begin to @10 [phi:@begin->@10]
|
||||
//SEG4 @10
|
||||
//SEG3 [1] phi from @begin to @11 [phi:@begin->@11]
|
||||
//SEG4 @11
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
//SEG6 [4] phi from @10 to main [phi:@10->main]
|
||||
//SEG6 [4] phi from @11 to main [phi:@11->main]
|
||||
jsr main
|
||||
//SEG7 [3] phi from @10 to @end [phi:@10->@end]
|
||||
//SEG7 [3] phi from @11 to @end [phi:@11->@end]
|
||||
//SEG8 @end
|
||||
//SEG9 main
|
||||
main: {
|
||||
|
@ -1,4 +1,4 @@
|
||||
(label) @10
|
||||
(label) @11
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) SCREEN
|
||||
|
@ -64,8 +64,8 @@ scroll_bit: {
|
||||
rol _4+1
|
||||
asl _4
|
||||
rol _4+1
|
||||
lda current_chargen
|
||||
clc
|
||||
lda current_chargen
|
||||
adc #<CHARGEN
|
||||
sta current_chargen
|
||||
lda current_chargen+1
|
||||
|
@ -3340,8 +3340,8 @@ scroll_bit: {
|
||||
asl _4
|
||||
rol _4+1
|
||||
//SEG66 [29] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] ) -- pbuz1=pbuc1_plus_vwuz1
|
||||
lda current_chargen
|
||||
clc
|
||||
lda current_chargen
|
||||
adc #<CHARGEN
|
||||
sta current_chargen
|
||||
lda current_chargen+1
|
||||
@ -3931,8 +3931,8 @@ scroll_bit: {
|
||||
asl _4
|
||||
rol _4+1
|
||||
//SEG66 [29] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] ) -- pbuz1=pbuc1_plus_vwuz1
|
||||
lda current_chargen
|
||||
clc
|
||||
lda current_chargen
|
||||
adc #<CHARGEN
|
||||
sta current_chargen
|
||||
lda current_chargen+1
|
||||
|
@ -26,21 +26,22 @@
|
||||
jsr main
|
||||
main: {
|
||||
jsr init
|
||||
lda #$64
|
||||
lda #<$64
|
||||
sta yvel_init
|
||||
lda #0
|
||||
lda #>$64
|
||||
sta yvel_init+1
|
||||
lda #$c8
|
||||
lda #<$c8
|
||||
sta xvel
|
||||
lda #0
|
||||
lda #>$c8
|
||||
sta xvel+1
|
||||
lda #<0
|
||||
sta ypos
|
||||
sta ypos+1
|
||||
sta xpos
|
||||
sta xpos+1
|
||||
lda #$64
|
||||
lda #<$64
|
||||
sta yvel_12
|
||||
lda #0
|
||||
lda #>$64
|
||||
sta yvel_12+1
|
||||
b2:
|
||||
lda RASTER
|
||||
@ -80,37 +81,37 @@ anim: {
|
||||
eor #$80
|
||||
!:
|
||||
bpl b2
|
||||
lda #$c8
|
||||
lda #<$c8
|
||||
sta yvel
|
||||
lda #0
|
||||
lda #>$c8
|
||||
sta yvel+1
|
||||
b2:
|
||||
lda yvel
|
||||
sta yvel_22
|
||||
lda yvel+1
|
||||
sta yvel_22+1
|
||||
lda #0
|
||||
lda #<0
|
||||
sta ypos
|
||||
sta ypos+1
|
||||
sta xpos
|
||||
sta xpos+1
|
||||
b1:
|
||||
lda yvel_10
|
||||
clc
|
||||
lda yvel_10
|
||||
adc #<g
|
||||
sta yvel_10
|
||||
lda yvel_10+1
|
||||
adc #>g
|
||||
sta yvel_10+1
|
||||
clc
|
||||
lda xpos
|
||||
clc
|
||||
adc xvel
|
||||
sta xpos
|
||||
lda xpos+1
|
||||
adc xvel+1
|
||||
sta xpos+1
|
||||
clc
|
||||
lda ypos
|
||||
clc
|
||||
adc yvel_10
|
||||
sta ypos
|
||||
lda ypos+1
|
||||
@ -129,8 +130,8 @@ anim: {
|
||||
rol $ff
|
||||
rol _10
|
||||
rol _10+1
|
||||
lda sprite_x
|
||||
clc
|
||||
lda sprite_x
|
||||
adc #<$a0
|
||||
sta sprite_x
|
||||
lda sprite_x+1
|
||||
|
@ -1592,29 +1592,29 @@ main: {
|
||||
//SEG11 [6] phi from main to main::@2 [phi:main->main::@2]
|
||||
b2_from_main:
|
||||
//SEG12 [6] phi (signed word) yvel_init#13 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@2#0] -- vwsz1=vbuc1
|
||||
lda #$64
|
||||
lda #<$64
|
||||
sta yvel_init
|
||||
lda #0
|
||||
lda #>$64
|
||||
sta yvel_init+1
|
||||
//SEG13 [6] phi (signed word) xvel#12 = (byte/word/signed word/dword/signed dword) 200 [phi:main->main::@2#1] -- vwsz1=vbuc1
|
||||
lda #$c8
|
||||
lda #<$c8
|
||||
sta xvel
|
||||
lda #0
|
||||
lda #>$c8
|
||||
sta xvel+1
|
||||
//SEG14 [6] phi (signed word) ypos#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#2] -- vwsz1=vbuc1
|
||||
lda #0
|
||||
lda #<0
|
||||
sta ypos
|
||||
lda #0
|
||||
lda #>0
|
||||
sta ypos+1
|
||||
//SEG15 [6] phi (signed word) xpos#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#3] -- vwsz1=vbuc1
|
||||
lda #0
|
||||
lda #<0
|
||||
sta xpos
|
||||
lda #0
|
||||
lda #>0
|
||||
sta xpos+1
|
||||
//SEG16 [6] phi (signed word) yvel#12 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@2#4] -- vwsz1=vbuc1
|
||||
lda #$64
|
||||
lda #<$64
|
||||
sta yvel_12
|
||||
lda #0
|
||||
lda #>$64
|
||||
sta yvel_12+1
|
||||
jmp b2
|
||||
//SEG17 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2]
|
||||
@ -1697,9 +1697,9 @@ anim: {
|
||||
//SEG39 [16] phi from anim::@3 to anim::@2 [phi:anim::@3->anim::@2]
|
||||
b2_from_b3:
|
||||
//SEG40 [16] phi (signed word) yvel#4 = (byte/word/signed word/dword/signed dword) 200 [phi:anim::@3->anim::@2#0] -- vwsz1=vbuc1
|
||||
lda #$c8
|
||||
lda #<$c8
|
||||
sta yvel
|
||||
lda #0
|
||||
lda #>$c8
|
||||
sta yvel+1
|
||||
jmp b2
|
||||
//SEG41 anim::@2
|
||||
@ -1713,15 +1713,15 @@ anim: {
|
||||
b1_from_b2:
|
||||
//SEG44 [18] phi (signed word) yvel_init#11 = (signed word) yvel#4 [phi:anim::@2->anim::@1#0] -- register_copy
|
||||
//SEG45 [18] phi (signed word) ypos#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@2->anim::@1#1] -- vwsz1=vbuc1
|
||||
lda #0
|
||||
lda #<0
|
||||
sta ypos
|
||||
lda #0
|
||||
lda #>0
|
||||
sta ypos+1
|
||||
//SEG46 [18] phi (signed word) xvel#10 = (signed word) xvel#14 [phi:anim::@2->anim::@1#2] -- register_copy
|
||||
//SEG47 [18] phi (signed word) xpos#9 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@2->anim::@1#3] -- vwsz1=vbuc1
|
||||
lda #0
|
||||
lda #<0
|
||||
sta xpos
|
||||
lda #0
|
||||
lda #>0
|
||||
sta xpos+1
|
||||
//SEG48 [18] phi (signed word) yvel#9 = (signed word~) yvel#22 [phi:anim::@2->anim::@1#4] -- register_copy
|
||||
jmp b1
|
||||
@ -1736,24 +1736,24 @@ anim: {
|
||||
//SEG55 anim::@1
|
||||
b1:
|
||||
//SEG56 [19] (signed word) yvel#10 ← (signed word) yvel#9 + (const signed word) g#0 [ yvel#10 xvel#10 yvel_init#11 xpos#9 ypos#10 ] ( main:2::anim:9 [ yvel#10 xvel#10 yvel_init#11 xpos#9 ypos#10 ] ) -- vwsz1=vwsz1_plus_vwsc1
|
||||
lda yvel_10
|
||||
clc
|
||||
lda yvel_10
|
||||
adc #<g
|
||||
sta yvel_10
|
||||
lda yvel_10+1
|
||||
adc #>g
|
||||
sta yvel_10+1
|
||||
//SEG57 [20] (signed word) xpos#10 ← (signed word) xpos#9 + (signed word) xvel#10 [ yvel#10 xpos#10 xvel#10 yvel_init#11 ypos#10 ] ( main:2::anim:9 [ yvel#10 xpos#10 xvel#10 yvel_init#11 ypos#10 ] ) -- vwsz1=vwsz1_plus_vwsz2
|
||||
clc
|
||||
lda xpos
|
||||
clc
|
||||
adc xvel
|
||||
sta xpos
|
||||
lda xpos+1
|
||||
adc xvel+1
|
||||
sta xpos+1
|
||||
//SEG58 [21] (signed word) ypos#11 ← (signed word) ypos#10 + (signed word) yvel#10 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 ] ) -- vwsz1=vwsz1_plus_vwsz2
|
||||
clc
|
||||
lda ypos
|
||||
clc
|
||||
adc yvel_10
|
||||
sta ypos
|
||||
lda ypos+1
|
||||
@ -2062,29 +2062,29 @@ main: {
|
||||
//SEG11 [6] phi from main to main::@2 [phi:main->main::@2]
|
||||
b2_from_main:
|
||||
//SEG12 [6] phi (signed word) yvel_init#13 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@2#0] -- vwsz1=vbuc1
|
||||
lda #$64
|
||||
lda #<$64
|
||||
sta yvel_init
|
||||
lda #0
|
||||
lda #>$64
|
||||
sta yvel_init+1
|
||||
//SEG13 [6] phi (signed word) xvel#12 = (byte/word/signed word/dword/signed dword) 200 [phi:main->main::@2#1] -- vwsz1=vbuc1
|
||||
lda #$c8
|
||||
lda #<$c8
|
||||
sta xvel
|
||||
lda #0
|
||||
lda #>$c8
|
||||
sta xvel+1
|
||||
//SEG14 [6] phi (signed word) ypos#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#2] -- vwsz1=vbuc1
|
||||
lda #0
|
||||
lda #<0
|
||||
sta ypos
|
||||
lda #0
|
||||
lda #>0
|
||||
sta ypos+1
|
||||
//SEG15 [6] phi (signed word) xpos#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#3] -- vwsz1=vbuc1
|
||||
lda #0
|
||||
lda #<0
|
||||
sta xpos
|
||||
lda #0
|
||||
lda #>0
|
||||
sta xpos+1
|
||||
//SEG16 [6] phi (signed word) yvel#12 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@2#4] -- vwsz1=vbuc1
|
||||
lda #$64
|
||||
lda #<$64
|
||||
sta yvel_12
|
||||
lda #0
|
||||
lda #>$64
|
||||
sta yvel_12+1
|
||||
jmp b2
|
||||
//SEG17 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2]
|
||||
@ -2164,9 +2164,9 @@ anim: {
|
||||
//SEG39 [16] phi from anim::@3 to anim::@2 [phi:anim::@3->anim::@2]
|
||||
b2_from_b3:
|
||||
//SEG40 [16] phi (signed word) yvel#4 = (byte/word/signed word/dword/signed dword) 200 [phi:anim::@3->anim::@2#0] -- vwsz1=vbuc1
|
||||
lda #$c8
|
||||
lda #<$c8
|
||||
sta yvel
|
||||
lda #0
|
||||
lda #>$c8
|
||||
sta yvel+1
|
||||
jmp b2
|
||||
//SEG41 anim::@2
|
||||
@ -2180,15 +2180,15 @@ anim: {
|
||||
b1_from_b2:
|
||||
//SEG44 [18] phi (signed word) yvel_init#11 = (signed word) yvel#4 [phi:anim::@2->anim::@1#0] -- register_copy
|
||||
//SEG45 [18] phi (signed word) ypos#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@2->anim::@1#1] -- vwsz1=vbuc1
|
||||
lda #0
|
||||
lda #<0
|
||||
sta ypos
|
||||
lda #0
|
||||
lda #>0
|
||||
sta ypos+1
|
||||
//SEG46 [18] phi (signed word) xvel#10 = (signed word) xvel#14 [phi:anim::@2->anim::@1#2] -- register_copy
|
||||
//SEG47 [18] phi (signed word) xpos#9 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@2->anim::@1#3] -- vwsz1=vbuc1
|
||||
lda #0
|
||||
lda #<0
|
||||
sta xpos
|
||||
lda #0
|
||||
lda #>0
|
||||
sta xpos+1
|
||||
//SEG48 [18] phi (signed word) yvel#9 = (signed word~) yvel#22 [phi:anim::@2->anim::@1#4] -- register_copy
|
||||
jmp b1
|
||||
@ -2203,24 +2203,24 @@ anim: {
|
||||
//SEG55 anim::@1
|
||||
b1:
|
||||
//SEG56 [19] (signed word) yvel#10 ← (signed word) yvel#9 + (const signed word) g#0 [ yvel#10 xvel#10 yvel_init#11 xpos#9 ypos#10 ] ( main:2::anim:9 [ yvel#10 xvel#10 yvel_init#11 xpos#9 ypos#10 ] ) -- vwsz1=vwsz1_plus_vwsc1
|
||||
lda yvel_10
|
||||
clc
|
||||
lda yvel_10
|
||||
adc #<g
|
||||
sta yvel_10
|
||||
lda yvel_10+1
|
||||
adc #>g
|
||||
sta yvel_10+1
|
||||
//SEG57 [20] (signed word) xpos#10 ← (signed word) xpos#9 + (signed word) xvel#10 [ yvel#10 xpos#10 xvel#10 yvel_init#11 ypos#10 ] ( main:2::anim:9 [ yvel#10 xpos#10 xvel#10 yvel_init#11 ypos#10 ] ) -- vwsz1=vwsz1_plus_vwsz2
|
||||
clc
|
||||
lda xpos
|
||||
clc
|
||||
adc xvel
|
||||
sta xpos
|
||||
lda xpos+1
|
||||
adc xvel+1
|
||||
sta xpos+1
|
||||
//SEG58 [21] (signed word) ypos#11 ← (signed word) ypos#10 + (signed word) yvel#10 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 ] ) -- vwsz1=vwsz1_plus_vwsz2
|
||||
clc
|
||||
lda ypos
|
||||
clc
|
||||
adc yvel_10
|
||||
sta ypos
|
||||
lda ypos+1
|
||||
@ -2241,8 +2241,8 @@ anim: {
|
||||
rol _10
|
||||
rol _10+1
|
||||
//SEG60 [23] (signed word) anim::sprite_x#0 ← (signed word~) anim::$10 + (byte/word/signed word/dword/signed dword) 160 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 ] ) -- vwsz1=vwsz1_plus_vbuc1
|
||||
lda sprite_x
|
||||
clc
|
||||
lda sprite_x
|
||||
adc #<$a0
|
||||
sta sprite_x
|
||||
lda sprite_x+1
|
||||
@ -2399,13 +2399,12 @@ Removing instruction jmp b1
|
||||
Removing instruction jmp b2
|
||||
Removing instruction jmp breturn
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Removing instruction lda #0
|
||||
Removing instruction lda #0
|
||||
Removing instruction lda #0
|
||||
Removing instruction lda #0
|
||||
Removing instruction lda #0
|
||||
Removing instruction lda #0
|
||||
Removing instruction lda #0
|
||||
Removing instruction lda #>0
|
||||
Removing instruction lda #<0
|
||||
Removing instruction lda #>0
|
||||
Removing instruction lda #>0
|
||||
Removing instruction lda #<0
|
||||
Removing instruction lda #>0
|
||||
Removing instruction lda #0
|
||||
Removing instruction lda #$64
|
||||
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
||||
@ -2559,7 +2558,7 @@ reg byte a [ anim::$16 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 6153
|
||||
Score: 6353
|
||||
|
||||
//SEG0 Basic Upstart
|
||||
.pc = $801 "Basic"
|
||||
@ -2602,25 +2601,26 @@ main: {
|
||||
jsr init
|
||||
//SEG11 [6] phi from main to main::@2 [phi:main->main::@2]
|
||||
//SEG12 [6] phi (signed word) yvel_init#13 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@2#0] -- vwsz1=vbuc1
|
||||
lda #$64
|
||||
lda #<$64
|
||||
sta yvel_init
|
||||
lda #0
|
||||
lda #>$64
|
||||
sta yvel_init+1
|
||||
//SEG13 [6] phi (signed word) xvel#12 = (byte/word/signed word/dword/signed dword) 200 [phi:main->main::@2#1] -- vwsz1=vbuc1
|
||||
lda #$c8
|
||||
lda #<$c8
|
||||
sta xvel
|
||||
lda #0
|
||||
lda #>$c8
|
||||
sta xvel+1
|
||||
//SEG14 [6] phi (signed word) ypos#13 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#2] -- vwsz1=vbuc1
|
||||
lda #<0
|
||||
sta ypos
|
||||
sta ypos+1
|
||||
//SEG15 [6] phi (signed word) xpos#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@2#3] -- vwsz1=vbuc1
|
||||
sta xpos
|
||||
sta xpos+1
|
||||
//SEG16 [6] phi (signed word) yvel#12 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@2#4] -- vwsz1=vbuc1
|
||||
lda #$64
|
||||
lda #<$64
|
||||
sta yvel_12
|
||||
lda #0
|
||||
lda #>$64
|
||||
sta yvel_12+1
|
||||
//SEG17 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2]
|
||||
//SEG18 [6] phi from main::@6 to main::@2 [phi:main::@6->main::@2]
|
||||
@ -2684,9 +2684,9 @@ anim: {
|
||||
bpl b2
|
||||
//SEG39 [16] phi from anim::@3 to anim::@2 [phi:anim::@3->anim::@2]
|
||||
//SEG40 [16] phi (signed word) yvel#4 = (byte/word/signed word/dword/signed dword) 200 [phi:anim::@3->anim::@2#0] -- vwsz1=vbuc1
|
||||
lda #$c8
|
||||
lda #<$c8
|
||||
sta yvel
|
||||
lda #0
|
||||
lda #>$c8
|
||||
sta yvel+1
|
||||
//SEG41 anim::@2
|
||||
b2:
|
||||
@ -2698,7 +2698,7 @@ anim: {
|
||||
//SEG43 [18] phi from anim::@2 to anim::@1 [phi:anim::@2->anim::@1]
|
||||
//SEG44 [18] phi (signed word) yvel_init#11 = (signed word) yvel#4 [phi:anim::@2->anim::@1#0] -- register_copy
|
||||
//SEG45 [18] phi (signed word) ypos#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:anim::@2->anim::@1#1] -- vwsz1=vbuc1
|
||||
lda #0
|
||||
lda #<0
|
||||
sta ypos
|
||||
sta ypos+1
|
||||
//SEG46 [18] phi (signed word) xvel#10 = (signed word) xvel#14 [phi:anim::@2->anim::@1#2] -- register_copy
|
||||
@ -2715,24 +2715,24 @@ anim: {
|
||||
//SEG55 anim::@1
|
||||
b1:
|
||||
//SEG56 [19] (signed word) yvel#10 ← (signed word) yvel#9 + (const signed word) g#0 [ yvel#10 xvel#10 yvel_init#11 xpos#9 ypos#10 ] ( main:2::anim:9 [ yvel#10 xvel#10 yvel_init#11 xpos#9 ypos#10 ] ) -- vwsz1=vwsz1_plus_vwsc1
|
||||
lda yvel_10
|
||||
clc
|
||||
lda yvel_10
|
||||
adc #<g
|
||||
sta yvel_10
|
||||
lda yvel_10+1
|
||||
adc #>g
|
||||
sta yvel_10+1
|
||||
//SEG57 [20] (signed word) xpos#10 ← (signed word) xpos#9 + (signed word) xvel#10 [ yvel#10 xpos#10 xvel#10 yvel_init#11 ypos#10 ] ( main:2::anim:9 [ yvel#10 xpos#10 xvel#10 yvel_init#11 ypos#10 ] ) -- vwsz1=vwsz1_plus_vwsz2
|
||||
clc
|
||||
lda xpos
|
||||
clc
|
||||
adc xvel
|
||||
sta xpos
|
||||
lda xpos+1
|
||||
adc xvel+1
|
||||
sta xpos+1
|
||||
//SEG58 [21] (signed word) ypos#11 ← (signed word) ypos#10 + (signed word) yvel#10 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 ] ) -- vwsz1=vwsz1_plus_vwsz2
|
||||
clc
|
||||
lda ypos
|
||||
clc
|
||||
adc yvel_10
|
||||
sta ypos
|
||||
lda ypos+1
|
||||
@ -2753,8 +2753,8 @@ anim: {
|
||||
rol _10
|
||||
rol _10+1
|
||||
//SEG60 [23] (signed word) anim::sprite_x#0 ← (signed word~) anim::$10 + (byte/word/signed word/dword/signed dword) 160 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 ] ( main:2::anim:9 [ yvel#10 xpos#10 ypos#11 xvel#10 yvel_init#11 anim::sprite_x#0 ] ) -- vwsz1=vwsz1_plus_vbuc1
|
||||
lda sprite_x
|
||||
clc
|
||||
lda sprite_x
|
||||
adc #<$a0
|
||||
sta sprite_x
|
||||
lda sprite_x+1
|
||||
|
@ -47,9 +47,9 @@ main: {
|
||||
lda #>f_i
|
||||
sta setMEMtoFAC.mem+1
|
||||
jsr setMEMtoFAC
|
||||
lda #$19
|
||||
lda #<$19
|
||||
sta setFAC.w
|
||||
lda #0
|
||||
lda #>$19
|
||||
sta setFAC.w+1
|
||||
jsr setFAC
|
||||
jsr divMEMbyFAC
|
||||
|
@ -1,13 +1,13 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi() [ ] ( )
|
||||
to:@37
|
||||
@37: scope:[] from @begin
|
||||
to:@38
|
||||
@38: scope:[] from @begin
|
||||
[1] phi() [ ] ( )
|
||||
[2] call main param-assignment [ ] ( )
|
||||
to:@end
|
||||
@end: scope:[] from @37
|
||||
@end: scope:[] from @38
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @37
|
||||
main: scope:[main] from @38
|
||||
[4] phi() [ ] ( main:2 [ ] )
|
||||
[5] call setFAC param-assignment [ ] ( main:2 [ ] )
|
||||
to:main::@3
|
||||
|
@ -76,6 +76,15 @@ void print_dword(dword dw) {
|
||||
print_word(<dw);
|
||||
}
|
||||
|
||||
// Print a signed dword as HEX
|
||||
void print_sdword(signed dword dw) {
|
||||
if(dw<0) {
|
||||
print_char('-');
|
||||
dw = -dw;
|
||||
}
|
||||
print_dword((dword)dw);
|
||||
}
|
||||
|
||||
// Print a byte as HEX
|
||||
void print_byte(byte b) {
|
||||
// Table of hexadecimal digits
|
||||
@ -454,6 +463,19 @@ proc (void()) print_dword((dword) print_dword::dw)
|
||||
print_dword::@return:
|
||||
return
|
||||
endproc // print_dword()
|
||||
proc (void()) print_sdword((signed dword) print_sdword::dw)
|
||||
(boolean~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(boolean~) print_sdword::$1 ← ! (boolean~) print_sdword::$0
|
||||
if((boolean~) print_sdword::$1) goto print_sdword::@1
|
||||
(void~) print_sdword::$2 ← call print_char (byte) '-'
|
||||
(signed dword~) print_sdword::$3 ← - (signed dword) print_sdword::dw
|
||||
(signed dword) print_sdword::dw ← (signed dword~) print_sdword::$3
|
||||
print_sdword::@1:
|
||||
(dword~) print_sdword::$4 ← ((dword)) (signed dword) print_sdword::dw
|
||||
(void~) print_sdword::$5 ← call print_dword (dword~) print_sdword::$4
|
||||
print_sdword::@return:
|
||||
return
|
||||
endproc // print_sdword()
|
||||
proc (void()) print_byte((byte) print_byte::b)
|
||||
(byte[]) print_byte::hextab ← (string) "0123456789abcdef"
|
||||
(byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
@ -770,6 +792,16 @@ SYMBOLS
|
||||
(label) print_sbyte::@1
|
||||
(label) print_sbyte::@return
|
||||
(signed byte) print_sbyte::b
|
||||
(void()) print_sdword((signed dword) print_sdword::dw)
|
||||
(boolean~) print_sdword::$0
|
||||
(boolean~) print_sdword::$1
|
||||
(void~) print_sdword::$2
|
||||
(signed dword~) print_sdword::$3
|
||||
(dword~) print_sdword::$4
|
||||
(void~) print_sdword::$5
|
||||
(label) print_sdword::@1
|
||||
(label) print_sdword::@return
|
||||
(signed dword) print_sdword::dw
|
||||
(void()) print_str((byte*) print_str::str)
|
||||
(boolean~) print_str::$0
|
||||
(label) print_str::@1
|
||||
@ -946,6 +978,25 @@ print_dword::@return: scope:[print_dword] from print_dword
|
||||
to:@return
|
||||
@6: scope:[] from @5
|
||||
to:@7
|
||||
print_sdword: scope:[print_sdword] from
|
||||
(boolean~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(boolean~) print_sdword::$1 ← ! (boolean~) print_sdword::$0
|
||||
if((boolean~) print_sdword::$1) goto print_sdword::@1
|
||||
to:print_sdword::@2
|
||||
print_sdword::@1: scope:[print_sdword] from print_sdword print_sdword::@2
|
||||
(dword~) print_sdword::$4 ← ((dword)) (signed dword) print_sdword::dw
|
||||
(void~) print_sdword::$5 ← call print_dword (dword~) print_sdword::$4
|
||||
to:print_sdword::@return
|
||||
print_sdword::@2: scope:[print_sdword] from print_sdword
|
||||
(void~) print_sdword::$2 ← call print_char (byte) '-'
|
||||
(signed dword~) print_sdword::$3 ← - (signed dword) print_sdword::dw
|
||||
(signed dword) print_sdword::dw ← (signed dword~) print_sdword::$3
|
||||
to:print_sdword::@1
|
||||
print_sdword::@return: scope:[print_sdword] from print_sdword::@1
|
||||
return
|
||||
to:@return
|
||||
@7: scope:[] from @6
|
||||
to:@8
|
||||
print_byte: scope:[print_byte] from
|
||||
(byte[]) print_byte::hextab ← (string) "0123456789abcdef"
|
||||
(byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
@ -956,8 +1007,8 @@ print_byte: scope:[print_byte] from
|
||||
print_byte::@return: scope:[print_byte] from print_byte
|
||||
return
|
||||
to:@return
|
||||
@7: scope:[] from @6
|
||||
to:@8
|
||||
@8: scope:[] from @7
|
||||
to:@9
|
||||
print_char: scope:[print_char] from
|
||||
*((byte*) char_cursor) ← (byte) print_char::ch
|
||||
(byte*) char_cursor ← ++ (byte*) char_cursor
|
||||
@ -965,8 +1016,8 @@ print_char: scope:[print_char] from
|
||||
print_char::@return: scope:[print_char] from print_char
|
||||
return
|
||||
to:@return
|
||||
@8: scope:[] from @7
|
||||
to:@9
|
||||
@9: scope:[] from @8
|
||||
to:@10
|
||||
print_cls: scope:[print_cls] from
|
||||
(byte*) print_cls::sc ← (byte*) SCREEN
|
||||
to:print_cls::@1
|
||||
@ -984,10 +1035,10 @@ print_cls::@2: scope:[print_cls] from print_cls::@1
|
||||
print_cls::@return: scope:[print_cls] from print_cls::@2
|
||||
return
|
||||
to:@return
|
||||
@9: scope:[] from @8
|
||||
@10: scope:[] from @9
|
||||
(byte*) memLo ← ((byte*)) (byte/word/signed word/dword/signed dword) 254
|
||||
(byte*) memHi ← ((byte*)) (byte/word/signed word/dword/signed dword) 255
|
||||
to:@10
|
||||
to:@11
|
||||
prepareMEM: scope:[prepareMEM] from
|
||||
(byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem
|
||||
*((byte*) memLo) ← (byte~) prepareMEM::$0
|
||||
@ -997,8 +1048,8 @@ prepareMEM: scope:[prepareMEM] from
|
||||
prepareMEM::@return: scope:[prepareMEM] from prepareMEM
|
||||
return
|
||||
to:@return
|
||||
@10: scope:[] from @9
|
||||
to:@11
|
||||
@11: scope:[] from @10
|
||||
to:@12
|
||||
setFAC: scope:[setFAC] from
|
||||
(byte*~) setFAC::$0 ← ((byte*)) (word) setFAC::w
|
||||
(void~) setFAC::$1 ← call prepareMEM (byte*~) setFAC::$0
|
||||
@ -1007,8 +1058,8 @@ setFAC: scope:[setFAC] from
|
||||
setFAC::@return: scope:[setFAC] from setFAC
|
||||
return
|
||||
to:@return
|
||||
@11: scope:[] from @10
|
||||
to:@12
|
||||
@12: scope:[] from @11
|
||||
to:@13
|
||||
getFAC: scope:[getFAC] from
|
||||
asm { jsr$b1aa sty$fe sta$ff }
|
||||
(word) getFAC::w ← { *((byte*) memHi), *((byte*) memLo) }
|
||||
@ -1020,24 +1071,24 @@ getFAC::@return: scope:[getFAC] from getFAC getFAC::@1
|
||||
to:@return
|
||||
getFAC::@1: scope:[getFAC] from
|
||||
to:getFAC::@return
|
||||
@12: scope:[] from @11
|
||||
to:@13
|
||||
@13: scope:[] from @12
|
||||
to:@14
|
||||
setARGtoFAC: scope:[setARGtoFAC] from
|
||||
asm { jsr$bc0f }
|
||||
to:setARGtoFAC::@return
|
||||
setARGtoFAC::@return: scope:[setARGtoFAC] from setARGtoFAC
|
||||
return
|
||||
to:@return
|
||||
@13: scope:[] from @12
|
||||
to:@14
|
||||
@14: scope:[] from @13
|
||||
to:@15
|
||||
setFACtoARG: scope:[setFACtoARG] from
|
||||
asm { jsr$bbfc }
|
||||
to:setFACtoARG::@return
|
||||
setFACtoARG::@return: scope:[setFACtoARG] from setFACtoARG
|
||||
return
|
||||
to:@return
|
||||
@14: scope:[] from @13
|
||||
to:@15
|
||||
@15: scope:[] from @14
|
||||
to:@16
|
||||
setMEMtoFAC: scope:[setMEMtoFAC] from
|
||||
(void~) setMEMtoFAC::$0 ← call prepareMEM (byte*) setMEMtoFAC::mem
|
||||
asm { ldx$fe ldy$ff jsr$bbd4 }
|
||||
@ -1045,8 +1096,8 @@ setMEMtoFAC: scope:[setMEMtoFAC] from
|
||||
setMEMtoFAC::@return: scope:[setMEMtoFAC] from setMEMtoFAC
|
||||
return
|
||||
to:@return
|
||||
@15: scope:[] from @14
|
||||
to:@16
|
||||
@16: scope:[] from @15
|
||||
to:@17
|
||||
setFACtoMEM: scope:[setFACtoMEM] from
|
||||
(void~) setFACtoMEM::$0 ← call prepareMEM (byte*) setFACtoMEM::mem
|
||||
asm { lda$fe ldy$ff jsr$bba2 }
|
||||
@ -1054,24 +1105,24 @@ setFACtoMEM: scope:[setFACtoMEM] from
|
||||
setFACtoMEM::@return: scope:[setFACtoMEM] from setFACtoMEM
|
||||
return
|
||||
to:@return
|
||||
@16: scope:[] from @15
|
||||
to:@17
|
||||
@17: scope:[] from @16
|
||||
to:@18
|
||||
setFACtoPIhalf: scope:[setFACtoPIhalf] from
|
||||
asm { lda#$e0 ldy#$e2 jsr$bba2 }
|
||||
to:setFACtoPIhalf::@return
|
||||
setFACtoPIhalf::@return: scope:[setFACtoPIhalf] from setFACtoPIhalf
|
||||
return
|
||||
to:@return
|
||||
@17: scope:[] from @16
|
||||
to:@18
|
||||
@18: scope:[] from @17
|
||||
to:@19
|
||||
setFACto2PI: scope:[setFACto2PI] from
|
||||
asm { lda#$e5 ldy#$e2 jsr$bba2 }
|
||||
to:setFACto2PI::@return
|
||||
setFACto2PI::@return: scope:[setFACto2PI] from setFACto2PI
|
||||
return
|
||||
to:@return
|
||||
@18: scope:[] from @17
|
||||
to:@19
|
||||
@19: scope:[] from @18
|
||||
to:@20
|
||||
setARGtoMEM: scope:[setARGtoMEM] from
|
||||
(void~) setARGtoMEM::$0 ← call prepareMEM (byte*) setARGtoMEM::mem
|
||||
asm { lda$fe ldy$ff jsr$ba8c }
|
||||
@ -1079,8 +1130,8 @@ setARGtoMEM: scope:[setARGtoMEM] from
|
||||
setARGtoMEM::@return: scope:[setARGtoMEM] from setARGtoMEM
|
||||
return
|
||||
to:@return
|
||||
@19: scope:[] from @18
|
||||
to:@20
|
||||
@20: scope:[] from @19
|
||||
to:@21
|
||||
addMEMtoFAC: scope:[addMEMtoFAC] from
|
||||
(void~) addMEMtoFAC::$0 ← call prepareMEM (byte*) addMEMtoFAC::mem
|
||||
asm { lda$fe ldy$ff jsr$b867 }
|
||||
@ -1088,16 +1139,16 @@ addMEMtoFAC: scope:[addMEMtoFAC] from
|
||||
addMEMtoFAC::@return: scope:[addMEMtoFAC] from addMEMtoFAC
|
||||
return
|
||||
to:@return
|
||||
@20: scope:[] from @19
|
||||
to:@21
|
||||
@21: scope:[] from @20
|
||||
to:@22
|
||||
addARGtoFAC: scope:[addARGtoFAC] from
|
||||
asm { jsr$b86a }
|
||||
to:addARGtoFAC::@return
|
||||
addARGtoFAC::@return: scope:[addARGtoFAC] from addARGtoFAC
|
||||
return
|
||||
to:@return
|
||||
@21: scope:[] from @20
|
||||
to:@22
|
||||
@22: scope:[] from @21
|
||||
to:@23
|
||||
subFACfromMEM: scope:[subFACfromMEM] from
|
||||
(void~) subFACfromMEM::$0 ← call prepareMEM (byte*) subFACfromMEM::mem
|
||||
asm { lda$fe ldy$ff jsr$b850 }
|
||||
@ -1105,16 +1156,16 @@ subFACfromMEM: scope:[subFACfromMEM] from
|
||||
subFACfromMEM::@return: scope:[subFACfromMEM] from subFACfromMEM
|
||||
return
|
||||
to:@return
|
||||
@22: scope:[] from @21
|
||||
to:@23
|
||||
@23: scope:[] from @22
|
||||
to:@24
|
||||
subFACfromARG: scope:[subFACfromARG] from
|
||||
asm { jsr$b853 }
|
||||
to:subFACfromARG::@return
|
||||
subFACfromARG::@return: scope:[subFACfromARG] from subFACfromARG
|
||||
return
|
||||
to:@return
|
||||
@23: scope:[] from @22
|
||||
to:@24
|
||||
@24: scope:[] from @23
|
||||
to:@25
|
||||
divMEMbyFAC: scope:[divMEMbyFAC] from
|
||||
(void~) divMEMbyFAC::$0 ← call prepareMEM (byte*) divMEMbyFAC::mem
|
||||
asm { lda$fe ldy$ff jsr$bb0f }
|
||||
@ -1122,8 +1173,8 @@ divMEMbyFAC: scope:[divMEMbyFAC] from
|
||||
divMEMbyFAC::@return: scope:[divMEMbyFAC] from divMEMbyFAC
|
||||
return
|
||||
to:@return
|
||||
@24: scope:[] from @23
|
||||
to:@25
|
||||
@25: scope:[] from @24
|
||||
to:@26
|
||||
mulFACbyMEM: scope:[mulFACbyMEM] from
|
||||
(void~) mulFACbyMEM::$0 ← call prepareMEM (byte*) mulFACbyMEM::mem
|
||||
asm { lda$fe ldy$ff jsr$ba28 }
|
||||
@ -1131,8 +1182,8 @@ mulFACbyMEM: scope:[mulFACbyMEM] from
|
||||
mulFACbyMEM::@return: scope:[mulFACbyMEM] from mulFACbyMEM
|
||||
return
|
||||
to:@return
|
||||
@25: scope:[] from @24
|
||||
to:@26
|
||||
@26: scope:[] from @25
|
||||
to:@27
|
||||
pwrMEMbyFAC: scope:[pwrMEMbyFAC] from
|
||||
(void~) pwrMEMbyFAC::$0 ← call prepareMEM (byte*) pwrMEMbyFAC::mem
|
||||
asm { lda$fe ldy$ff jsr$bf78 }
|
||||
@ -1140,88 +1191,88 @@ pwrMEMbyFAC: scope:[pwrMEMbyFAC] from
|
||||
pwrMEMbyFAC::@return: scope:[pwrMEMbyFAC] from pwrMEMbyFAC
|
||||
return
|
||||
to:@return
|
||||
@26: scope:[] from @25
|
||||
to:@27
|
||||
@27: scope:[] from @26
|
||||
to:@28
|
||||
intFAC: scope:[intFAC] from
|
||||
asm { jsr$bccc }
|
||||
to:intFAC::@return
|
||||
intFAC::@return: scope:[intFAC] from intFAC
|
||||
return
|
||||
to:@return
|
||||
@27: scope:[] from @26
|
||||
to:@28
|
||||
@28: scope:[] from @27
|
||||
to:@29
|
||||
sinFAC: scope:[sinFAC] from
|
||||
asm { jsr$e26b }
|
||||
to:sinFAC::@return
|
||||
sinFAC::@return: scope:[sinFAC] from sinFAC
|
||||
return
|
||||
to:@return
|
||||
@28: scope:[] from @27
|
||||
to:@29
|
||||
@29: scope:[] from @28
|
||||
to:@30
|
||||
cosFAC: scope:[cosFAC] from
|
||||
asm { jsr$e264 }
|
||||
to:cosFAC::@return
|
||||
cosFAC::@return: scope:[cosFAC] from cosFAC
|
||||
return
|
||||
to:@return
|
||||
@29: scope:[] from @28
|
||||
to:@30
|
||||
@30: scope:[] from @29
|
||||
to:@31
|
||||
tanFAC: scope:[tanFAC] from
|
||||
asm { jsr$e2b4 }
|
||||
to:tanFAC::@return
|
||||
tanFAC::@return: scope:[tanFAC] from tanFAC
|
||||
return
|
||||
to:@return
|
||||
@30: scope:[] from @29
|
||||
to:@31
|
||||
@31: scope:[] from @30
|
||||
to:@32
|
||||
atnFAC: scope:[atnFAC] from
|
||||
asm { jsr$e303 }
|
||||
to:atnFAC::@return
|
||||
atnFAC::@return: scope:[atnFAC] from atnFAC
|
||||
return
|
||||
to:@return
|
||||
@31: scope:[] from @30
|
||||
to:@32
|
||||
@32: scope:[] from @31
|
||||
to:@33
|
||||
sqrFAC: scope:[sqrFAC] from
|
||||
asm { jsr$bf71 }
|
||||
to:sqrFAC::@return
|
||||
sqrFAC::@return: scope:[sqrFAC] from sqrFAC
|
||||
return
|
||||
to:@return
|
||||
@32: scope:[] from @31
|
||||
to:@33
|
||||
@33: scope:[] from @32
|
||||
to:@34
|
||||
expFAC: scope:[expFAC] from
|
||||
asm { jsr$bfed }
|
||||
to:expFAC::@return
|
||||
expFAC::@return: scope:[expFAC] from expFAC
|
||||
return
|
||||
to:@return
|
||||
@33: scope:[] from @32
|
||||
to:@34
|
||||
@34: scope:[] from @33
|
||||
to:@35
|
||||
logFAC: scope:[logFAC] from
|
||||
asm { jsr$b9ea }
|
||||
to:logFAC::@return
|
||||
logFAC::@return: scope:[logFAC] from logFAC
|
||||
return
|
||||
to:@return
|
||||
@34: scope:[] from @33
|
||||
to:@35
|
||||
@35: scope:[] from @34
|
||||
to:@36
|
||||
divFACby10: scope:[divFACby10] from
|
||||
asm { jsr$bafe }
|
||||
to:divFACby10::@return
|
||||
divFACby10::@return: scope:[divFACby10] from divFACby10
|
||||
return
|
||||
to:@return
|
||||
@35: scope:[] from @34
|
||||
to:@36
|
||||
@36: scope:[] from @35
|
||||
to:@37
|
||||
mulFACby10: scope:[mulFACby10] from
|
||||
asm { jsr$bae2 }
|
||||
to:mulFACby10::@return
|
||||
mulFACby10::@return: scope:[mulFACby10] from mulFACby10
|
||||
return
|
||||
to:@return
|
||||
@36: scope:[] from @35
|
||||
to:@37
|
||||
@37: scope:[] from @36
|
||||
to:@38
|
||||
main: scope:[main] from
|
||||
(byte[]) main::f_i ← { (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[]) main::f_127 ← { (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 }
|
||||
@ -1253,15 +1304,15 @@ main::@2: scope:[main] from main::@1
|
||||
main::@return: scope:[main] from main::@2
|
||||
return
|
||||
to:@return
|
||||
@37: scope:[] from @36
|
||||
@38: scope:[] from @37
|
||||
call main
|
||||
to:@end
|
||||
@end: scope:[] from @37
|
||||
@end: scope:[] from @38
|
||||
|
||||
Removing unused procedure print_str
|
||||
Removing unused procedure print_sword
|
||||
Removing unused procedure print_sbyte
|
||||
Removing unused procedure print_dword
|
||||
Removing unused procedure print_sdword
|
||||
Removing unused procedure print_cls
|
||||
Removing unused procedure setARGtoFAC
|
||||
Removing unused procedure setFACtoARG
|
||||
@ -1281,6 +1332,7 @@ Removing unused procedure sqrFAC
|
||||
Removing unused procedure expFAC
|
||||
Removing unused procedure logFAC
|
||||
Removing unused procedure mulFACby10
|
||||
Removing unused procedure print_dword
|
||||
Eliminating unused variable - keeping the call (void~) print_word::$1
|
||||
Eliminating unused variable - keeping the call (void~) print_word::$3
|
||||
Eliminating unused variable - keeping the call (void~) print_byte::$1
|
||||
@ -1312,10 +1364,10 @@ Removing empty block @5
|
||||
Removing empty block @6
|
||||
Removing empty block @7
|
||||
Removing empty block @8
|
||||
Removing empty block @10
|
||||
Removing empty block @9
|
||||
Removing empty block @11
|
||||
Removing empty block getFAC::@1
|
||||
Removing empty block @12
|
||||
Removing empty block getFAC::@1
|
||||
Removing empty block @13
|
||||
Removing empty block @14
|
||||
Removing empty block @15
|
||||
@ -1340,6 +1392,7 @@ Removing empty block @33
|
||||
Removing empty block @34
|
||||
Removing empty block @35
|
||||
Removing empty block @36
|
||||
Removing empty block @37
|
||||
Removing empty block main::@2
|
||||
PROCEDURE MODIFY VARIABLE ANALYSIS
|
||||
print_ln modifies line_cursor
|
||||
@ -1372,7 +1425,7 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN
|
||||
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
|
||||
(byte*) line_cursor#0 ← (byte*) SCREEN#0
|
||||
(byte*) char_cursor#0 ← (byte*) line_cursor#0
|
||||
to:@9
|
||||
to:@10
|
||||
print_ln: scope:[print_ln] from main::@15
|
||||
(byte*) char_cursor#29 ← phi( main::@15/(byte*) char_cursor#11 )
|
||||
(byte*) line_cursor#12 ← phi( main::@15/(byte*) line_cursor#13 )
|
||||
@ -1456,12 +1509,12 @@ print_char::@return: scope:[print_char] from print_char
|
||||
(byte*) char_cursor#10 ← (byte*) char_cursor#24
|
||||
return
|
||||
to:@return
|
||||
@9: scope:[] from @begin
|
||||
@10: scope:[] from @begin
|
||||
(byte*) line_cursor#16 ← phi( @begin/(byte*) line_cursor#0 )
|
||||
(byte*) char_cursor#35 ← phi( @begin/(byte*) char_cursor#0 )
|
||||
(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:@37
|
||||
to:@38
|
||||
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
|
||||
@ -1550,9 +1603,9 @@ divFACby10: scope:[divFACby10] from main::@3
|
||||
divFACby10::@return: scope:[divFACby10] from divFACby10
|
||||
return
|
||||
to:@return
|
||||
main: scope:[main] from @37
|
||||
(byte*) line_cursor#29 ← phi( @37/(byte*) line_cursor#14 )
|
||||
(byte*) char_cursor#47 ← phi( @37/(byte*) char_cursor#33 )
|
||||
main: scope:[main] from @38
|
||||
(byte*) line_cursor#29 ← phi( @38/(byte*) line_cursor#14 )
|
||||
(byte*) char_cursor#47 ← phi( @38/(byte*) char_cursor#33 )
|
||||
(byte[]) main::f_i#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[]) main::f_127#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*) main::f_2pi#0 ← ((byte*)) (word/dword/signed dword) 58085
|
||||
@ -1671,23 +1724,23 @@ main::@return: scope:[main] from main::@16
|
||||
(byte*) line_cursor#4 ← (byte*) line_cursor#10
|
||||
return
|
||||
to:@return
|
||||
@37: scope:[] from @9
|
||||
(byte*) line_cursor#14 ← phi( @9/(byte*) line_cursor#16 )
|
||||
(byte*) char_cursor#33 ← phi( @9/(byte*) char_cursor#35 )
|
||||
@38: scope:[] from @10
|
||||
(byte*) line_cursor#14 ← phi( @10/(byte*) line_cursor#16 )
|
||||
(byte*) char_cursor#33 ← phi( @10/(byte*) char_cursor#35 )
|
||||
call main param-assignment
|
||||
to:@38
|
||||
@38: scope:[] from @37
|
||||
(byte*) line_cursor#11 ← phi( @37/(byte*) line_cursor#4 )
|
||||
(byte*) char_cursor#28 ← phi( @37/(byte*) char_cursor#13 )
|
||||
to:@39
|
||||
@39: scope:[] from @38
|
||||
(byte*) line_cursor#11 ← phi( @38/(byte*) line_cursor#4 )
|
||||
(byte*) char_cursor#28 ← phi( @38/(byte*) char_cursor#13 )
|
||||
(byte*) char_cursor#14 ← (byte*) char_cursor#28
|
||||
(byte*) line_cursor#5 ← (byte*) line_cursor#11
|
||||
to:@end
|
||||
@end: scope:[] from @38
|
||||
@end: scope:[] from @39
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @37
|
||||
(label) @10
|
||||
(label) @38
|
||||
(label) @9
|
||||
(label) @39
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) SCREEN
|
||||
@ -2068,9 +2121,9 @@ Succesful SSA optimization Pass2NopCastElimination
|
||||
Culled Empty Block (label) print_ln::@2
|
||||
Culled Empty Block (label) print_word::@2
|
||||
Culled Empty Block (label) print_byte::@2
|
||||
Culled Empty Block (label) @9
|
||||
Culled Empty Block (label) @10
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) @38
|
||||
Culled Empty Block (label) @39
|
||||
Succesful SSA optimization Pass2CullEmptyBlocks
|
||||
Not aliassing across scopes: line_cursor#6 line_cursor#13
|
||||
Not aliassing across scopes: print_byte::b#2 print_byte::b#0
|
||||
@ -2139,12 +2192,12 @@ Constant inlined setMEMtoFAC::mem#0 = (const byte[]) main::f_127#0
|
||||
Constant inlined mulFACbyMEM::mem#1 = (const byte[]) main::f_127#0
|
||||
Constant inlined setFAC::w#0 = (word/signed word/dword/signed dword) 1275
|
||||
Succesful SSA optimization Pass2ConstantInlining
|
||||
Block Sequence Planned @begin @37 @end main main::@3 main::@4 main::@1 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@13 main::@14 main::@15 main::@16 main::@return print_ln print_ln::@1 print_ln::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return divFACby10 divFACby10::@return
|
||||
Block Sequence Planned @begin @38 @end main main::@3 main::@4 main::@1 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@13 main::@14 main::@15 main::@16 main::@return print_ln print_ln::@1 print_ln::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return divFACby10 divFACby10::@return
|
||||
Added new block during phi lifting main::@17(between main::@16 and main::@1)
|
||||
Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1)
|
||||
Block Sequence Planned @begin @37 @end main main::@3 main::@4 main::@1 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@13 main::@14 main::@15 main::@16 main::@return main::@17 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return divFACby10 divFACby10::@return
|
||||
Block Sequence Planned @begin @38 @end main main::@3 main::@4 main::@1 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@13 main::@14 main::@15 main::@16 main::@return main::@17 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return divFACby10 divFACby10::@return
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @37
|
||||
Adding NOP phi() at start of @38
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@3
|
||||
@ -2215,9 +2268,9 @@ Coalesced [87] prepareMEM::mem#6 ← prepareMEM::mem#4
|
||||
Coalesced [104] prepareMEM::mem#8 ← prepareMEM::mem#1
|
||||
Coalesced down to 9 phi equivalence classes
|
||||
Culled Empty Block (label) print_ln::@3
|
||||
Block Sequence Planned @begin @37 @end main main::@3 main::@4 main::@1 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@13 main::@14 main::@15 main::@16 main::@return main::@17 print_ln print_ln::@1 print_ln::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return divFACby10 divFACby10::@return
|
||||
Block Sequence Planned @begin @38 @end main main::@3 main::@4 main::@1 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@13 main::@14 main::@15 main::@16 main::@return main::@17 print_ln print_ln::@1 print_ln::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return divFACby10 divFACby10::@return
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @37
|
||||
Adding NOP phi() at start of @38
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@3
|
||||
@ -2263,14 +2316,14 @@ Propagating live ranges...
|
||||
FINAL CONTROL FLOW GRAPH
|
||||
@begin: scope:[] from
|
||||
[0] phi() [ ] ( )
|
||||
to:@37
|
||||
@37: scope:[] from @begin
|
||||
to:@38
|
||||
@38: scope:[] from @begin
|
||||
[1] phi() [ ] ( )
|
||||
[2] call main param-assignment [ ] ( )
|
||||
to:@end
|
||||
@end: scope:[] from @37
|
||||
@end: scope:[] from @38
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @37
|
||||
main: scope:[main] from @38
|
||||
[4] phi() [ ] ( main:2 [ ] )
|
||||
[5] call setFAC param-assignment [ ] ( main:2 [ ] )
|
||||
to:main::@3
|
||||
@ -2471,59 +2524,59 @@ divFACby10::@return: scope:[divFACby10] from divFACby10
|
||||
|
||||
DOMINATORS
|
||||
@begin dominated by @begin
|
||||
@37 dominated by @begin @37
|
||||
@end dominated by @end @begin @37
|
||||
main dominated by main @begin @37
|
||||
main::@3 dominated by main main::@3 @begin @37
|
||||
main::@4 dominated by main main::@3 main::@4 @begin @37
|
||||
main::@1 dominated by main main::@1 main::@3 main::@4 @begin @37
|
||||
main::@6 dominated by main main::@1 main::@6 main::@3 main::@4 @begin @37
|
||||
main::@7 dominated by main::@7 main main::@1 main::@6 main::@3 main::@4 @begin @37
|
||||
main::@8 dominated by main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @37
|
||||
main::@9 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @37
|
||||
main::@10 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @37 main::@10
|
||||
main::@11 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @37 main::@11 main::@10
|
||||
main::@12 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @37 main::@11 main::@10 main::@12
|
||||
main::@13 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @37 main::@11 main::@10 main::@13 main::@12
|
||||
main::@14 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @37 main::@11 main::@10 main::@13 main::@12 main::@14
|
||||
main::@15 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @37 main::@11 main::@10 main::@13 main::@12 main::@15 main::@14
|
||||
main::@16 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @37 main::@11 main::@10 main::@16 main::@13 main::@12 main::@15 main::@14
|
||||
main::@return dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @37 main::@return main::@11 main::@10 main::@16 main::@13 main::@12 main::@15 main::@14
|
||||
main::@17 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @37 main::@11 main::@10 main::@17 main::@16 main::@13 main::@12 main::@15 main::@14
|
||||
print_ln dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @37 print_ln main::@11 main::@10 main::@13 main::@12 main::@15 main::@14
|
||||
print_ln::@1 dominated by main::@9 print_ln::@1 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @37 print_ln main::@11 main::@10 main::@13 main::@12 main::@15 main::@14
|
||||
print_ln::@return dominated by main::@9 print_ln::@1 main::@7 main::@8 main print_ln::@return main::@1 main::@6 main::@3 main::@4 @begin @37 print_ln main::@11 main::@10 main::@13 main::@12 main::@15 main::@14
|
||||
print_word dominated by main::@9 main::@7 main::@8 main print_word main::@1 main::@6 main::@3 main::@4 @begin @37 main::@11 main::@10 main::@13 main::@12 main::@14
|
||||
print_word::@1 dominated by main::@9 main::@7 main::@8 main print_word main::@1 main::@6 main::@3 main::@4 @begin @37 print_word::@1 main::@11 main::@10 main::@13 main::@12 main::@14
|
||||
print_word::@return dominated by main::@9 main::@7 main::@8 main print_word main::@1 main::@6 main::@3 main::@4 @begin @37 print_word::@return print_word::@1 main::@11 main::@10 main::@13 main::@12 main::@14
|
||||
print_byte dominated by main::@9 main::@7 main::@8 main print_word main::@1 main::@6 main::@3 main::@4 @begin @37 main::@11 main::@10 print_byte main::@13 main::@12 main::@14
|
||||
print_byte::@1 dominated by main::@9 main::@7 main::@8 main print_word main::@1 main::@6 main::@3 main::@4 @begin @37 print_byte::@1 main::@11 main::@10 print_byte main::@13 main::@12 main::@14
|
||||
print_byte::@return dominated by main::@9 main::@7 main::@8 main print_word main::@1 main::@6 main::@3 main::@4 @begin @37 print_byte::@return print_byte::@1 main::@11 main::@10 print_byte main::@13 main::@12 main::@14
|
||||
print_char dominated by main::@9 main::@7 main::@8 main print_word print_char main::@1 main::@6 main::@3 main::@4 @begin @37 main::@11 main::@10 print_byte main::@13 main::@12 main::@14
|
||||
print_char::@return dominated by main::@9 main::@7 main::@8 main print_word print_char main::@1 main::@6 main::@3 main::@4 print_char::@return @begin @37 main::@11 main::@10 print_byte main::@13 main::@12 main::@14
|
||||
getFAC dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @37 getFAC main::@11 main::@10 main::@13 main::@12
|
||||
getFAC::@return dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @37 getFAC main::@11 main::@10 main::@13 main::@12 getFAC::@return
|
||||
addMEMtoFAC dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @37 addMEMtoFAC main::@11 main::@10 main::@12
|
||||
addMEMtoFAC::@1 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @37 addMEMtoFAC::@1 addMEMtoFAC main::@11 main::@10 main::@12
|
||||
addMEMtoFAC::@return dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @37 addMEMtoFAC::@1 addMEMtoFAC main::@11 main::@10 addMEMtoFAC::@return main::@12
|
||||
prepareMEM dominated by main @begin @37 prepareMEM
|
||||
prepareMEM::@return dominated by main @begin @37 prepareMEM::@return prepareMEM
|
||||
mulFACbyMEM dominated by main mulFACbyMEM main::@1 main::@6 main::@3 main::@4 @begin @37
|
||||
mulFACbyMEM::@1 dominated by main mulFACbyMEM main::@1 main::@6 main::@3 main::@4 @begin @37 mulFACbyMEM::@1
|
||||
mulFACbyMEM::@return dominated by main mulFACbyMEM::@return mulFACbyMEM main::@1 main::@6 main::@3 main::@4 @begin @37 mulFACbyMEM::@1
|
||||
sinFAC dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @37 sinFAC main::@10
|
||||
sinFAC::@return dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @37 sinFAC sinFAC::@return main::@10
|
||||
divMEMbyFAC dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @37 divMEMbyFAC
|
||||
divMEMbyFAC::@1 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @37 divMEMbyFAC::@1 divMEMbyFAC
|
||||
divMEMbyFAC::@return dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @37 divMEMbyFAC::@1 divMEMbyFAC divMEMbyFAC::@return
|
||||
setFAC dominated by main @begin @37 setFAC
|
||||
setFAC::@1 dominated by main @begin @37 setFAC setFAC::@1
|
||||
setFAC::@return dominated by setFAC::@return main @begin @37 setFAC setFAC::@1
|
||||
setMEMtoFAC dominated by main main::@3 main::@4 @begin @37 setMEMtoFAC
|
||||
setMEMtoFAC::@1 dominated by main main::@3 main::@4 @begin @37 setMEMtoFAC setMEMtoFAC::@1
|
||||
setMEMtoFAC::@return dominated by main main::@3 main::@4 @begin @37 setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return
|
||||
divFACby10 dominated by main main::@3 @begin @37 divFACby10
|
||||
divFACby10::@return dominated by divFACby10::@return main main::@3 @begin @37 divFACby10
|
||||
@38 dominated by @begin @38
|
||||
@end dominated by @end @begin @38
|
||||
main dominated by main @begin @38
|
||||
main::@3 dominated by main main::@3 @begin @38
|
||||
main::@4 dominated by main main::@3 main::@4 @begin @38
|
||||
main::@1 dominated by main main::@1 main::@3 main::@4 @begin @38
|
||||
main::@6 dominated by main main::@1 main::@6 main::@3 main::@4 @begin @38
|
||||
main::@7 dominated by main::@7 main main::@1 main::@6 main::@3 main::@4 @begin @38
|
||||
main::@8 dominated by main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @38
|
||||
main::@9 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @38
|
||||
main::@10 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @38 main::@10
|
||||
main::@11 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @38 main::@11 main::@10
|
||||
main::@12 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @38 main::@11 main::@10 main::@12
|
||||
main::@13 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @38 main::@11 main::@10 main::@13 main::@12
|
||||
main::@14 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @38 main::@11 main::@10 main::@13 main::@12 main::@14
|
||||
main::@15 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @38 main::@11 main::@10 main::@13 main::@12 main::@15 main::@14
|
||||
main::@16 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @38 main::@11 main::@10 main::@16 main::@13 main::@12 main::@15 main::@14
|
||||
main::@return dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @38 main::@return main::@11 main::@10 main::@16 main::@13 main::@12 main::@15 main::@14
|
||||
main::@17 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @38 main::@11 main::@10 main::@17 main::@16 main::@13 main::@12 main::@15 main::@14
|
||||
print_ln dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @38 print_ln main::@11 main::@10 main::@13 main::@12 main::@15 main::@14
|
||||
print_ln::@1 dominated by main::@9 print_ln::@1 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @38 print_ln main::@11 main::@10 main::@13 main::@12 main::@15 main::@14
|
||||
print_ln::@return dominated by main::@9 print_ln::@1 main::@7 main::@8 main print_ln::@return main::@1 main::@6 main::@3 main::@4 @begin @38 print_ln main::@11 main::@10 main::@13 main::@12 main::@15 main::@14
|
||||
print_word dominated by main::@9 main::@7 main::@8 main print_word main::@1 main::@6 main::@3 main::@4 @begin @38 main::@11 main::@10 main::@13 main::@12 main::@14
|
||||
print_word::@1 dominated by main::@9 main::@7 main::@8 main print_word main::@1 main::@6 main::@3 main::@4 @begin @38 print_word::@1 main::@11 main::@10 main::@13 main::@12 main::@14
|
||||
print_word::@return dominated by main::@9 main::@7 main::@8 main print_word main::@1 main::@6 main::@3 main::@4 @begin @38 print_word::@return print_word::@1 main::@11 main::@10 main::@13 main::@12 main::@14
|
||||
print_byte dominated by main::@9 main::@7 main::@8 main print_word main::@1 main::@6 main::@3 main::@4 @begin @38 main::@11 main::@10 print_byte main::@13 main::@12 main::@14
|
||||
print_byte::@1 dominated by main::@9 main::@7 main::@8 main print_word main::@1 main::@6 main::@3 main::@4 @begin @38 print_byte::@1 main::@11 main::@10 print_byte main::@13 main::@12 main::@14
|
||||
print_byte::@return dominated by main::@9 main::@7 main::@8 main print_word main::@1 main::@6 main::@3 main::@4 @begin @38 print_byte::@return print_byte::@1 main::@11 main::@10 print_byte main::@13 main::@12 main::@14
|
||||
print_char dominated by main::@9 main::@7 main::@8 main print_word print_char main::@1 main::@6 main::@3 main::@4 @begin @38 main::@11 main::@10 print_byte main::@13 main::@12 main::@14
|
||||
print_char::@return dominated by main::@9 main::@7 main::@8 main print_word print_char main::@1 main::@6 main::@3 main::@4 print_char::@return @begin @38 main::@11 main::@10 print_byte main::@13 main::@12 main::@14
|
||||
getFAC dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @38 getFAC main::@11 main::@10 main::@13 main::@12
|
||||
getFAC::@return dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @38 getFAC main::@11 main::@10 main::@13 main::@12 getFAC::@return
|
||||
addMEMtoFAC dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @38 addMEMtoFAC main::@11 main::@10 main::@12
|
||||
addMEMtoFAC::@1 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @38 addMEMtoFAC::@1 addMEMtoFAC main::@11 main::@10 main::@12
|
||||
addMEMtoFAC::@return dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @38 addMEMtoFAC::@1 addMEMtoFAC main::@11 main::@10 addMEMtoFAC::@return main::@12
|
||||
prepareMEM dominated by main @begin @38 prepareMEM
|
||||
prepareMEM::@return dominated by main @begin @38 prepareMEM::@return prepareMEM
|
||||
mulFACbyMEM dominated by main mulFACbyMEM main::@1 main::@6 main::@3 main::@4 @begin @38
|
||||
mulFACbyMEM::@1 dominated by main mulFACbyMEM main::@1 main::@6 main::@3 main::@4 @begin @38 mulFACbyMEM::@1
|
||||
mulFACbyMEM::@return dominated by main mulFACbyMEM::@return mulFACbyMEM main::@1 main::@6 main::@3 main::@4 @begin @38 mulFACbyMEM::@1
|
||||
sinFAC dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @38 sinFAC main::@10
|
||||
sinFAC::@return dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @38 sinFAC sinFAC::@return main::@10
|
||||
divMEMbyFAC dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @38 divMEMbyFAC
|
||||
divMEMbyFAC::@1 dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @38 divMEMbyFAC::@1 divMEMbyFAC
|
||||
divMEMbyFAC::@return dominated by main::@9 main::@7 main::@8 main main::@1 main::@6 main::@3 main::@4 @begin @38 divMEMbyFAC::@1 divMEMbyFAC divMEMbyFAC::@return
|
||||
setFAC dominated by main @begin @38 setFAC
|
||||
setFAC::@1 dominated by main @begin @38 setFAC setFAC::@1
|
||||
setFAC::@return dominated by setFAC::@return main @begin @38 setFAC setFAC::@1
|
||||
setMEMtoFAC dominated by main main::@3 main::@4 @begin @38 setMEMtoFAC
|
||||
setMEMtoFAC::@1 dominated by main main::@3 main::@4 @begin @38 setMEMtoFAC setMEMtoFAC::@1
|
||||
setMEMtoFAC::@return dominated by main main::@3 main::@4 @begin @38 setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return
|
||||
divFACby10 dominated by main main::@3 @begin @38 divFACby10
|
||||
divFACby10::@return dominated by divFACby10::@return main main::@3 @begin @38 divFACby10
|
||||
|
||||
NATURAL LOOPS
|
||||
Found back edge: Loop head: main::@1 tails: main::@17 blocks: null
|
||||
@ -2687,17 +2740,17 @@ INITIAL ASM
|
||||
.label char_cursor = 7
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @37 [phi:@begin->@37]
|
||||
b37_from_bbegin:
|
||||
jmp b37
|
||||
//SEG4 @37
|
||||
b37:
|
||||
//SEG3 [1] phi from @begin to @38 [phi:@begin->@38]
|
||||
b38_from_bbegin:
|
||||
jmp b38
|
||||
//SEG4 @38
|
||||
b38:
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
//SEG6 [4] phi from @37 to main [phi:@37->main]
|
||||
main_from_b37:
|
||||
//SEG6 [4] phi from @38 to main [phi:@38->main]
|
||||
main_from_b38:
|
||||
jsr main
|
||||
//SEG7 [3] phi from @37 to @end [phi:@37->@end]
|
||||
bend_from_b37:
|
||||
//SEG7 [3] phi from @38 to @end [phi:@38->@end]
|
||||
bend_from_b38:
|
||||
jmp bend
|
||||
//SEG8 @end
|
||||
bend:
|
||||
@ -2800,9 +2853,9 @@ main: {
|
||||
//SEG43 [84] phi from main::@8 to setFAC [phi:main::@8->setFAC]
|
||||
setFAC_from_b8:
|
||||
//SEG44 [84] phi (word) setFAC::w#3 = (byte/signed byte/word/signed word/dword/signed dword) 25 [phi:main::@8->setFAC#0] -- vwuz1=vbuc1
|
||||
lda #$19
|
||||
lda #<$19
|
||||
sta setFAC.w
|
||||
lda #0
|
||||
lda #>$19
|
||||
sta setFAC.w+1
|
||||
jsr setFAC
|
||||
//SEG45 [19] phi from main::@8 to main::@9 [phi:main::@8->main::@9]
|
||||
@ -3337,17 +3390,17 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.label char_cursor = 5
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @37 [phi:@begin->@37]
|
||||
b37_from_bbegin:
|
||||
jmp b37
|
||||
//SEG4 @37
|
||||
b37:
|
||||
//SEG3 [1] phi from @begin to @38 [phi:@begin->@38]
|
||||
b38_from_bbegin:
|
||||
jmp b38
|
||||
//SEG4 @38
|
||||
b38:
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
//SEG6 [4] phi from @37 to main [phi:@37->main]
|
||||
main_from_b37:
|
||||
//SEG6 [4] phi from @38 to main [phi:@38->main]
|
||||
main_from_b38:
|
||||
jsr main
|
||||
//SEG7 [3] phi from @37 to @end [phi:@37->@end]
|
||||
bend_from_b37:
|
||||
//SEG7 [3] phi from @38 to @end [phi:@38->@end]
|
||||
bend_from_b38:
|
||||
jmp bend
|
||||
//SEG8 @end
|
||||
bend:
|
||||
@ -3450,9 +3503,9 @@ main: {
|
||||
//SEG43 [84] phi from main::@8 to setFAC [phi:main::@8->setFAC]
|
||||
setFAC_from_b8:
|
||||
//SEG44 [84] phi (word) setFAC::w#3 = (byte/signed byte/word/signed word/dword/signed dword) 25 [phi:main::@8->setFAC#0] -- vwuz1=vbuc1
|
||||
lda #$19
|
||||
lda #<$19
|
||||
sta setFAC.w
|
||||
lda #0
|
||||
lda #>$19
|
||||
sta setFAC.w+1
|
||||
jsr setFAC
|
||||
//SEG45 [19] phi from main::@8 to main::@9 [phi:main::@8->main::@9]
|
||||
@ -3840,7 +3893,7 @@ divFACby10: {
|
||||
}
|
||||
|
||||
ASSEMBLER OPTIMIZATIONS
|
||||
Removing instruction jmp b37
|
||||
Removing instruction jmp b38
|
||||
Removing instruction jmp bend
|
||||
Removing instruction jmp b3
|
||||
Removing instruction jmp b4
|
||||
@ -3882,9 +3935,9 @@ Succesful ASM optimization Pass5NextJumpElimination
|
||||
Replacing label b1_from_b1 with b1
|
||||
Replacing label b1_from_b1 with b1
|
||||
Removing instruction bbegin:
|
||||
Removing instruction b37_from_bbegin:
|
||||
Removing instruction main_from_b37:
|
||||
Removing instruction bend_from_b37:
|
||||
Removing instruction b38_from_bbegin:
|
||||
Removing instruction main_from_b38:
|
||||
Removing instruction bend_from_b38:
|
||||
Removing instruction b3_from_main:
|
||||
Removing instruction b4_from_b3:
|
||||
Removing instruction setMEMtoFAC_from_b4:
|
||||
@ -3907,7 +3960,7 @@ Removing instruction print_ln_from_b15:
|
||||
Removing instruction b1_from_print_ln:
|
||||
Removing instruction b1_from_b1:
|
||||
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||
Removing instruction b37:
|
||||
Removing instruction b38:
|
||||
Removing instruction bend:
|
||||
Removing instruction setFAC_from_main:
|
||||
Removing instruction b3:
|
||||
@ -3959,7 +4012,7 @@ Removing instruction breturn:
|
||||
Succesful ASM optimization Pass5UnusedLabelElimination
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(label) @37
|
||||
(label) @38
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) SCREEN
|
||||
@ -4099,12 +4152,12 @@ Score: 4973
|
||||
.label line_cursor = 3
|
||||
.label char_cursor = 5
|
||||
//SEG2 @begin
|
||||
//SEG3 [1] phi from @begin to @37 [phi:@begin->@37]
|
||||
//SEG4 @37
|
||||
//SEG3 [1] phi from @begin to @38 [phi:@begin->@38]
|
||||
//SEG4 @38
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
//SEG6 [4] phi from @37 to main [phi:@37->main]
|
||||
//SEG6 [4] phi from @38 to main [phi:@38->main]
|
||||
jsr main
|
||||
//SEG7 [3] phi from @37 to @end [phi:@37->@end]
|
||||
//SEG7 [3] phi from @38 to @end [phi:@38->@end]
|
||||
//SEG8 @end
|
||||
//SEG9 main
|
||||
main: {
|
||||
@ -4182,9 +4235,9 @@ main: {
|
||||
//SEG42 [18] call setFAC param-assignment [ main::i#10 char_cursor#32 line_cursor#13 ] ( main:2 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
//SEG43 [84] phi from main::@8 to setFAC [phi:main::@8->setFAC]
|
||||
//SEG44 [84] phi (word) setFAC::w#3 = (byte/signed byte/word/signed word/dword/signed dword) 25 [phi:main::@8->setFAC#0] -- vwuz1=vbuc1
|
||||
lda #$19
|
||||
lda #<$19
|
||||
sta setFAC.w
|
||||
lda #0
|
||||
lda #>$19
|
||||
sta setFAC.w+1
|
||||
jsr setFAC
|
||||
//SEG45 [19] phi from main::@8 to main::@9 [phi:main::@8->main::@9]
|
||||
|
@ -1,4 +1,4 @@
|
||||
(label) @37
|
||||
(label) @38
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) SCREEN
|
||||
|
@ -218,9 +218,9 @@ gen_sintab: {
|
||||
lda #>f_amp
|
||||
sta setMEMtoFAC.mem+1
|
||||
jsr setMEMtoFAC
|
||||
lda #2
|
||||
lda #<2
|
||||
sta setFAC.w
|
||||
lda #0
|
||||
lda #>2
|
||||
sta setFAC.w+1
|
||||
jsr setFAC
|
||||
lda #<f_amp
|
||||
@ -445,8 +445,8 @@ gen_chargen_sprite: {
|
||||
rol _1+1
|
||||
asl _1
|
||||
rol _1+1
|
||||
lda chargen
|
||||
clc
|
||||
lda chargen
|
||||
adc #<CHARGEN
|
||||
sta chargen
|
||||
lda chargen+1
|
||||
|
@ -1,13 +1,13 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi() [ ] ( )
|
||||
to:@46
|
||||
@46: scope:[] from @begin
|
||||
to:@47
|
||||
@47: scope:[] from @begin
|
||||
[1] phi() [ ] ( )
|
||||
[2] call main param-assignment [ ] ( )
|
||||
to:@end
|
||||
@end: scope:[] from @46
|
||||
@end: scope:[] from @47
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @46
|
||||
main: scope:[main] from @47
|
||||
[4] phi() [ ] ( main:2 [ ] )
|
||||
[5] call init param-assignment [ ] ( main:2 [ ] )
|
||||
to:main::@2
|
||||
|
@ -586,6 +586,15 @@ void print_dword(dword dw) {
|
||||
print_word(<dw);
|
||||
}
|
||||
|
||||
// Print a signed dword as HEX
|
||||
void print_sdword(signed dword dw) {
|
||||
if(dw<0) {
|
||||
print_char('-');
|
||||
dw = -dw;
|
||||
}
|
||||
print_dword((dword)dw);
|
||||
}
|
||||
|
||||
// Print a byte as HEX
|
||||
void print_byte(byte b) {
|
||||
// Table of hexadecimal digits
|
||||
@ -885,6 +894,19 @@ proc (void()) print_dword((dword) print_dword::dw)
|
||||
print_dword::@return:
|
||||
return
|
||||
endproc // print_dword()
|
||||
proc (void()) print_sdword((signed dword) print_sdword::dw)
|
||||
(boolean~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(boolean~) print_sdword::$1 ← ! (boolean~) print_sdword::$0
|
||||
if((boolean~) print_sdword::$1) goto print_sdword::@1
|
||||
(void~) print_sdword::$2 ← call print_char (byte) '-'
|
||||
(signed dword~) print_sdword::$3 ← - (signed dword) print_sdword::dw
|
||||
(signed dword) print_sdword::dw ← (signed dword~) print_sdword::$3
|
||||
print_sdword::@1:
|
||||
(dword~) print_sdword::$4 ← ((dword)) (signed dword) print_sdword::dw
|
||||
(void~) print_sdword::$5 ← call print_dword (dword~) print_sdword::$4
|
||||
print_sdword::@return:
|
||||
return
|
||||
endproc // print_sdword()
|
||||
proc (void()) print_byte((byte) print_byte::b)
|
||||
(byte[]) print_byte::hextab ← (string) "0123456789abcdef"
|
||||
(byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
@ -1457,6 +1479,16 @@ SYMBOLS
|
||||
(label) print_sbyte::@1
|
||||
(label) print_sbyte::@return
|
||||
(signed byte) print_sbyte::b
|
||||
(void()) print_sdword((signed dword) print_sdword::dw)
|
||||
(boolean~) print_sdword::$0
|
||||
(boolean~) print_sdword::$1
|
||||
(void~) print_sdword::$2
|
||||
(signed dword~) print_sdword::$3
|
||||
(dword~) print_sdword::$4
|
||||
(void~) print_sdword::$5
|
||||
(label) print_sdword::@1
|
||||
(label) print_sdword::@return
|
||||
(signed dword) print_sdword::dw
|
||||
(void()) print_str((byte*) print_str::str)
|
||||
(boolean~) print_str::$0
|
||||
(label) print_str::@1
|
||||
@ -1938,6 +1970,25 @@ print_dword::@return: scope:[print_dword] from print_dword
|
||||
to:@return
|
||||
@33: scope:[] from @32
|
||||
to:@34
|
||||
print_sdword: scope:[print_sdword] from
|
||||
(boolean~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(boolean~) print_sdword::$1 ← ! (boolean~) print_sdword::$0
|
||||
if((boolean~) print_sdword::$1) goto print_sdword::@1
|
||||
to:print_sdword::@2
|
||||
print_sdword::@1: scope:[print_sdword] from print_sdword print_sdword::@2
|
||||
(dword~) print_sdword::$4 ← ((dword)) (signed dword) print_sdword::dw
|
||||
(void~) print_sdword::$5 ← call print_dword (dword~) print_sdword::$4
|
||||
to:print_sdword::@return
|
||||
print_sdword::@2: scope:[print_sdword] from print_sdword
|
||||
(void~) print_sdword::$2 ← call print_char (byte) '-'
|
||||
(signed dword~) print_sdword::$3 ← - (signed dword) print_sdword::dw
|
||||
(signed dword) print_sdword::dw ← (signed dword~) print_sdword::$3
|
||||
to:print_sdword::@1
|
||||
print_sdword::@return: scope:[print_sdword] from print_sdword::@1
|
||||
return
|
||||
to:@return
|
||||
@34: scope:[] from @33
|
||||
to:@35
|
||||
print_byte: scope:[print_byte] from
|
||||
(byte[]) print_byte::hextab ← (string) "0123456789abcdef"
|
||||
(byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
@ -1948,8 +1999,8 @@ print_byte: scope:[print_byte] from
|
||||
print_byte::@return: scope:[print_byte] from print_byte
|
||||
return
|
||||
to:@return
|
||||
@34: scope:[] from @33
|
||||
to:@35
|
||||
@35: scope:[] from @34
|
||||
to:@36
|
||||
print_char: scope:[print_char] from
|
||||
*((byte*) char_cursor) ← (byte) print_char::ch
|
||||
(byte*) char_cursor ← ++ (byte*) char_cursor
|
||||
@ -1957,8 +2008,8 @@ print_char: scope:[print_char] from
|
||||
print_char::@return: scope:[print_char] from print_char
|
||||
return
|
||||
to:@return
|
||||
@35: scope:[] from @34
|
||||
to:@36
|
||||
@36: scope:[] from @35
|
||||
to:@37
|
||||
print_cls: scope:[print_cls] from
|
||||
(byte*) print_cls::sc ← (byte*) SCREEN
|
||||
to:print_cls::@1
|
||||
@ -1976,13 +2027,13 @@ print_cls::@2: scope:[print_cls] from print_cls::@1
|
||||
print_cls::@return: scope:[print_cls] from print_cls::@2
|
||||
return
|
||||
to:@return
|
||||
@36: scope:[] from @35
|
||||
@37: scope:[] from @36
|
||||
(byte) sinlen_x ← (byte/word/signed word/dword/signed dword) 221
|
||||
(byte[221]) sintab_x ← { fill( 221, 0) }
|
||||
(byte) sinlen_y ← (byte/word/signed word/dword/signed dword) 197
|
||||
(byte[197]) sintab_y ← { fill( 197, 0) }
|
||||
(byte*) sprites ← ((byte*)) (word/signed word/dword/signed dword) 8192
|
||||
to:@37
|
||||
to:@38
|
||||
main: scope:[main] from
|
||||
(void~) main::$0 ← call init
|
||||
to:main::@1
|
||||
@ -2001,8 +2052,8 @@ main::@4: scope:[main] from main::@3
|
||||
main::@return: scope:[main] from main::@4
|
||||
return
|
||||
to:@return
|
||||
@37: scope:[] from @36
|
||||
to:@38
|
||||
@38: scope:[] from @37
|
||||
to:@39
|
||||
init: scope:[init] from
|
||||
(void~) init::$0 ← call clear_screen
|
||||
(byte) init::i ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
@ -2028,8 +2079,8 @@ init::@2: scope:[init] from init::@1
|
||||
init::@return: scope:[init] from init::@2
|
||||
return
|
||||
to:@return
|
||||
@38: scope:[] from @37
|
||||
to:@39
|
||||
@39: scope:[] from @38
|
||||
to:@40
|
||||
clear_screen: scope:[clear_screen] from
|
||||
(byte*) clear_screen::sc ← (byte*) SCREEN
|
||||
to:clear_screen::@1
|
||||
@ -2045,10 +2096,10 @@ clear_screen::@2: scope:[clear_screen] from clear_screen::@1
|
||||
clear_screen::@return: scope:[clear_screen] from clear_screen::@2
|
||||
return
|
||||
to:@return
|
||||
@39: scope:[] from @38
|
||||
@40: scope:[] from @39
|
||||
(byte*) progress_cursor ← (byte*) SCREEN
|
||||
(byte) progress_idx ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:@40
|
||||
to:@41
|
||||
progress_init: scope:[progress_init] from
|
||||
(byte*) progress_cursor ← (byte*) progress_init::line
|
||||
(byte) progress_idx ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
@ -2056,8 +2107,8 @@ progress_init: scope:[progress_init] from
|
||||
progress_init::@return: scope:[progress_init] from progress_init
|
||||
return
|
||||
to:@return
|
||||
@40: scope:[] from @39
|
||||
to:@41
|
||||
@41: scope:[] from @40
|
||||
to:@42
|
||||
progress_inc: scope:[progress_inc] from
|
||||
(byte[]) progress_inc::progress_chars ← { (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 101, (byte/signed byte/word/signed word/dword/signed dword) 116, (byte/signed byte/word/signed word/dword/signed dword) 117, (byte/signed byte/word/signed word/dword/signed dword) 97, (byte/word/signed word/dword/signed dword) 246, (byte/word/signed word/dword/signed dword) 231, (byte/word/signed word/dword/signed dword) 234, (byte/word/signed word/dword/signed dword) 224 }
|
||||
(byte) progress_idx ← ++ (byte) progress_idx
|
||||
@ -2076,10 +2127,10 @@ progress_inc::@2: scope:[progress_inc] from progress_inc
|
||||
progress_inc::@return: scope:[progress_inc] from progress_inc::@1
|
||||
return
|
||||
to:@return
|
||||
@41: scope:[] from @40
|
||||
@42: scope:[] from @41
|
||||
(byte) sin_idx_x ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) sin_idx_y ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:@42
|
||||
to:@43
|
||||
anim: scope:[anim] from
|
||||
*((byte*) BORDERCOL) ← ++ *((byte*) BORDERCOL)
|
||||
(byte) anim::xidx ← (byte) sin_idx_x
|
||||
@ -2152,8 +2203,8 @@ anim::@10: scope:[anim] from anim::@4
|
||||
anim::@return: scope:[anim] from anim::@5
|
||||
return
|
||||
to:@return
|
||||
@42: scope:[] from @41
|
||||
to:@43
|
||||
@43: scope:[] from @42
|
||||
to:@44
|
||||
place_sprites: scope:[place_sprites] from
|
||||
*((byte*) SPRITES_ENABLE) ← (byte/signed byte/word/signed word/dword/signed dword) 127
|
||||
*((byte*) SPRITES_EXPAND_X) ← (byte/signed byte/word/signed word/dword/signed dword) 127
|
||||
@ -2190,8 +2241,8 @@ place_sprites::@2: scope:[place_sprites] from place_sprites::@1
|
||||
place_sprites::@return: scope:[place_sprites] from place_sprites::@2
|
||||
return
|
||||
to:@return
|
||||
@43: scope:[] from @42
|
||||
to:@44
|
||||
@44: scope:[] from @43
|
||||
to:@45
|
||||
gen_sprites: scope:[gen_sprites] from
|
||||
(byte[]) gen_sprites::cml ← (string) "camelot"
|
||||
(byte*) gen_sprites::spr ← (byte*) sprites
|
||||
@ -2210,8 +2261,8 @@ gen_sprites::@2: scope:[gen_sprites] from gen_sprites::@1
|
||||
gen_sprites::@return: scope:[gen_sprites] from gen_sprites::@2
|
||||
return
|
||||
to:@return
|
||||
@44: scope:[] from @43
|
||||
to:@45
|
||||
@45: scope:[] from @44
|
||||
to:@46
|
||||
gen_chargen_sprite: scope:[gen_chargen_sprite] from
|
||||
(word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch
|
||||
(word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
@ -2283,8 +2334,8 @@ gen_chargen_sprite::@10: scope:[gen_chargen_sprite] from gen_chargen_sprite::@9
|
||||
gen_chargen_sprite::@return: scope:[gen_chargen_sprite] from gen_chargen_sprite::@10
|
||||
return
|
||||
to:@return
|
||||
@45: scope:[] from @44
|
||||
to:@46
|
||||
@46: scope:[] from @45
|
||||
to:@47
|
||||
gen_sintab: scope:[gen_sintab] from
|
||||
(byte[]) gen_sintab::f_i ← { (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[]) gen_sintab::f_min ← { (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 }
|
||||
@ -2330,10 +2381,10 @@ gen_sintab::@2: scope:[gen_sintab] from gen_sintab::@1
|
||||
gen_sintab::@return: scope:[gen_sintab] from gen_sintab::@2
|
||||
return
|
||||
to:@return
|
||||
@46: scope:[] from @45
|
||||
@47: scope:[] from @46
|
||||
call main
|
||||
to:@end
|
||||
@end: scope:[] from @46
|
||||
@end: scope:[] from @47
|
||||
|
||||
Removing unused procedure setFACtoARG
|
||||
Removing unused procedure setFACtoMEM
|
||||
@ -2356,8 +2407,9 @@ Removing unused procedure print_str
|
||||
Removing unused procedure print_ln
|
||||
Removing unused procedure print_sword
|
||||
Removing unused procedure print_sbyte
|
||||
Removing unused procedure print_dword
|
||||
Removing unused procedure print_sdword
|
||||
Removing unused procedure print_cls
|
||||
Removing unused procedure print_dword
|
||||
Removing unused procedure print_word
|
||||
Removing unused procedure print_byte
|
||||
Removing unused procedure print_char
|
||||
@ -2456,17 +2508,18 @@ Removing empty block @32
|
||||
Removing empty block @33
|
||||
Removing empty block @34
|
||||
Removing empty block @35
|
||||
Removing empty block @36
|
||||
Removing empty block main::@4
|
||||
Removing empty block @37
|
||||
Removing empty block @38
|
||||
Removing empty block @39
|
||||
Removing empty block clear_screen::@2
|
||||
Removing empty block @40
|
||||
Removing empty block @42
|
||||
Removing empty block place_sprites::@2
|
||||
Removing empty block @41
|
||||
Removing empty block @43
|
||||
Removing empty block gen_sprites::@2
|
||||
Removing empty block place_sprites::@2
|
||||
Removing empty block @44
|
||||
Removing empty block gen_sprites::@2
|
||||
Removing empty block @45
|
||||
Removing empty block @46
|
||||
Removing empty block gen_sintab::@2
|
||||
PROCEDURE MODIFY VARIABLE ANALYSIS
|
||||
main modifies progress_cursor
|
||||
@ -2621,19 +2674,19 @@ sinFAC::@return: scope:[sinFAC] from sinFAC
|
||||
to:@return
|
||||
@27: scope:[] from @begin
|
||||
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
|
||||
to:@36
|
||||
@36: scope:[] from @27
|
||||
to:@37
|
||||
@37: scope:[] from @27
|
||||
(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
|
||||
to:@39
|
||||
main: scope:[main] from @46
|
||||
(byte) sin_idx_y#24 ← phi( @46/(byte) sin_idx_y#17 )
|
||||
(byte) sin_idx_x#26 ← phi( @46/(byte) sin_idx_x#16 )
|
||||
(byte) progress_idx#30 ← phi( @46/(byte) progress_idx#35 )
|
||||
(byte*) progress_cursor#29 ← phi( @46/(byte*) progress_cursor#35 )
|
||||
to:@40
|
||||
main: scope:[main] from @47
|
||||
(byte) sin_idx_y#24 ← phi( @47/(byte) sin_idx_y#17 )
|
||||
(byte) sin_idx_x#26 ← phi( @47/(byte) sin_idx_x#16 )
|
||||
(byte) progress_idx#30 ← phi( @47/(byte) progress_idx#35 )
|
||||
(byte*) progress_cursor#29 ← phi( @47/(byte*) progress_cursor#35 )
|
||||
call init param-assignment
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main
|
||||
@ -2785,10 +2838,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
|
||||
@39: scope:[] from @36
|
||||
@40: scope:[] from @37
|
||||
(byte*) progress_cursor#7 ← (byte*) SCREEN#0
|
||||
(byte) progress_idx#7 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:@41
|
||||
to:@42
|
||||
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
|
||||
@ -2828,12 +2881,12 @@ progress_inc::@return: scope:[progress_inc] from progress_inc::@1
|
||||
(byte*) progress_cursor#11 ← (byte*) progress_cursor#25
|
||||
return
|
||||
to:@return
|
||||
@41: scope:[] from @39
|
||||
(byte) progress_idx#39 ← phi( @39/(byte) progress_idx#7 )
|
||||
(byte*) progress_cursor#39 ← phi( @39/(byte*) progress_cursor#7 )
|
||||
@42: scope:[] from @40
|
||||
(byte) progress_idx#39 ← phi( @40/(byte) progress_idx#7 )
|
||||
(byte*) progress_cursor#39 ← phi( @40/(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:@46
|
||||
to:@47
|
||||
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 )
|
||||
@ -3393,32 +3446,32 @@ gen_sintab::@return: scope:[gen_sintab] from gen_sintab::@23
|
||||
(byte*) progress_cursor#13 ← (byte*) progress_cursor#27
|
||||
return
|
||||
to:@return
|
||||
@46: scope:[] from @41
|
||||
(byte) sin_idx_y#17 ← phi( @41/(byte) sin_idx_y#2 )
|
||||
(byte) sin_idx_x#16 ← phi( @41/(byte) sin_idx_x#2 )
|
||||
(byte) progress_idx#35 ← phi( @41/(byte) progress_idx#39 )
|
||||
(byte*) progress_cursor#35 ← phi( @41/(byte*) progress_cursor#39 )
|
||||
@47: scope:[] from @42
|
||||
(byte) sin_idx_y#17 ← phi( @42/(byte) sin_idx_y#2 )
|
||||
(byte) sin_idx_x#16 ← phi( @42/(byte) sin_idx_x#2 )
|
||||
(byte) progress_idx#35 ← phi( @42/(byte) progress_idx#39 )
|
||||
(byte*) progress_cursor#35 ← phi( @42/(byte*) progress_cursor#39 )
|
||||
call main param-assignment
|
||||
to:@47
|
||||
@47: scope:[] from @46
|
||||
(byte) sin_idx_y#12 ← phi( @46/(byte) sin_idx_y#1 )
|
||||
(byte) sin_idx_x#12 ← phi( @46/(byte) sin_idx_x#1 )
|
||||
(byte) progress_idx#29 ← phi( @46/(byte) progress_idx#1 )
|
||||
(byte*) progress_cursor#28 ← phi( @46/(byte*) progress_cursor#1 )
|
||||
to:@48
|
||||
@48: scope:[] from @47
|
||||
(byte) sin_idx_y#12 ← phi( @47/(byte) sin_idx_y#1 )
|
||||
(byte) sin_idx_x#12 ← phi( @47/(byte) sin_idx_x#1 )
|
||||
(byte) progress_idx#29 ← phi( @47/(byte) progress_idx#1 )
|
||||
(byte*) progress_cursor#28 ← phi( @47/(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 @47
|
||||
@end: scope:[] from @48
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @27
|
||||
(label) @36
|
||||
(label) @39
|
||||
(label) @41
|
||||
(label) @46
|
||||
(label) @37
|
||||
(label) @40
|
||||
(label) @42
|
||||
(label) @47
|
||||
(label) @48
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BORDERCOL
|
||||
@ -4718,18 +4771,18 @@ Succesful SSA optimization PassNEliminateUnusedVars
|
||||
Eliminating Noop Cast (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#5
|
||||
Succesful SSA optimization Pass2NopCastElimination
|
||||
Culled Empty Block (label) @27
|
||||
Culled Empty Block (label) @36
|
||||
Culled Empty Block (label) @37
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@1
|
||||
Culled Empty Block (label) init::@3
|
||||
Culled Empty Block (label) init::@10
|
||||
Culled Empty Block (label) @39
|
||||
Culled Empty Block (label) @41
|
||||
Culled Empty Block (label) @40
|
||||
Culled Empty Block (label) @42
|
||||
Not culling empty block because it shares successor with its predecessor. (label) anim::@9
|
||||
Not culling empty block because it shares successor with its predecessor. (label) anim::@10
|
||||
Not culling empty block because it shares successor with its predecessor. (label) gen_chargen_sprite::@6
|
||||
Culled Empty Block (label) gen_sintab::@13
|
||||
Culled Empty Block (label) @47
|
||||
Culled Empty Block (label) @48
|
||||
Succesful SSA optimization Pass2CullEmptyBlocks
|
||||
Not culling empty block because it shares successor with its predecessor. (label) anim::@9
|
||||
Not culling empty block because it shares successor with its predecessor. (label) anim::@10
|
||||
@ -4989,7 +5042,7 @@ Constant inlined progress_idx#11 = (byte/signed byte/word/signed word/dword/sign
|
||||
Constant inlined gen_sprites::$3 = (const string) gen_sprites::cml#0
|
||||
Constant inlined anim::j2#0 = (byte/signed byte/word/signed word/dword/signed dword) 12
|
||||
Succesful SSA optimization Pass2ConstantInlining
|
||||
Block Sequence Planned @begin @46 @end main main::@2 main::@3 main::@6 main::@return anim anim::@1 anim::@6 anim::@2 anim::@7 anim::@3 anim::@8 anim::@9 anim::@4 anim::@10 anim::@5 anim::@return init init::@1 init::@2 init::@4 init::@5 init::@6 init::@7 init::@8 init::@9 init::@return clear_screen clear_screen::@1 clear_screen::@return gen_sintab gen_sintab::@3 gen_sintab::@4 gen_sintab::@5 gen_sintab::@6 gen_sintab::@7 gen_sintab::@8 gen_sintab::@9 gen_sintab::@10 gen_sintab::@11 gen_sintab::@12 gen_sintab::@1 gen_sintab::@14 gen_sintab::@15 gen_sintab::@16 gen_sintab::@17 gen_sintab::@18 gen_sintab::@19 gen_sintab::@20 gen_sintab::@21 gen_sintab::@22 gen_sintab::@23 gen_sintab::@return progress_inc progress_inc::@2 progress_inc::@1 progress_inc::@return getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return subFACfromARG subFACfromARG::@return setARGtoFAC setARGtoFAC::@return progress_init progress_init::@return gen_sprites gen_sprites::@1 gen_sprites::@3 gen_sprites::@return gen_chargen_sprite gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite::@7 gen_chargen_sprite::@5 gen_chargen_sprite::@8 gen_chargen_sprite::@9 gen_chargen_sprite::@10 gen_chargen_sprite::@return place_sprites place_sprites::@1 place_sprites::@return
|
||||
Block Sequence Planned @begin @47 @end main main::@2 main::@3 main::@6 main::@return anim anim::@1 anim::@6 anim::@2 anim::@7 anim::@3 anim::@8 anim::@9 anim::@4 anim::@10 anim::@5 anim::@return init init::@1 init::@2 init::@4 init::@5 init::@6 init::@7 init::@8 init::@9 init::@return clear_screen clear_screen::@1 clear_screen::@return gen_sintab gen_sintab::@3 gen_sintab::@4 gen_sintab::@5 gen_sintab::@6 gen_sintab::@7 gen_sintab::@8 gen_sintab::@9 gen_sintab::@10 gen_sintab::@11 gen_sintab::@12 gen_sintab::@1 gen_sintab::@14 gen_sintab::@15 gen_sintab::@16 gen_sintab::@17 gen_sintab::@18 gen_sintab::@19 gen_sintab::@20 gen_sintab::@21 gen_sintab::@22 gen_sintab::@23 gen_sintab::@return progress_inc progress_inc::@2 progress_inc::@1 progress_inc::@return getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return subFACfromARG subFACfromARG::@return setARGtoFAC setARGtoFAC::@return progress_init progress_init::@return gen_sprites gen_sprites::@1 gen_sprites::@3 gen_sprites::@return gen_chargen_sprite gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite::@7 gen_chargen_sprite::@5 gen_chargen_sprite::@8 gen_chargen_sprite::@9 gen_chargen_sprite::@10 gen_chargen_sprite::@return place_sprites place_sprites::@1 place_sprites::@return
|
||||
Added new block during phi lifting main::@7(between main::@6 and main::@2)
|
||||
Added new block during phi lifting anim::@11(between anim::@3 and anim::@1)
|
||||
Added new block during phi lifting anim::@12(between anim::@1 and anim::@2)
|
||||
@ -5006,9 +5059,9 @@ Added new block during phi lifting gen_chargen_sprite::@12(between gen_chargen_s
|
||||
Added new block during phi lifting gen_chargen_sprite::@13(between gen_chargen_sprite::@5 and gen_chargen_sprite::@4)
|
||||
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)
|
||||
Block Sequence Planned @begin @46 @end main main::@2 main::@3 main::@6 main::@return main::@7 anim anim::@1 anim::@6 anim::@2 anim::@7 anim::@3 anim::@8 anim::@9 anim::@4 anim::@10 anim::@5 anim::@return anim::@15 anim::@14 anim::@11 anim::@13 anim::@12 init init::@1 init::@2 init::@4 init::@5 init::@6 init::@7 init::@8 init::@9 init::@return init::@11 clear_screen clear_screen::@1 clear_screen::@return clear_screen::@3 gen_sintab gen_sintab::@3 gen_sintab::@4 gen_sintab::@5 gen_sintab::@6 gen_sintab::@7 gen_sintab::@8 gen_sintab::@9 gen_sintab::@10 gen_sintab::@11 gen_sintab::@12 gen_sintab::@1 gen_sintab::@14 gen_sintab::@15 gen_sintab::@16 gen_sintab::@17 gen_sintab::@18 gen_sintab::@19 gen_sintab::@20 gen_sintab::@21 gen_sintab::@22 gen_sintab::@23 gen_sintab::@return gen_sintab::@24 progress_inc progress_inc::@2 progress_inc::@1 progress_inc::@return progress_inc::@3 getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return subFACfromARG subFACfromARG::@return setARGtoFAC setARGtoFAC::@return progress_init progress_init::@return gen_sprites gen_sprites::@1 gen_sprites::@3 gen_sprites::@return gen_sprites::@4 gen_chargen_sprite gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite::@7 gen_chargen_sprite::@5 gen_chargen_sprite::@8 gen_chargen_sprite::@9 gen_chargen_sprite::@10 gen_chargen_sprite::@return gen_chargen_sprite::@11 gen_chargen_sprite::@12 gen_chargen_sprite::@13 gen_chargen_sprite::@14 place_sprites place_sprites::@1 place_sprites::@return place_sprites::@3
|
||||
Block Sequence Planned @begin @47 @end main main::@2 main::@3 main::@6 main::@return main::@7 anim anim::@1 anim::@6 anim::@2 anim::@7 anim::@3 anim::@8 anim::@9 anim::@4 anim::@10 anim::@5 anim::@return anim::@15 anim::@14 anim::@11 anim::@13 anim::@12 init init::@1 init::@2 init::@4 init::@5 init::@6 init::@7 init::@8 init::@9 init::@return init::@11 clear_screen clear_screen::@1 clear_screen::@return clear_screen::@3 gen_sintab gen_sintab::@3 gen_sintab::@4 gen_sintab::@5 gen_sintab::@6 gen_sintab::@7 gen_sintab::@8 gen_sintab::@9 gen_sintab::@10 gen_sintab::@11 gen_sintab::@12 gen_sintab::@1 gen_sintab::@14 gen_sintab::@15 gen_sintab::@16 gen_sintab::@17 gen_sintab::@18 gen_sintab::@19 gen_sintab::@20 gen_sintab::@21 gen_sintab::@22 gen_sintab::@23 gen_sintab::@return gen_sintab::@24 progress_inc progress_inc::@2 progress_inc::@1 progress_inc::@return progress_inc::@3 getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return subFACfromARG subFACfromARG::@return setARGtoFAC setARGtoFAC::@return progress_init progress_init::@return gen_sprites gen_sprites::@1 gen_sprites::@3 gen_sprites::@return gen_sprites::@4 gen_chargen_sprite gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite::@7 gen_chargen_sprite::@5 gen_chargen_sprite::@8 gen_chargen_sprite::@9 gen_chargen_sprite::@10 gen_chargen_sprite::@return gen_chargen_sprite::@11 gen_chargen_sprite::@12 gen_chargen_sprite::@13 gen_chargen_sprite::@14 place_sprites place_sprites::@1 place_sprites::@return place_sprites::@3
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @46
|
||||
Adding NOP phi() at start of @47
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@3
|
||||
@ -5187,9 +5240,9 @@ Culled Empty Block (label) gen_chargen_sprite::@12
|
||||
Culled Empty Block (label) gen_chargen_sprite::@13
|
||||
Culled Empty Block (label) gen_chargen_sprite::@14
|
||||
Culled Empty Block (label) place_sprites::@3
|
||||
Block Sequence Planned @begin @46 @end main main::@2 main::@3 main::@6 main::@return anim anim::@1 anim::@6 anim::@2 anim::@7 anim::@3 anim::@8 anim::@4 anim::@5 anim::@return anim::@15 anim::@14 init init::@1 init::@2 init::@4 init::@5 init::@6 init::@7 init::@8 init::@9 init::@return clear_screen clear_screen::@1 clear_screen::@return gen_sintab gen_sintab::@3 gen_sintab::@4 gen_sintab::@5 gen_sintab::@6 gen_sintab::@7 gen_sintab::@8 gen_sintab::@9 gen_sintab::@10 gen_sintab::@11 gen_sintab::@12 gen_sintab::@1 gen_sintab::@14 gen_sintab::@15 gen_sintab::@16 gen_sintab::@17 gen_sintab::@18 gen_sintab::@19 gen_sintab::@20 gen_sintab::@21 gen_sintab::@22 gen_sintab::@23 gen_sintab::@return progress_inc progress_inc::@2 progress_inc::@1 progress_inc::@return getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return subFACfromARG subFACfromARG::@return setARGtoFAC setARGtoFAC::@return progress_init progress_init::@return gen_sprites gen_sprites::@1 gen_sprites::@3 gen_sprites::@return gen_chargen_sprite gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite::@7 gen_chargen_sprite::@5 gen_chargen_sprite::@8 gen_chargen_sprite::@9 gen_chargen_sprite::@10 gen_chargen_sprite::@return place_sprites place_sprites::@1 place_sprites::@return
|
||||
Block Sequence Planned @begin @47 @end main main::@2 main::@3 main::@6 main::@return anim anim::@1 anim::@6 anim::@2 anim::@7 anim::@3 anim::@8 anim::@4 anim::@5 anim::@return anim::@15 anim::@14 init init::@1 init::@2 init::@4 init::@5 init::@6 init::@7 init::@8 init::@9 init::@return clear_screen clear_screen::@1 clear_screen::@return gen_sintab gen_sintab::@3 gen_sintab::@4 gen_sintab::@5 gen_sintab::@6 gen_sintab::@7 gen_sintab::@8 gen_sintab::@9 gen_sintab::@10 gen_sintab::@11 gen_sintab::@12 gen_sintab::@1 gen_sintab::@14 gen_sintab::@15 gen_sintab::@16 gen_sintab::@17 gen_sintab::@18 gen_sintab::@19 gen_sintab::@20 gen_sintab::@21 gen_sintab::@22 gen_sintab::@23 gen_sintab::@return progress_inc progress_inc::@2 progress_inc::@1 progress_inc::@return getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return subFACfromARG subFACfromARG::@return setARGtoFAC setARGtoFAC::@return progress_init progress_init::@return gen_sprites gen_sprites::@1 gen_sprites::@3 gen_sprites::@return gen_chargen_sprite gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite::@7 gen_chargen_sprite::@5 gen_chargen_sprite::@8 gen_chargen_sprite::@9 gen_chargen_sprite::@10 gen_chargen_sprite::@return place_sprites place_sprites::@1 place_sprites::@return
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @46
|
||||
Adding NOP phi() at start of @47
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@3
|
||||
@ -5273,14 +5326,14 @@ Propagating live ranges...
|
||||
FINAL CONTROL FLOW GRAPH
|
||||
@begin: scope:[] from
|
||||
[0] phi() [ ] ( )
|
||||
to:@46
|
||||
@46: scope:[] from @begin
|
||||
to:@47
|
||||
@47: scope:[] from @begin
|
||||
[1] phi() [ ] ( )
|
||||
[2] call main param-assignment [ ] ( )
|
||||
to:@end
|
||||
@end: scope:[] from @46
|
||||
@end: scope:[] from @47
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @46
|
||||
main: scope:[main] from @47
|
||||
[4] phi() [ ] ( main:2 [ ] )
|
||||
[5] call init param-assignment [ ] ( main:2 [ ] )
|
||||
to:main::@2
|
||||
@ -5742,111 +5795,111 @@ place_sprites::@return: scope:[place_sprites] from place_sprites::@1
|
||||
|
||||
DOMINATORS
|
||||
@begin dominated by @begin
|
||||
@46 dominated by @begin @46
|
||||
@end dominated by @end @begin @46
|
||||
main dominated by main @begin @46
|
||||
main::@2 dominated by main::@2 main @begin @46
|
||||
main::@3 dominated by main::@2 main::@3 main @begin @46
|
||||
main::@6 dominated by main::@2 main::@6 main::@3 main @begin @46
|
||||
main::@return dominated by main::@2 main::@6 main::@3 main::@return main @begin @46
|
||||
anim dominated by main::@2 main::@3 anim main @begin @46
|
||||
anim::@1 dominated by main::@2 main::@3 anim anim::@1 main @begin @46
|
||||
anim::@6 dominated by main::@2 main::@3 anim anim::@6 anim::@1 main @begin @46
|
||||
anim::@2 dominated by main::@2 main::@3 anim anim::@2 anim::@1 main @begin @46
|
||||
anim::@7 dominated by main::@2 main::@3 anim anim::@2 anim::@1 anim::@7 main @begin @46
|
||||
anim::@3 dominated by main::@2 main::@3 anim anim::@3 anim::@2 anim::@1 main @begin @46
|
||||
anim::@8 dominated by main::@2 main::@3 anim anim::@3 anim::@2 anim::@1 anim::@8 main @begin @46
|
||||
anim::@4 dominated by main::@2 main::@3 anim anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 main @begin @46
|
||||
anim::@5 dominated by main::@2 main::@3 anim anim::@5 anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 main @begin @46
|
||||
anim::@return dominated by main::@2 main::@3 anim anim::@5 anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 anim::@return main @begin @46
|
||||
anim::@15 dominated by main::@2 main::@3 anim anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 main @begin @46 anim::@15
|
||||
anim::@14 dominated by main::@2 main::@3 anim anim::@3 anim::@2 anim::@1 anim::@8 main @begin @46 anim::@14
|
||||
init dominated by init main @begin @46
|
||||
init::@1 dominated by init main @begin init::@1 @46
|
||||
init::@2 dominated by init main @begin init::@2 init::@1 @46
|
||||
init::@4 dominated by init main @begin init::@2 init::@1 init::@4 @46
|
||||
init::@5 dominated by init main @begin init::@2 init::@1 init::@5 init::@4 @46
|
||||
init::@6 dominated by init main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46
|
||||
init::@7 dominated by init main @begin init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 @46
|
||||
init::@8 dominated by init main @begin init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 init::@8 @46
|
||||
init::@9 dominated by init main @begin init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 init::@9 init::@8 @46
|
||||
init::@return dominated by init main @begin init::@return init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 init::@9 init::@8 @46
|
||||
clear_screen dominated by init clear_screen main @begin @46
|
||||
clear_screen::@1 dominated by init clear_screen main @begin @46 clear_screen::@1
|
||||
clear_screen::@return dominated by init clear_screen main @begin @46 clear_screen::@1 clear_screen::@return
|
||||
gen_sintab dominated by init gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46
|
||||
gen_sintab::@3 dominated by init gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3
|
||||
gen_sintab::@4 dominated by init gen_sintab main gen_sintab::@4 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3
|
||||
gen_sintab::@5 dominated by init gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3
|
||||
gen_sintab::@6 dominated by init gen_sintab gen_sintab::@6 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3
|
||||
gen_sintab::@7 dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3
|
||||
gen_sintab::@8 dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3
|
||||
gen_sintab::@9 dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3
|
||||
gen_sintab::@10 dominated by gen_sintab::@10 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3
|
||||
gen_sintab::@11 dominated by gen_sintab::@10 gen_sintab::@11 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3
|
||||
gen_sintab::@12 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3
|
||||
gen_sintab::@1 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3 gen_sintab::@1
|
||||
gen_sintab::@14 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3 gen_sintab::@1
|
||||
gen_sintab::@15 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@15 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3 gen_sintab::@1
|
||||
gen_sintab::@16 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3 gen_sintab::@1
|
||||
gen_sintab::@17 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@17 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3 gen_sintab::@1
|
||||
gen_sintab::@18 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3 gen_sintab::@1
|
||||
gen_sintab::@19 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3 gen_sintab::@1
|
||||
gen_sintab::@20 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@20 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3 gen_sintab::@1
|
||||
gen_sintab::@21 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3 gen_sintab::@1
|
||||
gen_sintab::@22 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3 gen_sintab::@1
|
||||
gen_sintab::@23 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@23 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3 gen_sintab::@1
|
||||
gen_sintab::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@23 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 gen_sintab::@return @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3 gen_sintab::@1
|
||||
progress_inc dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3 gen_sintab::@1
|
||||
progress_inc::@2 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 progress_inc::@2 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3 gen_sintab::@1
|
||||
progress_inc::@1 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 progress_inc::@1 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3 gen_sintab::@1
|
||||
progress_inc::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 progress_inc::@1 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 progress_inc::@return @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3 gen_sintab::@1
|
||||
getFAC dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 getFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3 gen_sintab::@1
|
||||
getFAC::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 getFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3 gen_sintab::@1 getFAC::@return
|
||||
addMEMtoFAC dominated by gen_sintab::@10 gen_sintab::@11 init addMEMtoFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3
|
||||
addMEMtoFAC::@1 dominated by gen_sintab::@10 gen_sintab::@11 init addMEMtoFAC::@1 addMEMtoFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3
|
||||
addMEMtoFAC::@return dominated by gen_sintab::@10 gen_sintab::@11 init addMEMtoFAC::@1 addMEMtoFAC addMEMtoFAC::@return gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3
|
||||
prepareMEM dominated by init prepareMEM gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46
|
||||
prepareMEM::@return dominated by init prepareMEM gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 prepareMEM::@return
|
||||
mulFACbyMEM dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 mulFACbyMEM init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3 gen_sintab::@1
|
||||
mulFACbyMEM::@1 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 mulFACbyMEM init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 mulFACbyMEM::@1 gen_sintab::@3 gen_sintab::@1
|
||||
mulFACbyMEM::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 mulFACbyMEM::@return mulFACbyMEM init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 mulFACbyMEM::@1 gen_sintab::@3 gen_sintab::@1
|
||||
sinFAC dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 init sinFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3 gen_sintab::@1
|
||||
sinFAC::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 init sinFAC sinFAC::@return gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3 gen_sintab::@1
|
||||
divMEMbyFAC dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 divMEMbyFAC gen_sintab::@3
|
||||
divMEMbyFAC::@1 dominated by init divMEMbyFAC::@1 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 divMEMbyFAC gen_sintab::@3
|
||||
divMEMbyFAC::@return dominated by init divMEMbyFAC::@1 divMEMbyFAC::@return gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 divMEMbyFAC gen_sintab::@3
|
||||
setFAC dominated by init setFAC gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46
|
||||
setFAC::@1 dominated by init setFAC gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 setFAC::@1
|
||||
setFAC::@return dominated by setFAC::@return init setFAC gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 setFAC::@1
|
||||
setMEMtoFAC dominated by init setMEMtoFAC gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3
|
||||
setMEMtoFAC::@1 dominated by init setMEMtoFAC setMEMtoFAC::@1 gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3
|
||||
setMEMtoFAC::@return dominated by init setMEMtoFAC setMEMtoFAC::@1 gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 setMEMtoFAC::@return gen_sintab::@3
|
||||
subFACfromARG dominated by init subFACfromARG gen_sintab gen_sintab::@6 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3
|
||||
subFACfromARG::@return dominated by init subFACfromARG gen_sintab gen_sintab::@6 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 subFACfromARG::@return gen_sintab::@3
|
||||
setARGtoFAC dominated by setARGtoFAC init gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3
|
||||
setARGtoFAC::@return dominated by setARGtoFAC init gen_sintab main setARGtoFAC::@return @begin init::@2 init::@1 init::@6 init::@5 init::@4 @46 gen_sintab::@3
|
||||
progress_init dominated by init progress_init main @begin init::@2 init::@1 init::@5 init::@4 @46
|
||||
progress_init::@return dominated by init progress_init main @begin init::@2 init::@1 init::@5 init::@4 @46 progress_init::@return
|
||||
gen_sprites dominated by init main @begin gen_sprites init::@2 init::@1 init::@4 @46
|
||||
gen_sprites::@1 dominated by init main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @46
|
||||
gen_sprites::@3 dominated by init main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @46 gen_sprites::@3
|
||||
gen_sprites::@return dominated by init main gen_sprites::@return @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @46 gen_sprites::@3
|
||||
gen_chargen_sprite dominated by init gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @46
|
||||
gen_chargen_sprite::@1 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @46
|
||||
gen_chargen_sprite::@2 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @46
|
||||
gen_chargen_sprite::@6 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @46
|
||||
gen_chargen_sprite::@3 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@3 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @46
|
||||
gen_chargen_sprite::@4 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @46
|
||||
gen_chargen_sprite::@7 dominated by init gen_chargen_sprite::@7 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @46
|
||||
gen_chargen_sprite::@5 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @46
|
||||
gen_chargen_sprite::@8 dominated by init gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @46
|
||||
gen_chargen_sprite::@9 dominated by init gen_chargen_sprite::@9 gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @46
|
||||
gen_chargen_sprite::@10 dominated by init gen_chargen_sprite::@10 gen_chargen_sprite::@9 gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @46
|
||||
gen_chargen_sprite::@return dominated by init gen_chargen_sprite::@10 gen_chargen_sprite::@return gen_chargen_sprite::@9 gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @46
|
||||
place_sprites dominated by init main @begin init::@2 init::@1 @46 place_sprites
|
||||
place_sprites::@1 dominated by init place_sprites::@1 main @begin init::@2 init::@1 @46 place_sprites
|
||||
place_sprites::@return dominated by init place_sprites::@return place_sprites::@1 main @begin init::@2 init::@1 @46 place_sprites
|
||||
@47 dominated by @begin @47
|
||||
@end dominated by @end @begin @47
|
||||
main dominated by main @begin @47
|
||||
main::@2 dominated by main::@2 main @begin @47
|
||||
main::@3 dominated by main::@2 main::@3 main @begin @47
|
||||
main::@6 dominated by main::@2 main::@6 main::@3 main @begin @47
|
||||
main::@return dominated by main::@2 main::@6 main::@3 main::@return main @begin @47
|
||||
anim dominated by main::@2 main::@3 anim main @begin @47
|
||||
anim::@1 dominated by main::@2 main::@3 anim anim::@1 main @begin @47
|
||||
anim::@6 dominated by main::@2 main::@3 anim anim::@6 anim::@1 main @begin @47
|
||||
anim::@2 dominated by main::@2 main::@3 anim anim::@2 anim::@1 main @begin @47
|
||||
anim::@7 dominated by main::@2 main::@3 anim anim::@2 anim::@1 anim::@7 main @begin @47
|
||||
anim::@3 dominated by main::@2 main::@3 anim anim::@3 anim::@2 anim::@1 main @begin @47
|
||||
anim::@8 dominated by main::@2 main::@3 anim anim::@3 anim::@2 anim::@1 anim::@8 main @begin @47
|
||||
anim::@4 dominated by main::@2 main::@3 anim anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 main @begin @47
|
||||
anim::@5 dominated by main::@2 main::@3 anim anim::@5 anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 main @begin @47
|
||||
anim::@return dominated by main::@2 main::@3 anim anim::@5 anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 anim::@return main @begin @47
|
||||
anim::@15 dominated by main::@2 main::@3 anim anim::@4 anim::@3 anim::@2 anim::@1 anim::@8 main @begin @47 anim::@15
|
||||
anim::@14 dominated by main::@2 main::@3 anim anim::@3 anim::@2 anim::@1 anim::@8 main @begin @47 anim::@14
|
||||
init dominated by init main @begin @47
|
||||
init::@1 dominated by init main @begin init::@1 @47
|
||||
init::@2 dominated by init main @begin init::@2 init::@1 @47
|
||||
init::@4 dominated by init main @begin init::@2 init::@1 init::@4 @47
|
||||
init::@5 dominated by init main @begin init::@2 init::@1 init::@5 init::@4 @47
|
||||
init::@6 dominated by init main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47
|
||||
init::@7 dominated by init main @begin init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 @47
|
||||
init::@8 dominated by init main @begin init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 init::@8 @47
|
||||
init::@9 dominated by init main @begin init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 init::@9 init::@8 @47
|
||||
init::@return dominated by init main @begin init::@return init::@2 init::@1 init::@7 init::@6 init::@5 init::@4 init::@9 init::@8 @47
|
||||
clear_screen dominated by init clear_screen main @begin @47
|
||||
clear_screen::@1 dominated by init clear_screen main @begin @47 clear_screen::@1
|
||||
clear_screen::@return dominated by init clear_screen main @begin @47 clear_screen::@1 clear_screen::@return
|
||||
gen_sintab dominated by init gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47
|
||||
gen_sintab::@3 dominated by init gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3
|
||||
gen_sintab::@4 dominated by init gen_sintab main gen_sintab::@4 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3
|
||||
gen_sintab::@5 dominated by init gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3
|
||||
gen_sintab::@6 dominated by init gen_sintab gen_sintab::@6 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3
|
||||
gen_sintab::@7 dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3
|
||||
gen_sintab::@8 dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3
|
||||
gen_sintab::@9 dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3
|
||||
gen_sintab::@10 dominated by gen_sintab::@10 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3
|
||||
gen_sintab::@11 dominated by gen_sintab::@10 gen_sintab::@11 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3
|
||||
gen_sintab::@12 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3
|
||||
gen_sintab::@1 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1
|
||||
gen_sintab::@14 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1
|
||||
gen_sintab::@15 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@15 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1
|
||||
gen_sintab::@16 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1
|
||||
gen_sintab::@17 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@17 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1
|
||||
gen_sintab::@18 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1
|
||||
gen_sintab::@19 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1
|
||||
gen_sintab::@20 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@20 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1
|
||||
gen_sintab::@21 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1
|
||||
gen_sintab::@22 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1
|
||||
gen_sintab::@23 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@23 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1
|
||||
gen_sintab::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@23 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 gen_sintab::@return @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1
|
||||
progress_inc dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1
|
||||
progress_inc::@2 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 progress_inc::@2 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1
|
||||
progress_inc::@1 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 progress_inc::@1 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1
|
||||
progress_inc::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 progress_inc gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 gen_sintab::@22 progress_inc::@1 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 progress_inc::@return @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1
|
||||
getFAC dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 getFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1
|
||||
getFAC::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 gen_sintab::@19 init gen_sintab::@21 gen_sintab::@20 getFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1 getFAC::@return
|
||||
addMEMtoFAC dominated by gen_sintab::@10 gen_sintab::@11 init addMEMtoFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3
|
||||
addMEMtoFAC::@1 dominated by gen_sintab::@10 gen_sintab::@11 init addMEMtoFAC::@1 addMEMtoFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3
|
||||
addMEMtoFAC::@return dominated by gen_sintab::@10 gen_sintab::@11 init addMEMtoFAC::@1 addMEMtoFAC addMEMtoFAC::@return gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3
|
||||
prepareMEM dominated by init prepareMEM gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47
|
||||
prepareMEM::@return dominated by init prepareMEM gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 prepareMEM::@return
|
||||
mulFACbyMEM dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 mulFACbyMEM init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1
|
||||
mulFACbyMEM::@1 dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 mulFACbyMEM init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 mulFACbyMEM::@1 gen_sintab::@3 gen_sintab::@1
|
||||
mulFACbyMEM::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 mulFACbyMEM::@return mulFACbyMEM init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 mulFACbyMEM::@1 gen_sintab::@3 gen_sintab::@1
|
||||
sinFAC dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 init sinFAC gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1
|
||||
sinFAC::@return dominated by gen_sintab::@10 gen_sintab::@12 gen_sintab::@11 gen_sintab::@14 gen_sintab::@16 gen_sintab::@15 gen_sintab::@18 gen_sintab::@17 init sinFAC sinFAC::@return gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3 gen_sintab::@1
|
||||
divMEMbyFAC dominated by init gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 divMEMbyFAC gen_sintab::@3
|
||||
divMEMbyFAC::@1 dominated by init divMEMbyFAC::@1 gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 divMEMbyFAC gen_sintab::@3
|
||||
divMEMbyFAC::@return dominated by init divMEMbyFAC::@1 divMEMbyFAC::@return gen_sintab gen_sintab::@6 gen_sintab::@7 main gen_sintab::@4 gen_sintab::@5 gen_sintab::@8 gen_sintab::@9 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 divMEMbyFAC gen_sintab::@3
|
||||
setFAC dominated by init setFAC gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47
|
||||
setFAC::@1 dominated by init setFAC gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 setFAC::@1
|
||||
setFAC::@return dominated by setFAC::@return init setFAC gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 setFAC::@1
|
||||
setMEMtoFAC dominated by init setMEMtoFAC gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3
|
||||
setMEMtoFAC::@1 dominated by init setMEMtoFAC setMEMtoFAC::@1 gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3
|
||||
setMEMtoFAC::@return dominated by init setMEMtoFAC setMEMtoFAC::@1 gen_sintab main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 setMEMtoFAC::@return gen_sintab::@3
|
||||
subFACfromARG dominated by init subFACfromARG gen_sintab gen_sintab::@6 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3
|
||||
subFACfromARG::@return dominated by init subFACfromARG gen_sintab gen_sintab::@6 main gen_sintab::@4 gen_sintab::@5 @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 subFACfromARG::@return gen_sintab::@3
|
||||
setARGtoFAC dominated by setARGtoFAC init gen_sintab main @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3
|
||||
setARGtoFAC::@return dominated by setARGtoFAC init gen_sintab main setARGtoFAC::@return @begin init::@2 init::@1 init::@6 init::@5 init::@4 @47 gen_sintab::@3
|
||||
progress_init dominated by init progress_init main @begin init::@2 init::@1 init::@5 init::@4 @47
|
||||
progress_init::@return dominated by init progress_init main @begin init::@2 init::@1 init::@5 init::@4 @47 progress_init::@return
|
||||
gen_sprites dominated by init main @begin gen_sprites init::@2 init::@1 init::@4 @47
|
||||
gen_sprites::@1 dominated by init main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @47
|
||||
gen_sprites::@3 dominated by init main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 gen_sprites::@3 @47
|
||||
gen_sprites::@return dominated by init main gen_sprites::@return @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 gen_sprites::@3 @47
|
||||
gen_chargen_sprite dominated by init gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @47
|
||||
gen_chargen_sprite::@1 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @47
|
||||
gen_chargen_sprite::@2 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @47
|
||||
gen_chargen_sprite::@6 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @47
|
||||
gen_chargen_sprite::@3 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@3 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @47
|
||||
gen_chargen_sprite::@4 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @47
|
||||
gen_chargen_sprite::@7 dominated by init gen_chargen_sprite::@7 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @47
|
||||
gen_chargen_sprite::@5 dominated by init gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @47
|
||||
gen_chargen_sprite::@8 dominated by init gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @47
|
||||
gen_chargen_sprite::@9 dominated by init gen_chargen_sprite::@9 gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @47
|
||||
gen_chargen_sprite::@10 dominated by init gen_chargen_sprite::@10 gen_chargen_sprite::@9 gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @47
|
||||
gen_chargen_sprite::@return dominated by init gen_chargen_sprite::@10 gen_chargen_sprite::@return gen_chargen_sprite::@9 gen_chargen_sprite::@8 gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@5 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite main @begin gen_sprites init::@2 init::@1 init::@4 gen_sprites::@1 @47
|
||||
place_sprites dominated by init main @begin init::@2 init::@1 @47 place_sprites
|
||||
place_sprites::@1 dominated by init place_sprites::@1 main @begin init::@2 init::@1 @47 place_sprites
|
||||
place_sprites::@return dominated by init place_sprites::@return place_sprites::@1 main @begin init::@2 init::@1 @47 place_sprites
|
||||
|
||||
NATURAL LOOPS
|
||||
Found back edge: Loop head: main::@2 tails: main::@2 blocks: null
|
||||
@ -6326,17 +6379,17 @@ INITIAL ASM
|
||||
.label sin_idx_y = 3
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @46 [phi:@begin->@46]
|
||||
b46_from_bbegin:
|
||||
jmp b46
|
||||
//SEG4 @46
|
||||
b46:
|
||||
//SEG3 [1] phi from @begin to @47 [phi:@begin->@47]
|
||||
b47_from_bbegin:
|
||||
jmp b47
|
||||
//SEG4 @47
|
||||
b47:
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
//SEG6 [4] phi from @46 to main [phi:@46->main]
|
||||
main_from_b46:
|
||||
//SEG6 [4] phi from @47 to main [phi:@47->main]
|
||||
main_from_b47:
|
||||
jsr main
|
||||
//SEG7 [3] phi from @46 to @end [phi:@46->@end]
|
||||
bend_from_b46:
|
||||
//SEG7 [3] phi from @47 to @end [phi:@47->@end]
|
||||
bend_from_b47:
|
||||
jmp bend
|
||||
//SEG8 @end
|
||||
bend:
|
||||
@ -6848,9 +6901,9 @@ gen_sintab: {
|
||||
//SEG184 [157] phi from gen_sintab::@8 to setFAC [phi:gen_sintab::@8->setFAC]
|
||||
setFAC_from_b8:
|
||||
//SEG185 [157] phi (word) setFAC::w#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:gen_sintab::@8->setFAC#0] -- vwuz1=vbuc1
|
||||
lda #2
|
||||
lda #<2
|
||||
sta setFAC.w
|
||||
lda #0
|
||||
lda #>2
|
||||
sta setFAC.w+1
|
||||
jsr setFAC
|
||||
//SEG186 [89] phi from gen_sintab::@8 to gen_sintab::@9 [phi:gen_sintab::@8->gen_sintab::@9]
|
||||
@ -8087,17 +8140,17 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.label sin_idx_y = 3
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @46 [phi:@begin->@46]
|
||||
b46_from_bbegin:
|
||||
jmp b46
|
||||
//SEG4 @46
|
||||
b46:
|
||||
//SEG3 [1] phi from @begin to @47 [phi:@begin->@47]
|
||||
b47_from_bbegin:
|
||||
jmp b47
|
||||
//SEG4 @47
|
||||
b47:
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
//SEG6 [4] phi from @46 to main [phi:@46->main]
|
||||
main_from_b46:
|
||||
//SEG6 [4] phi from @47 to main [phi:@47->main]
|
||||
main_from_b47:
|
||||
jsr main
|
||||
//SEG7 [3] phi from @46 to @end [phi:@46->@end]
|
||||
bend_from_b46:
|
||||
//SEG7 [3] phi from @47 to @end [phi:@47->@end]
|
||||
bend_from_b47:
|
||||
jmp bend
|
||||
//SEG8 @end
|
||||
bend:
|
||||
@ -8588,9 +8641,9 @@ gen_sintab: {
|
||||
//SEG184 [157] phi from gen_sintab::@8 to setFAC [phi:gen_sintab::@8->setFAC]
|
||||
setFAC_from_b8:
|
||||
//SEG185 [157] phi (word) setFAC::w#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:gen_sintab::@8->setFAC#0] -- vwuz1=vbuc1
|
||||
lda #2
|
||||
lda #<2
|
||||
sta setFAC.w
|
||||
lda #0
|
||||
lda #>2
|
||||
sta setFAC.w+1
|
||||
jsr setFAC
|
||||
//SEG186 [89] phi from gen_sintab::@8 to gen_sintab::@9 [phi:gen_sintab::@8->gen_sintab::@9]
|
||||
@ -9121,8 +9174,8 @@ gen_chargen_sprite: {
|
||||
asl _1
|
||||
rol _1+1
|
||||
//SEG374 [184] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN#0 + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:55::gen_chargen_sprite:177 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) -- pbuz1=pbuc1_plus_vwuz1
|
||||
lda chargen
|
||||
clc
|
||||
lda chargen
|
||||
adc #<CHARGEN
|
||||
sta chargen
|
||||
lda chargen+1
|
||||
@ -9394,7 +9447,7 @@ place_sprites: {
|
||||
sintab_y: .fill $c5, 0
|
||||
|
||||
ASSEMBLER OPTIMIZATIONS
|
||||
Removing instruction jmp b46
|
||||
Removing instruction jmp b47
|
||||
Removing instruction jmp bend
|
||||
Removing instruction jmp b2
|
||||
Removing instruction jmp b3
|
||||
@ -9514,9 +9567,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 b46_from_bbegin:
|
||||
Removing instruction main_from_b46:
|
||||
Removing instruction bend_from_b46:
|
||||
Removing instruction b47_from_bbegin:
|
||||
Removing instruction main_from_b47:
|
||||
Removing instruction bend_from_b47:
|
||||
Removing instruction b2_from_b6:
|
||||
Removing instruction b3_from_b2:
|
||||
Removing instruction b1_from_b3:
|
||||
@ -9583,7 +9636,7 @@ Removing instruction b4_from_b5:
|
||||
Removing instruction b5_from_b4:
|
||||
Removing instruction b1_from_b1:
|
||||
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||
Removing instruction b46:
|
||||
Removing instruction b47:
|
||||
Removing instruction bend:
|
||||
Removing instruction init_from_main:
|
||||
Removing instruction b2_from_main:
|
||||
@ -9712,7 +9765,7 @@ Removing instruction jmp b2
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(label) @46
|
||||
(label) @47
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BORDERCOL
|
||||
@ -10085,12 +10138,12 @@ Score: 767890
|
||||
.label sin_idx_x = 2
|
||||
.label sin_idx_y = 3
|
||||
//SEG2 @begin
|
||||
//SEG3 [1] phi from @begin to @46 [phi:@begin->@46]
|
||||
//SEG4 @46
|
||||
//SEG3 [1] phi from @begin to @47 [phi:@begin->@47]
|
||||
//SEG4 @47
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
//SEG6 [4] phi from @46 to main [phi:@46->main]
|
||||
//SEG6 [4] phi from @47 to main [phi:@47->main]
|
||||
jsr main
|
||||
//SEG7 [3] phi from @46 to @end [phi:@46->@end]
|
||||
//SEG7 [3] phi from @47 to @end [phi:@47->@end]
|
||||
//SEG8 @end
|
||||
//SEG9 main
|
||||
main: {
|
||||
@ -10464,9 +10517,9 @@ gen_sintab: {
|
||||
//SEG183 [88] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:59 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:63 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] )
|
||||
//SEG184 [157] phi from gen_sintab::@8 to setFAC [phi:gen_sintab::@8->setFAC]
|
||||
//SEG185 [157] phi (word) setFAC::w#5 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:gen_sintab::@8->setFAC#0] -- vwuz1=vbuc1
|
||||
lda #2
|
||||
lda #<2
|
||||
sta setFAC.w
|
||||
lda #0
|
||||
lda #>2
|
||||
sta setFAC.w+1
|
||||
jsr setFAC
|
||||
//SEG186 [89] phi from gen_sintab::@8 to gen_sintab::@9 [phi:gen_sintab::@8->gen_sintab::@9]
|
||||
@ -10887,8 +10940,8 @@ gen_chargen_sprite: {
|
||||
asl _1
|
||||
rol _1+1
|
||||
//SEG374 [184] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN#0 + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:55::gen_chargen_sprite:177 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) -- pbuz1=pbuc1_plus_vwuz1
|
||||
lda chargen
|
||||
clc
|
||||
lda chargen
|
||||
adc #<CHARGEN
|
||||
sta chargen
|
||||
lda chargen+1
|
||||
|
@ -1,4 +1,4 @@
|
||||
(label) @46
|
||||
(label) @47
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BORDERCOL
|
||||
|
@ -1,13 +1,13 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi() [ ] ( )
|
||||
to:@11
|
||||
@11: scope:[] from @begin
|
||||
to:@12
|
||||
@12: scope:[] from @begin
|
||||
[1] phi() [ ] ( )
|
||||
[2] call main param-assignment [ ] ( )
|
||||
to:@end
|
||||
@end: scope:[] from @11
|
||||
@end: scope:[] from @12
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @11
|
||||
main: scope:[main] from @12
|
||||
[4] phi() [ ] ( main:2 [ ] )
|
||||
[5] call print_cls param-assignment [ ] ( main:2 [ ] )
|
||||
to:main::@1
|
||||
|
@ -103,6 +103,15 @@ void print_dword(dword dw) {
|
||||
print_word(<dw);
|
||||
}
|
||||
|
||||
// Print a signed dword as HEX
|
||||
void print_sdword(signed dword dw) {
|
||||
if(dw<0) {
|
||||
print_char('-');
|
||||
dw = -dw;
|
||||
}
|
||||
print_dword((dword)dw);
|
||||
}
|
||||
|
||||
// Print a byte as HEX
|
||||
void print_byte(byte b) {
|
||||
// Table of hexadecimal digits
|
||||
@ -202,6 +211,19 @@ proc (void()) print_dword((dword) print_dword::dw)
|
||||
print_dword::@return:
|
||||
return
|
||||
endproc // print_dword()
|
||||
proc (void()) print_sdword((signed dword) print_sdword::dw)
|
||||
(boolean~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(boolean~) print_sdword::$1 ← ! (boolean~) print_sdword::$0
|
||||
if((boolean~) print_sdword::$1) goto print_sdword::@1
|
||||
(void~) print_sdword::$2 ← call print_char (byte) '-'
|
||||
(signed dword~) print_sdword::$3 ← - (signed dword) print_sdword::dw
|
||||
(signed dword) print_sdword::dw ← (signed dword~) print_sdword::$3
|
||||
print_sdword::@1:
|
||||
(dword~) print_sdword::$4 ← ((dword)) (signed dword) print_sdword::dw
|
||||
(void~) print_sdword::$5 ← call print_dword (dword~) print_sdword::$4
|
||||
print_sdword::@return:
|
||||
return
|
||||
endproc // print_sdword()
|
||||
proc (void()) print_byte((byte) print_byte::b)
|
||||
(byte[]) print_byte::hextab ← (string) "0123456789abcdef"
|
||||
(byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
@ -546,6 +568,16 @@ SYMBOLS
|
||||
(label) print_sbyte::@1
|
||||
(label) print_sbyte::@return
|
||||
(signed byte) print_sbyte::b
|
||||
(void()) print_sdword((signed dword) print_sdword::dw)
|
||||
(boolean~) print_sdword::$0
|
||||
(boolean~) print_sdword::$1
|
||||
(void~) print_sdword::$2
|
||||
(signed dword~) print_sdword::$3
|
||||
(dword~) print_sdword::$4
|
||||
(void~) print_sdword::$5
|
||||
(label) print_sdword::@1
|
||||
(label) print_sdword::@return
|
||||
(signed dword) print_sdword::dw
|
||||
(void()) print_str((byte*) print_str::str)
|
||||
(boolean~) print_str::$0
|
||||
(label) print_str::@1
|
||||
@ -690,6 +722,25 @@ print_dword::@return: scope:[print_dword] from print_dword
|
||||
to:@return
|
||||
@6: scope:[] from @5
|
||||
to:@7
|
||||
print_sdword: scope:[print_sdword] from
|
||||
(boolean~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(boolean~) print_sdword::$1 ← ! (boolean~) print_sdword::$0
|
||||
if((boolean~) print_sdword::$1) goto print_sdword::@1
|
||||
to:print_sdword::@2
|
||||
print_sdword::@1: scope:[print_sdword] from print_sdword print_sdword::@2
|
||||
(dword~) print_sdword::$4 ← ((dword)) (signed dword) print_sdword::dw
|
||||
(void~) print_sdword::$5 ← call print_dword (dword~) print_sdword::$4
|
||||
to:print_sdword::@return
|
||||
print_sdword::@2: scope:[print_sdword] from print_sdword
|
||||
(void~) print_sdword::$2 ← call print_char (byte) '-'
|
||||
(signed dword~) print_sdword::$3 ← - (signed dword) print_sdword::dw
|
||||
(signed dword) print_sdword::dw ← (signed dword~) print_sdword::$3
|
||||
to:print_sdword::@1
|
||||
print_sdword::@return: scope:[print_sdword] from print_sdword::@1
|
||||
return
|
||||
to:@return
|
||||
@7: scope:[] from @6
|
||||
to:@8
|
||||
print_byte: scope:[print_byte] from
|
||||
(byte[]) print_byte::hextab ← (string) "0123456789abcdef"
|
||||
(byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
@ -700,8 +751,8 @@ print_byte: scope:[print_byte] from
|
||||
print_byte::@return: scope:[print_byte] from print_byte
|
||||
return
|
||||
to:@return
|
||||
@7: scope:[] from @6
|
||||
to:@8
|
||||
@8: scope:[] from @7
|
||||
to:@9
|
||||
print_char: scope:[print_char] from
|
||||
*((byte*) char_cursor) ← (byte) print_char::ch
|
||||
(byte*) char_cursor ← ++ (byte*) char_cursor
|
||||
@ -709,8 +760,8 @@ print_char: scope:[print_char] from
|
||||
print_char::@return: scope:[print_char] from print_char
|
||||
return
|
||||
to:@return
|
||||
@8: scope:[] from @7
|
||||
to:@9
|
||||
@9: scope:[] from @8
|
||||
to:@10
|
||||
print_cls: scope:[print_cls] from
|
||||
(byte*) print_cls::sc ← (byte*) SCREEN
|
||||
to:print_cls::@1
|
||||
@ -728,8 +779,8 @@ print_cls::@2: scope:[print_cls] from print_cls::@1
|
||||
print_cls::@return: scope:[print_cls] from print_cls::@2
|
||||
return
|
||||
to:@return
|
||||
@9: scope:[] from @8
|
||||
to:@10
|
||||
@10: scope:[] from @9
|
||||
to:@11
|
||||
main: scope:[main] from
|
||||
(void~) main::$0 ← call print_cls
|
||||
(byte) main::a ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
@ -960,8 +1011,8 @@ main::@44: scope:[main] from main::@22
|
||||
main::@return: scope:[main] from main::@44
|
||||
return
|
||||
to:@return
|
||||
@10: scope:[] from @9
|
||||
to:@11
|
||||
@11: scope:[] from @10
|
||||
to:@12
|
||||
printu: scope:[printu] from
|
||||
(void~) printu::$0 ← call print_char (byte) ' '
|
||||
(void~) printu::$1 ← call print_byte (byte) printu::a
|
||||
@ -973,13 +1024,14 @@ printu: scope:[printu] from
|
||||
printu::@return: scope:[printu] from printu
|
||||
return
|
||||
to:@return
|
||||
@11: scope:[] from @10
|
||||
@12: scope:[] from @11
|
||||
call main
|
||||
to:@end
|
||||
@end: scope:[] from @11
|
||||
@end: scope:[] from @12
|
||||
|
||||
Removing unused procedure print_sword
|
||||
Removing unused procedure print_sbyte
|
||||
Removing unused procedure print_sdword
|
||||
Removing unused procedure print_dword
|
||||
Removing unused procedure print_word
|
||||
Eliminating unused variable - keeping the call (void~) print_byte::$1
|
||||
@ -1050,9 +1102,10 @@ Removing empty block @6
|
||||
Removing empty block @7
|
||||
Removing empty block @8
|
||||
Removing empty block @9
|
||||
Removing empty block @10
|
||||
Removing empty block main::@43
|
||||
Removing empty block main::@44
|
||||
Removing empty block @10
|
||||
Removing empty block @11
|
||||
PROCEDURE MODIFY VARIABLE ANALYSIS
|
||||
print_str modifies char_cursor
|
||||
print_ln modifies line_cursor
|
||||
@ -1081,7 +1134,7 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN
|
||||
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
|
||||
(byte*) line_cursor#0 ← (byte*) SCREEN#0
|
||||
(byte*) char_cursor#0 ← (byte*) line_cursor#0
|
||||
to:@11
|
||||
to:@12
|
||||
print_str: scope:[print_str] from printu::@2
|
||||
(byte*) char_cursor#119 ← phi( printu::@2/(byte*) char_cursor#40 )
|
||||
(byte*) print_str::str#4 ← phi( printu::@2/(byte*) print_str::str#1 )
|
||||
@ -1185,9 +1238,9 @@ print_cls::@return: scope:[print_cls] from print_cls::@2
|
||||
(byte*) char_cursor#11 ← (byte*) char_cursor#56
|
||||
return
|
||||
to:@return
|
||||
main: scope:[main] from @11
|
||||
(byte*) char_cursor#96 ← phi( @11/(byte*) char_cursor#118 )
|
||||
(byte*) line_cursor#26 ← phi( @11/(byte*) line_cursor#33 )
|
||||
main: scope:[main] from @12
|
||||
(byte*) char_cursor#96 ← phi( @12/(byte*) char_cursor#118 )
|
||||
(byte*) line_cursor#26 ← phi( @12/(byte*) line_cursor#33 )
|
||||
call print_cls param-assignment
|
||||
to:main::@45
|
||||
main::@45: scope:[main] from main
|
||||
@ -1982,22 +2035,22 @@ printu::@return: scope:[printu] from printu::@6
|
||||
(byte*) char_cursor#45 ← (byte*) char_cursor#90
|
||||
return
|
||||
to:@return
|
||||
@11: scope:[] from @begin
|
||||
@12: scope:[] from @begin
|
||||
(byte*) char_cursor#118 ← phi( @begin/(byte*) char_cursor#0 )
|
||||
(byte*) line_cursor#33 ← phi( @begin/(byte*) line_cursor#0 )
|
||||
call main param-assignment
|
||||
to:@12
|
||||
@12: scope:[] from @11
|
||||
(byte*) char_cursor#91 ← phi( @11/(byte*) char_cursor#38 )
|
||||
(byte*) line_cursor#24 ← phi( @11/(byte*) line_cursor#11 )
|
||||
to:@13
|
||||
@13: scope:[] from @12
|
||||
(byte*) char_cursor#91 ← phi( @12/(byte*) char_cursor#38 )
|
||||
(byte*) line_cursor#24 ← phi( @12/(byte*) line_cursor#11 )
|
||||
(byte*) line_cursor#12 ← (byte*) line_cursor#24
|
||||
(byte*) char_cursor#46 ← (byte*) char_cursor#91
|
||||
to:@end
|
||||
@end: scope:[] from @12
|
||||
@end: scope:[] from @13
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @11
|
||||
(label) @12
|
||||
(label) @13
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) SCREEN
|
||||
@ -3501,7 +3554,7 @@ Not culling empty block because it shares successor with its predecessor. (label
|
||||
Not culling empty block because it shares successor with its predecessor. (label) main::@41
|
||||
Not culling empty block because it shares successor with its predecessor. (label) main::@42
|
||||
Culled Empty Block (label) printu::@6
|
||||
Culled Empty Block (label) @12
|
||||
Culled Empty Block (label) @13
|
||||
Succesful SSA optimization Pass2CullEmptyBlocks
|
||||
Not culling empty block because it shares successor with its predecessor. (label) main::@23
|
||||
Not culling empty block because it shares successor with its predecessor. (label) main::@24
|
||||
@ -6230,13 +6283,13 @@ Constant inlined printu::op#16 = (const string) main::op16
|
||||
Constant inlined main::r#25 = (byte) '-'
|
||||
Constant inlined print_byte::$4 = (const string) print_byte::hextab#0
|
||||
Succesful SSA optimization Pass2ConstantInlining
|
||||
Block Sequence Planned @begin @11 @end main main::@1 main::@23 main::@2 main::@46 main::@24 main::@3 main::@47 main::@25 main::@4 main::@48 main::@26 main::@5 main::@49 main::@50 main::@27 main::@6 main::@51 main::@28 main::@7 main::@52 main::@29 main::@8 main::@53 main::@30 main::@9 main::@54 main::@55 main::@31 main::@10 main::@56 main::@32 main::@11 main::@57 main::@33 main::@12 main::@58 main::@34 main::@13 main::@59 main::@60 main::@35 main::@14 main::@61 main::@36 main::@15 main::@62 main::@37 main::@16 main::@63 main::@38 main::@17 main::@64 main::@65 main::@39 main::@18 main::@66 main::@40 main::@19 main::@67 main::@41 main::@20 main::@68 main::@42 main::@21 main::@69 main::@70 main::@22 main::@return print_ln print_ln::@1 print_ln::@return printu printu::@1 printu::@2 printu::@3 printu::@4 printu::@5 printu::@return print_char print_char::@return print_byte print_byte::@1 print_byte::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return
|
||||
Block Sequence Planned @begin @12 @end main main::@1 main::@23 main::@2 main::@46 main::@24 main::@3 main::@47 main::@25 main::@4 main::@48 main::@26 main::@5 main::@49 main::@50 main::@27 main::@6 main::@51 main::@28 main::@7 main::@52 main::@29 main::@8 main::@53 main::@30 main::@9 main::@54 main::@55 main::@31 main::@10 main::@56 main::@32 main::@11 main::@57 main::@33 main::@12 main::@58 main::@34 main::@13 main::@59 main::@60 main::@35 main::@14 main::@61 main::@36 main::@15 main::@62 main::@37 main::@16 main::@63 main::@38 main::@17 main::@64 main::@65 main::@39 main::@18 main::@66 main::@40 main::@19 main::@67 main::@41 main::@20 main::@68 main::@42 main::@21 main::@69 main::@70 main::@22 main::@return print_ln print_ln::@1 print_ln::@return printu printu::@1 printu::@2 printu::@3 printu::@4 printu::@5 printu::@return print_char print_char::@return print_byte print_byte::@1 print_byte::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return
|
||||
Added new block during phi lifting main::@71(between main::@70 and main::@1)
|
||||
Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1)
|
||||
Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1)
|
||||
Block Sequence Planned @begin @11 @end main main::@1 main::@23 main::@2 main::@46 main::@24 main::@3 main::@47 main::@25 main::@4 main::@48 main::@26 main::@5 main::@49 main::@50 main::@27 main::@6 main::@51 main::@28 main::@7 main::@52 main::@29 main::@8 main::@53 main::@30 main::@9 main::@54 main::@55 main::@31 main::@10 main::@56 main::@32 main::@11 main::@57 main::@33 main::@12 main::@58 main::@34 main::@13 main::@59 main::@60 main::@35 main::@14 main::@61 main::@36 main::@15 main::@62 main::@37 main::@16 main::@63 main::@38 main::@17 main::@64 main::@65 main::@39 main::@18 main::@66 main::@40 main::@19 main::@67 main::@41 main::@20 main::@68 main::@42 main::@21 main::@69 main::@70 main::@22 main::@return main::@71 print_ln print_ln::@1 print_ln::@return print_ln::@3 printu printu::@1 printu::@2 printu::@3 printu::@4 printu::@5 printu::@return print_char print_char::@return print_byte print_byte::@1 print_byte::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return print_cls::@3
|
||||
Block Sequence Planned @begin @12 @end main main::@1 main::@23 main::@2 main::@46 main::@24 main::@3 main::@47 main::@25 main::@4 main::@48 main::@26 main::@5 main::@49 main::@50 main::@27 main::@6 main::@51 main::@28 main::@7 main::@52 main::@29 main::@8 main::@53 main::@30 main::@9 main::@54 main::@55 main::@31 main::@10 main::@56 main::@32 main::@11 main::@57 main::@33 main::@12 main::@58 main::@34 main::@13 main::@59 main::@60 main::@35 main::@14 main::@61 main::@36 main::@15 main::@62 main::@37 main::@16 main::@63 main::@38 main::@17 main::@64 main::@65 main::@39 main::@18 main::@66 main::@40 main::@19 main::@67 main::@41 main::@20 main::@68 main::@42 main::@21 main::@69 main::@70 main::@22 main::@return main::@71 print_ln print_ln::@1 print_ln::@return print_ln::@3 printu printu::@1 printu::@2 printu::@3 printu::@4 printu::@5 printu::@return print_char print_char::@return print_byte print_byte::@1 print_byte::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return print_cls::@3
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @11
|
||||
Adding NOP phi() at start of @12
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@23
|
||||
@ -6434,9 +6487,9 @@ Not culling empty block because it shares successor with its predecessor. (label
|
||||
Not culling empty block because it shares successor with its predecessor. (label) main::@42
|
||||
Culled Empty Block (label) print_ln::@3
|
||||
Culled Empty Block (label) print_cls::@3
|
||||
Block Sequence Planned @begin @11 @end main main::@1 main::@23 main::@2 main::@46 main::@24 main::@3 main::@47 main::@25 main::@4 main::@48 main::@26 main::@5 main::@49 main::@50 main::@27 main::@6 main::@51 main::@28 main::@7 main::@52 main::@29 main::@8 main::@53 main::@30 main::@9 main::@54 main::@55 main::@31 main::@10 main::@56 main::@32 main::@11 main::@57 main::@33 main::@12 main::@58 main::@34 main::@13 main::@59 main::@60 main::@35 main::@14 main::@61 main::@36 main::@15 main::@62 main::@37 main::@16 main::@63 main::@38 main::@17 main::@64 main::@65 main::@39 main::@18 main::@66 main::@40 main::@19 main::@67 main::@41 main::@20 main::@68 main::@42 main::@21 main::@69 main::@70 main::@22 main::@return main::@71 print_ln print_ln::@1 print_ln::@return printu printu::@1 printu::@2 printu::@3 printu::@4 printu::@5 printu::@return print_char print_char::@return print_byte print_byte::@1 print_byte::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return
|
||||
Block Sequence Planned @begin @12 @end main main::@1 main::@23 main::@2 main::@46 main::@24 main::@3 main::@47 main::@25 main::@4 main::@48 main::@26 main::@5 main::@49 main::@50 main::@27 main::@6 main::@51 main::@28 main::@7 main::@52 main::@29 main::@8 main::@53 main::@30 main::@9 main::@54 main::@55 main::@31 main::@10 main::@56 main::@32 main::@11 main::@57 main::@33 main::@12 main::@58 main::@34 main::@13 main::@59 main::@60 main::@35 main::@14 main::@61 main::@36 main::@15 main::@62 main::@37 main::@16 main::@63 main::@38 main::@17 main::@64 main::@65 main::@39 main::@18 main::@66 main::@40 main::@19 main::@67 main::@41 main::@20 main::@68 main::@42 main::@21 main::@69 main::@70 main::@22 main::@return main::@71 print_ln print_ln::@1 print_ln::@return printu printu::@1 printu::@2 printu::@3 printu::@4 printu::@5 printu::@return print_char print_char::@return print_byte print_byte::@1 print_byte::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @11
|
||||
Adding NOP phi() at start of @12
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@23
|
||||
@ -6498,14 +6551,14 @@ Propagating live ranges...
|
||||
FINAL CONTROL FLOW GRAPH
|
||||
@begin: scope:[] from
|
||||
[0] phi() [ ] ( )
|
||||
to:@11
|
||||
@11: scope:[] from @begin
|
||||
to:@12
|
||||
@12: scope:[] from @begin
|
||||
[1] phi() [ ] ( )
|
||||
[2] call main param-assignment [ ] ( )
|
||||
to:@end
|
||||
@end: scope:[] from @11
|
||||
@end: scope:[] from @12
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @11
|
||||
main: scope:[main] from @12
|
||||
[4] phi() [ ] ( main:2 [ ] )
|
||||
[5] call print_cls param-assignment [ ] ( main:2 [ ] )
|
||||
to:main::@1
|
||||
@ -6904,100 +6957,100 @@ print_cls::@return: scope:[print_cls] from print_cls::@1
|
||||
|
||||
DOMINATORS
|
||||
@begin dominated by @begin
|
||||
@11 dominated by @begin @11
|
||||
@end dominated by @end @begin @11
|
||||
main dominated by main @begin @11
|
||||
main::@1 dominated by main main::@1 @begin @11
|
||||
main::@23 dominated by main main::@1 @begin main::@23 @11
|
||||
main::@2 dominated by main main::@1 main::@2 @begin @11
|
||||
main::@46 dominated by main main::@46 main::@1 main::@2 @begin @11
|
||||
main::@24 dominated by main main::@46 main::@1 main::@2 @begin main::@24 @11
|
||||
main::@3 dominated by main main::@46 main::@1 main::@2 main::@3 @begin @11
|
||||
main::@47 dominated by main main::@46 main::@47 main::@1 main::@2 main::@3 @begin @11
|
||||
main::@25 dominated by main main::@46 main::@47 main::@1 main::@2 main::@3 @begin main::@25 @11
|
||||
main::@4 dominated by main main::@46 main::@47 main::@1 main::@2 main::@3 main::@4 @begin @11
|
||||
main::@48 dominated by main main::@46 main::@48 main::@47 main::@1 main::@2 main::@3 main::@4 @begin @11
|
||||
main::@26 dominated by main main::@46 main::@48 main::@47 main::@1 main::@2 main::@3 main::@4 @begin main::@26 @11
|
||||
main::@5 dominated by main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@3 main::@4 @begin @11
|
||||
main::@49 dominated by main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@3 main::@4 @begin @11
|
||||
main::@50 dominated by main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@3 main::@4 @begin @11 main::@50
|
||||
main::@27 dominated by main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@3 main::@4 @begin main::@27 @11 main::@50
|
||||
main::@6 dominated by main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin @11 main::@50
|
||||
main::@51 dominated by main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin @11 main::@51 main::@50
|
||||
main::@28 dominated by main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@28 @11 main::@51 main::@50
|
||||
main::@7 dominated by main::@7 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin @11 main::@51 main::@50
|
||||
main::@52 dominated by main::@7 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin @11 main::@52 main::@51 main::@50
|
||||
main::@29 dominated by main::@7 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@29 @11 main::@52 main::@51 main::@50
|
||||
main::@8 dominated by main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin @11 main::@52 main::@51 main::@50
|
||||
main::@53 dominated by main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin @11 main::@53 main::@52 main::@51 main::@50
|
||||
main::@30 dominated by main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@30 @begin @11 main::@53 main::@52 main::@51 main::@50
|
||||
main::@9 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin @11 main::@53 main::@52 main::@51 main::@50
|
||||
main::@54 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin @11 main::@53 main::@52 main::@54 main::@51 main::@50
|
||||
main::@55 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin @11 main::@53 main::@52 main::@55 main::@54 main::@51 main::@50
|
||||
main::@31 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 @begin @11 main::@53 main::@52 main::@55 main::@54 main::@51 main::@50
|
||||
main::@10 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin @11 main::@53 main::@52 main::@55 main::@54 main::@10 main::@51 main::@50
|
||||
main::@56 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin @11 main::@53 main::@52 main::@55 main::@54 main::@10 main::@51 main::@50 main::@56
|
||||
main::@32 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@32 @11 main::@53 main::@52 main::@55 main::@54 main::@10 main::@51 main::@50 main::@56
|
||||
main::@11 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@56
|
||||
main::@57 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@57 main::@56
|
||||
main::@33 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@33 @begin @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@57 main::@56
|
||||
main::@12 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@57 main::@56 main::@12
|
||||
main::@58 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@57 main::@56 main::@12 main::@58
|
||||
main::@34 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@34 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@57 main::@56 main::@12 main::@58
|
||||
main::@13 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@57 main::@13 main::@56 main::@12 main::@58
|
||||
main::@59 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@57 main::@13 main::@56 main::@12 main::@59 main::@58
|
||||
main::@60 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@60 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@57 main::@13 main::@56 main::@12 main::@59 main::@58
|
||||
main::@35 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@35 main::@60 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@57 main::@13 main::@56 main::@12 main::@59 main::@58
|
||||
main::@14 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@60 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@57 main::@13 main::@56 main::@12 main::@59 main::@58 main::@14
|
||||
main::@61 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@60 main::@61 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@57 main::@13 main::@56 main::@12 main::@59 main::@58 main::@14
|
||||
main::@36 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@36 main::@60 main::@61 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@57 main::@13 main::@56 main::@12 main::@59 main::@58 main::@14
|
||||
main::@15 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@60 main::@61 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@62 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@60 main::@62 main::@61 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@37 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@37 main::@60 main::@62 main::@61 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@16 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@60 main::@62 main::@61 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@16 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@63 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@63 main::@60 main::@62 main::@61 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@16 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@38 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@38 main::@63 main::@60 main::@62 main::@61 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@16 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@17 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@63 main::@60 main::@62 main::@61 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@64 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@64 main::@63 main::@60 main::@62 main::@61 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@65 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@64 main::@63 main::@65 main::@60 main::@62 main::@61 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@39 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@39 main::@64 main::@63 main::@65 main::@60 main::@62 main::@61 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@18 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@64 main::@63 main::@65 main::@60 main::@62 main::@61 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@18 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@66 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@64 main::@63 main::@66 main::@65 main::@60 main::@62 main::@61 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@18 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@40 dominated by main::@9 main::@7 main::@8 main::@40 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@64 main::@63 main::@66 main::@65 main::@60 main::@62 main::@61 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@18 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@19 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@64 main::@63 main::@66 main::@65 main::@60 main::@62 main::@61 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@19 main::@18 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@67 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@64 main::@63 main::@66 main::@65 main::@60 main::@62 main::@61 main::@67 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@19 main::@18 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@41 dominated by main::@9 main::@41 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@64 main::@63 main::@66 main::@65 main::@60 main::@62 main::@61 main::@67 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@19 main::@18 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@20 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@64 main::@20 main::@63 main::@66 main::@65 main::@60 main::@62 main::@61 main::@67 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@19 main::@18 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@68 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@64 main::@20 main::@63 main::@66 main::@65 main::@60 main::@62 main::@61 main::@68 main::@67 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@19 main::@18 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@42 dominated by main::@9 main::@42 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@64 main::@20 main::@63 main::@66 main::@65 main::@60 main::@62 main::@61 main::@68 main::@67 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@19 main::@18 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@21 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@64 main::@20 main::@63 main::@66 main::@65 main::@21 main::@60 main::@62 main::@61 main::@68 main::@67 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@19 main::@18 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@69 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@64 main::@20 main::@63 main::@66 main::@65 main::@21 main::@60 main::@62 main::@61 main::@68 main::@67 main::@69 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@19 main::@18 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@70 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@70 main::@64 main::@20 main::@63 main::@66 main::@65 main::@21 main::@60 main::@62 main::@61 main::@68 main::@67 main::@69 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@19 main::@18 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@22 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@70 main::@64 main::@20 main::@63 main::@66 main::@22 main::@65 main::@21 main::@60 main::@62 main::@61 main::@68 main::@67 main::@69 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@19 main::@18 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@return dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@70 main::@64 main::@20 main::@return main::@63 main::@66 main::@22 main::@65 main::@21 main::@60 main::@62 main::@61 main::@68 main::@67 main::@69 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@19 main::@18 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@71 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@71 main::@70 main::@64 main::@20 main::@63 main::@66 main::@65 main::@21 main::@60 main::@62 main::@61 main::@68 main::@67 main::@69 @11 main::@53 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@19 main::@18 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
print_ln dominated by main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@3 main::@4 @begin print_ln @11
|
||||
print_ln::@1 dominated by print_ln::@1 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@3 main::@4 @begin print_ln @11
|
||||
print_ln::@return dominated by print_ln::@1 main::@49 main main::@46 main::@48 main::@47 print_ln::@return main::@1 main::@2 main::@5 main::@3 main::@4 @begin print_ln @11
|
||||
printu dominated by main main::@1 main::@2 @begin @11 printu
|
||||
printu::@1 dominated by main main::@1 main::@2 @begin @11 printu::@1 printu
|
||||
printu::@2 dominated by main main::@1 main::@2 @begin @11 printu::@1 printu::@2 printu
|
||||
printu::@3 dominated by main main::@1 main::@2 @begin @11 printu::@1 printu::@3 printu::@2 printu
|
||||
printu::@4 dominated by main main::@1 main::@2 @begin @11 printu::@1 printu::@3 printu::@2 printu::@4 printu
|
||||
printu::@5 dominated by main main::@1 main::@2 @begin @11 printu::@1 printu::@3 printu::@2 printu::@5 printu::@4 printu
|
||||
printu::@return dominated by main main::@1 main::@2 printu::@return @begin @11 printu::@1 printu::@3 printu::@2 printu::@5 printu::@4 printu
|
||||
print_char dominated by main print_char main::@1 main::@2 @begin @11 printu
|
||||
print_char::@return dominated by main print_char main::@1 main::@2 print_char::@return @begin @11 printu
|
||||
print_byte dominated by main main::@1 main::@2 @begin @11 print_byte printu::@1 printu
|
||||
print_byte::@1 dominated by main main::@1 main::@2 @begin print_byte::@1 @11 print_byte printu::@1 printu
|
||||
print_byte::@return dominated by main main::@1 main::@2 @begin print_byte::@return print_byte::@1 @11 print_byte printu::@1 printu
|
||||
print_str dominated by main main::@1 main::@2 @begin @11 print_str printu::@1 printu::@2 printu
|
||||
print_str::@1 dominated by main main::@1 main::@2 @begin print_str::@1 @11 print_str printu::@1 printu::@2 printu
|
||||
print_str::@return dominated by main main::@1 main::@2 @begin print_str::@return print_str::@1 @11 print_str printu::@1 printu::@2 printu
|
||||
print_str::@2 dominated by main main::@1 main::@2 @begin print_str::@1 print_str::@2 @11 print_str printu::@1 printu::@2 printu
|
||||
print_cls dominated by main @begin @11 print_cls
|
||||
print_cls::@1 dominated by main @begin @11 print_cls::@1 print_cls
|
||||
print_cls::@return dominated by main @begin print_cls::@return @11 print_cls::@1 print_cls
|
||||
@12 dominated by @begin @12
|
||||
@end dominated by @end @begin @12
|
||||
main dominated by main @begin @12
|
||||
main::@1 dominated by main main::@1 @begin @12
|
||||
main::@23 dominated by main main::@1 @begin main::@23 @12
|
||||
main::@2 dominated by main main::@1 main::@2 @begin @12
|
||||
main::@46 dominated by main main::@46 main::@1 main::@2 @begin @12
|
||||
main::@24 dominated by main main::@46 main::@1 main::@2 @begin main::@24 @12
|
||||
main::@3 dominated by main main::@46 main::@1 main::@2 main::@3 @begin @12
|
||||
main::@47 dominated by main main::@46 main::@47 main::@1 main::@2 main::@3 @begin @12
|
||||
main::@25 dominated by main main::@46 main::@47 main::@1 main::@2 main::@3 @begin main::@25 @12
|
||||
main::@4 dominated by main main::@46 main::@47 main::@1 main::@2 main::@3 main::@4 @begin @12
|
||||
main::@48 dominated by main main::@46 main::@48 main::@47 main::@1 main::@2 main::@3 main::@4 @begin @12
|
||||
main::@26 dominated by main main::@46 main::@48 main::@47 main::@1 main::@2 main::@3 main::@4 @begin main::@26 @12
|
||||
main::@5 dominated by main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@3 main::@4 @begin @12
|
||||
main::@49 dominated by main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@3 main::@4 @begin @12
|
||||
main::@50 dominated by main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@3 main::@4 @begin @12 main::@50
|
||||
main::@27 dominated by main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@3 main::@4 @begin main::@27 @12 main::@50
|
||||
main::@6 dominated by main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin @12 main::@50
|
||||
main::@51 dominated by main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin @12 main::@51 main::@50
|
||||
main::@28 dominated by main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@28 @12 main::@51 main::@50
|
||||
main::@7 dominated by main::@7 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin @12 main::@51 main::@50
|
||||
main::@52 dominated by main::@7 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin @12 main::@52 main::@51 main::@50
|
||||
main::@29 dominated by main::@7 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@29 @12 main::@52 main::@51 main::@50
|
||||
main::@8 dominated by main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin @12 main::@52 main::@51 main::@50
|
||||
main::@53 dominated by main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@53 @12 main::@52 main::@51 main::@50
|
||||
main::@30 dominated by main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@30 @begin main::@53 @12 main::@52 main::@51 main::@50
|
||||
main::@9 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@53 @12 main::@52 main::@51 main::@50
|
||||
main::@54 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@53 @12 main::@52 main::@54 main::@51 main::@50
|
||||
main::@55 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@53 @12 main::@52 main::@55 main::@54 main::@51 main::@50
|
||||
main::@31 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 @begin main::@53 @12 main::@52 main::@55 main::@54 main::@51 main::@50
|
||||
main::@10 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@53 @12 main::@52 main::@55 main::@54 main::@10 main::@51 main::@50
|
||||
main::@56 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@53 @12 main::@52 main::@55 main::@54 main::@10 main::@51 main::@50 main::@56
|
||||
main::@32 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@32 main::@53 @12 main::@52 main::@55 main::@54 main::@10 main::@51 main::@50 main::@56
|
||||
main::@11 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@56
|
||||
main::@57 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@57 main::@56
|
||||
main::@33 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@33 @begin main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@57 main::@56
|
||||
main::@12 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@57 main::@56 main::@12
|
||||
main::@58 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@57 main::@56 main::@12 main::@58
|
||||
main::@34 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@34 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@57 main::@56 main::@12 main::@58
|
||||
main::@13 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@57 main::@13 main::@56 main::@12 main::@58
|
||||
main::@59 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@57 main::@13 main::@56 main::@12 main::@59 main::@58
|
||||
main::@60 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@60 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@57 main::@13 main::@56 main::@12 main::@59 main::@58
|
||||
main::@35 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@35 main::@60 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@57 main::@13 main::@56 main::@12 main::@59 main::@58
|
||||
main::@14 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@60 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@57 main::@13 main::@56 main::@12 main::@59 main::@58 main::@14
|
||||
main::@61 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@60 main::@61 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@57 main::@13 main::@56 main::@12 main::@59 main::@58 main::@14
|
||||
main::@36 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@36 main::@60 main::@61 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@57 main::@13 main::@56 main::@12 main::@59 main::@58 main::@14
|
||||
main::@15 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@60 main::@61 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@62 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@60 main::@62 main::@61 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@37 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@37 main::@60 main::@62 main::@61 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@16 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@60 main::@62 main::@61 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@16 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@63 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@63 main::@60 main::@62 main::@61 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@16 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@38 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@38 main::@63 main::@60 main::@62 main::@61 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@16 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@17 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@63 main::@60 main::@62 main::@61 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@64 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@64 main::@63 main::@60 main::@62 main::@61 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@65 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@64 main::@63 main::@65 main::@60 main::@62 main::@61 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@39 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@39 main::@64 main::@63 main::@65 main::@60 main::@62 main::@61 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@18 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@64 main::@63 main::@65 main::@60 main::@62 main::@61 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@18 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@66 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@64 main::@63 main::@66 main::@65 main::@60 main::@62 main::@61 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@18 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@40 dominated by main::@9 main::@7 main::@8 main::@40 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@64 main::@63 main::@66 main::@65 main::@60 main::@62 main::@61 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@18 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@19 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@64 main::@63 main::@66 main::@65 main::@60 main::@62 main::@61 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@19 main::@18 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@67 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@64 main::@63 main::@66 main::@65 main::@60 main::@62 main::@61 main::@67 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@19 main::@18 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@41 dominated by main::@9 main::@41 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@64 main::@63 main::@66 main::@65 main::@60 main::@62 main::@61 main::@67 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@19 main::@18 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@20 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@64 main::@20 main::@63 main::@66 main::@65 main::@60 main::@62 main::@61 main::@67 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@19 main::@18 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@68 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@64 main::@20 main::@63 main::@66 main::@65 main::@60 main::@62 main::@61 main::@68 main::@67 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@19 main::@18 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@42 dominated by main::@9 main::@42 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@64 main::@20 main::@63 main::@66 main::@65 main::@60 main::@62 main::@61 main::@68 main::@67 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@19 main::@18 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@21 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@64 main::@20 main::@63 main::@66 main::@65 main::@21 main::@60 main::@62 main::@61 main::@68 main::@67 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@19 main::@18 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@69 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@64 main::@20 main::@63 main::@66 main::@65 main::@21 main::@60 main::@62 main::@61 main::@68 main::@67 main::@69 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@19 main::@18 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@70 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@70 main::@64 main::@20 main::@63 main::@66 main::@65 main::@21 main::@60 main::@62 main::@61 main::@68 main::@67 main::@69 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@19 main::@18 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@22 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@70 main::@64 main::@20 main::@63 main::@66 main::@22 main::@65 main::@21 main::@60 main::@62 main::@61 main::@68 main::@67 main::@69 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@19 main::@18 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@return dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@70 main::@64 main::@20 main::@return main::@63 main::@66 main::@22 main::@65 main::@21 main::@60 main::@62 main::@61 main::@68 main::@67 main::@69 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@19 main::@18 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
main::@71 dominated by main::@9 main::@7 main::@8 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 @begin main::@71 main::@70 main::@64 main::@20 main::@63 main::@66 main::@65 main::@21 main::@60 main::@62 main::@61 main::@68 main::@67 main::@69 main::@53 @12 main::@52 main::@55 main::@11 main::@54 main::@10 main::@51 main::@50 main::@17 main::@16 main::@19 main::@18 main::@57 main::@13 main::@56 main::@12 main::@59 main::@15 main::@58 main::@14
|
||||
print_ln dominated by main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@3 main::@4 @begin print_ln @12
|
||||
print_ln::@1 dominated by print_ln::@1 main::@49 main main::@46 main::@48 main::@47 main::@1 main::@2 main::@5 main::@3 main::@4 @begin print_ln @12
|
||||
print_ln::@return dominated by print_ln::@1 main::@49 main main::@46 main::@48 main::@47 print_ln::@return main::@1 main::@2 main::@5 main::@3 main::@4 @begin print_ln @12
|
||||
printu dominated by main main::@1 main::@2 @begin @12 printu
|
||||
printu::@1 dominated by main main::@1 main::@2 @begin @12 printu::@1 printu
|
||||
printu::@2 dominated by main main::@1 main::@2 @begin @12 printu::@1 printu::@2 printu
|
||||
printu::@3 dominated by main main::@1 main::@2 @begin @12 printu::@1 printu::@3 printu::@2 printu
|
||||
printu::@4 dominated by main main::@1 main::@2 @begin @12 printu::@1 printu::@3 printu::@2 printu::@4 printu
|
||||
printu::@5 dominated by main main::@1 main::@2 @begin @12 printu::@1 printu::@3 printu::@2 printu::@5 printu::@4 printu
|
||||
printu::@return dominated by main main::@1 main::@2 printu::@return @begin @12 printu::@1 printu::@3 printu::@2 printu::@5 printu::@4 printu
|
||||
print_char dominated by main print_char main::@1 main::@2 @begin @12 printu
|
||||
print_char::@return dominated by main print_char main::@1 main::@2 print_char::@return @begin @12 printu
|
||||
print_byte dominated by main main::@1 main::@2 @begin @12 print_byte printu::@1 printu
|
||||
print_byte::@1 dominated by main main::@1 main::@2 @begin print_byte::@1 @12 print_byte printu::@1 printu
|
||||
print_byte::@return dominated by main main::@1 main::@2 @begin print_byte::@return print_byte::@1 @12 print_byte printu::@1 printu
|
||||
print_str dominated by main main::@1 main::@2 @begin @12 print_str printu::@1 printu::@2 printu
|
||||
print_str::@1 dominated by main main::@1 main::@2 @begin print_str::@1 @12 print_str printu::@1 printu::@2 printu
|
||||
print_str::@return dominated by main main::@1 main::@2 @begin print_str::@return print_str::@1 @12 print_str printu::@1 printu::@2 printu
|
||||
print_str::@2 dominated by main main::@1 main::@2 @begin print_str::@1 print_str::@2 @12 print_str printu::@1 printu::@2 printu
|
||||
print_cls dominated by main @begin @12 print_cls
|
||||
print_cls::@1 dominated by main @begin @12 print_cls::@1 print_cls
|
||||
print_cls::@return dominated by main @begin print_cls::@return @12 print_cls::@1 print_cls
|
||||
|
||||
NATURAL LOOPS
|
||||
Found back edge: Loop head: main::@22 tails: main::@22 blocks: null
|
||||
@ -7296,17 +7349,17 @@ INITIAL ASM
|
||||
.label line_cursor = $18
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @11 [phi:@begin->@11]
|
||||
b11_from_bbegin:
|
||||
jmp b11
|
||||
//SEG4 @11
|
||||
b11:
|
||||
//SEG3 [1] phi from @begin to @12 [phi:@begin->@12]
|
||||
b12_from_bbegin:
|
||||
jmp b12
|
||||
//SEG4 @12
|
||||
b12:
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
//SEG6 [4] phi from @11 to main [phi:@11->main]
|
||||
main_from_b11:
|
||||
//SEG6 [4] phi from @12 to main [phi:@12->main]
|
||||
main_from_b12:
|
||||
jsr main
|
||||
//SEG7 [3] phi from @11 to @end [phi:@11->@end]
|
||||
bend_from_b11:
|
||||
//SEG7 [3] phi from @12 to @end [phi:@12->@end]
|
||||
bend_from_b12:
|
||||
jmp bend
|
||||
//SEG8 @end
|
||||
bend:
|
||||
@ -8952,17 +9005,17 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.label line_cursor = 4
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @11 [phi:@begin->@11]
|
||||
b11_from_bbegin:
|
||||
jmp b11
|
||||
//SEG4 @11
|
||||
b11:
|
||||
//SEG3 [1] phi from @begin to @12 [phi:@begin->@12]
|
||||
b12_from_bbegin:
|
||||
jmp b12
|
||||
//SEG4 @12
|
||||
b12:
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
//SEG6 [4] phi from @11 to main [phi:@11->main]
|
||||
main_from_b11:
|
||||
//SEG6 [4] phi from @12 to main [phi:@12->main]
|
||||
main_from_b12:
|
||||
jsr main
|
||||
//SEG7 [3] phi from @11 to @end [phi:@11->@end]
|
||||
bend_from_b11:
|
||||
//SEG7 [3] phi from @12 to @end [phi:@12->@end]
|
||||
bend_from_b12:
|
||||
jmp bend
|
||||
//SEG8 @end
|
||||
bend:
|
||||
@ -10258,7 +10311,7 @@ print_cls: {
|
||||
}
|
||||
|
||||
ASSEMBLER OPTIMIZATIONS
|
||||
Removing instruction jmp b11
|
||||
Removing instruction jmp b12
|
||||
Removing instruction jmp bend
|
||||
Removing instruction jmp b1
|
||||
Removing instruction jmp b23
|
||||
@ -10352,9 +10405,9 @@ Replacing label b1_from_b2 with b1
|
||||
Replacing label b1_from_b1 with b1
|
||||
Replacing label b1_from_b1 with b1
|
||||
Removing instruction bbegin:
|
||||
Removing instruction b11_from_bbegin:
|
||||
Removing instruction main_from_b11:
|
||||
Removing instruction bend_from_b11:
|
||||
Removing instruction b12_from_bbegin:
|
||||
Removing instruction main_from_b12:
|
||||
Removing instruction bend_from_b12:
|
||||
Removing instruction b23_from_b1:
|
||||
Removing instruction b2_from_b23:
|
||||
Removing instruction b24_from_b46:
|
||||
@ -10413,7 +10466,7 @@ Removing instruction b1_from_print_str:
|
||||
Removing instruction b1_from_b2:
|
||||
Removing instruction b1_from_b1:
|
||||
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||
Removing instruction b11:
|
||||
Removing instruction b12:
|
||||
Removing instruction bend:
|
||||
Removing instruction print_cls_from_main:
|
||||
Removing instruction b1_from_main:
|
||||
@ -10532,7 +10585,7 @@ Removing instruction jmp b1
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(label) @11
|
||||
(label) @12
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) SCREEN
|
||||
@ -10828,12 +10881,12 @@ Score: 15772
|
||||
.label char_cursor = 9
|
||||
.label line_cursor = 4
|
||||
//SEG2 @begin
|
||||
//SEG3 [1] phi from @begin to @11 [phi:@begin->@11]
|
||||
//SEG4 @11
|
||||
//SEG3 [1] phi from @begin to @12 [phi:@begin->@12]
|
||||
//SEG4 @12
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
//SEG6 [4] phi from @11 to main [phi:@11->main]
|
||||
//SEG6 [4] phi from @12 to main [phi:@12->main]
|
||||
jsr main
|
||||
//SEG7 [3] phi from @11 to @end [phi:@11->@end]
|
||||
//SEG7 [3] phi from @12 to @end [phi:@12->@end]
|
||||
//SEG8 @end
|
||||
//SEG9 main
|
||||
main: {
|
||||
|
@ -1,4 +1,4 @@
|
||||
(label) @11
|
||||
(label) @12
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) SCREEN
|
||||
|
@ -20,7 +20,7 @@ test_16s: {
|
||||
.label divisor = $14
|
||||
.label res = $e
|
||||
.label i = 2
|
||||
lda #0
|
||||
lda #<0
|
||||
sta rem16s
|
||||
sta rem16s+1
|
||||
sta i
|
||||
@ -474,7 +474,7 @@ test_16u: {
|
||||
.label divisor = $c
|
||||
.label res = $e
|
||||
.label i = 2
|
||||
lda #0
|
||||
lda #<0
|
||||
sta rem16u
|
||||
sta rem16u+1
|
||||
sta i
|
||||
|
@ -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 param-assignment [ ] ( )
|
||||
to:@end
|
||||
@end: scope:[] from @18
|
||||
@end: scope:[] from @19
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @18
|
||||
main: scope:[main] from @19
|
||||
[4] phi() [ ] ( main:2 [ ] )
|
||||
[5] call print_cls param-assignment [ ] ( main:2 [ ] )
|
||||
to:main::@1
|
||||
|
@ -137,6 +137,15 @@ void print_dword(dword dw) {
|
||||
print_word(<dw);
|
||||
}
|
||||
|
||||
// Print a signed dword as HEX
|
||||
void print_sdword(signed dword dw) {
|
||||
if(dw<0) {
|
||||
print_char('-');
|
||||
dw = -dw;
|
||||
}
|
||||
print_dword((dword)dw);
|
||||
}
|
||||
|
||||
// Print a byte as HEX
|
||||
void print_byte(byte b) {
|
||||
// Table of hexadecimal digits
|
||||
@ -368,6 +377,19 @@ proc (void()) print_dword((dword) print_dword::dw)
|
||||
print_dword::@return:
|
||||
return
|
||||
endproc // print_dword()
|
||||
proc (void()) print_sdword((signed dword) print_sdword::dw)
|
||||
(boolean~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(boolean~) print_sdword::$1 ← ! (boolean~) print_sdword::$0
|
||||
if((boolean~) print_sdword::$1) goto print_sdword::@1
|
||||
(void~) print_sdword::$2 ← call print_char (byte) '-'
|
||||
(signed dword~) print_sdword::$3 ← - (signed dword) print_sdword::dw
|
||||
(signed dword) print_sdword::dw ← (signed dword~) print_sdword::$3
|
||||
print_sdword::@1:
|
||||
(dword~) print_sdword::$4 ← ((dword)) (signed dword) print_sdword::dw
|
||||
(void~) print_sdword::$5 ← call print_dword (dword~) print_sdword::$4
|
||||
print_sdword::@return:
|
||||
return
|
||||
endproc // print_sdword()
|
||||
proc (void()) print_byte((byte) print_byte::b)
|
||||
(byte[]) print_byte::hextab ← (string) "0123456789abcdef"
|
||||
(byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
@ -854,6 +876,16 @@ SYMBOLS
|
||||
(label) print_sbyte::@1
|
||||
(label) print_sbyte::@return
|
||||
(signed byte) print_sbyte::b
|
||||
(void()) print_sdword((signed dword) print_sdword::dw)
|
||||
(boolean~) print_sdword::$0
|
||||
(boolean~) print_sdword::$1
|
||||
(void~) print_sdword::$2
|
||||
(signed dword~) print_sdword::$3
|
||||
(dword~) print_sdword::$4
|
||||
(void~) print_sdword::$5
|
||||
(label) print_sdword::@1
|
||||
(label) print_sdword::@return
|
||||
(signed dword) print_sdword::dw
|
||||
(void()) print_str((byte*) print_str::str)
|
||||
(boolean~) print_str::$0
|
||||
(label) print_str::@1
|
||||
@ -1079,6 +1111,25 @@ print_dword::@return: scope:[print_dword] from print_dword
|
||||
to:@return
|
||||
@6: scope:[] from @5
|
||||
to:@7
|
||||
print_sdword: scope:[print_sdword] from
|
||||
(boolean~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(boolean~) print_sdword::$1 ← ! (boolean~) print_sdword::$0
|
||||
if((boolean~) print_sdword::$1) goto print_sdword::@1
|
||||
to:print_sdword::@2
|
||||
print_sdword::@1: scope:[print_sdword] from print_sdword print_sdword::@2
|
||||
(dword~) print_sdword::$4 ← ((dword)) (signed dword) print_sdword::dw
|
||||
(void~) print_sdword::$5 ← call print_dword (dword~) print_sdword::$4
|
||||
to:print_sdword::@return
|
||||
print_sdword::@2: scope:[print_sdword] from print_sdword
|
||||
(void~) print_sdword::$2 ← call print_char (byte) '-'
|
||||
(signed dword~) print_sdword::$3 ← - (signed dword) print_sdword::dw
|
||||
(signed dword) print_sdword::dw ← (signed dword~) print_sdword::$3
|
||||
to:print_sdword::@1
|
||||
print_sdword::@return: scope:[print_sdword] from print_sdword::@1
|
||||
return
|
||||
to:@return
|
||||
@7: scope:[] from @6
|
||||
to:@8
|
||||
print_byte: scope:[print_byte] from
|
||||
(byte[]) print_byte::hextab ← (string) "0123456789abcdef"
|
||||
(byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
@ -1089,8 +1140,8 @@ print_byte: scope:[print_byte] from
|
||||
print_byte::@return: scope:[print_byte] from print_byte
|
||||
return
|
||||
to:@return
|
||||
@7: scope:[] from @6
|
||||
to:@8
|
||||
@8: scope:[] from @7
|
||||
to:@9
|
||||
print_char: scope:[print_char] from
|
||||
*((byte*) char_cursor) ← (byte) print_char::ch
|
||||
(byte*) char_cursor ← ++ (byte*) char_cursor
|
||||
@ -1098,8 +1149,8 @@ print_char: scope:[print_char] from
|
||||
print_char::@return: scope:[print_char] from print_char
|
||||
return
|
||||
to:@return
|
||||
@8: scope:[] from @7
|
||||
to:@9
|
||||
@9: scope:[] from @8
|
||||
to:@10
|
||||
print_cls: scope:[print_cls] from
|
||||
(byte*) print_cls::sc ← (byte*) SCREEN
|
||||
to:print_cls::@1
|
||||
@ -1117,9 +1168,9 @@ print_cls::@2: scope:[print_cls] from print_cls::@1
|
||||
print_cls::@return: scope:[print_cls] from print_cls::@2
|
||||
return
|
||||
to:@return
|
||||
@9: scope:[] from @8
|
||||
@10: scope:[] from @9
|
||||
(byte) rem8u ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:@10
|
||||
to:@11
|
||||
div8u: scope:[div8u] from
|
||||
(byte) div8u::rem ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) div8u::quotient ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
@ -1165,9 +1216,9 @@ div8u::@return: scope:[div8u] from div8u::@6 div8u::@7
|
||||
to:@return
|
||||
div8u::@7: scope:[div8u] from
|
||||
to:div8u::@return
|
||||
@10: scope:[] from @9
|
||||
@11: scope:[] from @10
|
||||
(word) rem16u ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:@11
|
||||
to:@12
|
||||
div16u: scope:[div16u] from
|
||||
(word) div16u::rem ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(word) div16u::quotient ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
@ -1214,9 +1265,9 @@ div16u::@return: scope:[div16u] from div16u::@6 div16u::@7
|
||||
to:@return
|
||||
div16u::@7: scope:[div16u] from
|
||||
to:div16u::@return
|
||||
@11: scope:[] from @10
|
||||
@12: scope:[] from @11
|
||||
(signed byte) rem8s ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:@12
|
||||
to:@13
|
||||
div8s: scope:[div8s] from
|
||||
(byte) div8s::neg ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) div8s::dividendu ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
@ -1288,9 +1339,9 @@ div8s::@13: scope:[div8s] from
|
||||
to:div8s::@5
|
||||
div8s::@14: scope:[div8s] from
|
||||
to:div8s::@6
|
||||
@12: scope:[] from @11
|
||||
@13: scope:[] from @12
|
||||
(signed word) rem16s ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:@13
|
||||
to:@14
|
||||
div16s: scope:[div16s] from
|
||||
(byte) div16s::neg ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(word) div16s::dividendu ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
@ -1362,8 +1413,8 @@ div16s::@13: scope:[div16s] from
|
||||
to:div16s::@5
|
||||
div16s::@14: scope:[div16s] from
|
||||
to:div16s::@6
|
||||
@13: scope:[] from @12
|
||||
to:@14
|
||||
@14: scope:[] from @13
|
||||
to:@15
|
||||
main: scope:[main] from
|
||||
(void~) main::$0 ← call print_cls
|
||||
(void~) main::$1 ← call test_8u
|
||||
@ -1374,8 +1425,8 @@ main: scope:[main] from
|
||||
main::@return: scope:[main] from main
|
||||
return
|
||||
to:@return
|
||||
@14: scope:[] from @13
|
||||
to:@15
|
||||
@15: scope:[] from @14
|
||||
to:@16
|
||||
test_8u: scope:[test_8u] from
|
||||
(byte[]) test_8u::dividends ← { (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255 }
|
||||
(byte[]) test_8u::divisors ← { (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 13, (byte/signed byte/word/signed word/dword/signed dword) 17, (byte/signed byte/word/signed word/dword/signed dword) 19 }
|
||||
@ -1404,8 +1455,8 @@ test_8u::@2: scope:[test_8u] from test_8u::@1
|
||||
test_8u::@return: scope:[test_8u] from test_8u::@2
|
||||
return
|
||||
to:@return
|
||||
@15: scope:[] from @14
|
||||
to:@16
|
||||
@16: scope:[] from @15
|
||||
to:@17
|
||||
test_16u: scope:[test_16u] from
|
||||
(word[]) test_16u::dividends ← { (word/dword/signed dword) 65535, (word/dword/signed dword) 65535, (word/dword/signed dword) 65535, (word/dword/signed dword) 65535, (word/dword/signed dword) 65535, (word/dword/signed dword) 65535 }
|
||||
(word[]) test_16u::divisors ← { (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 13, (byte/signed byte/word/signed word/dword/signed dword) 17, (byte/signed byte/word/signed word/dword/signed dword) 19 }
|
||||
@ -1434,8 +1485,8 @@ test_16u::@2: scope:[test_16u] from test_16u::@1
|
||||
test_16u::@return: scope:[test_16u] from test_16u::@2
|
||||
return
|
||||
to:@return
|
||||
@16: scope:[] from @15
|
||||
to:@17
|
||||
@17: scope:[] from @16
|
||||
to:@18
|
||||
test_8s: scope:[test_8s] from
|
||||
(signed byte/signed word/signed dword~) test_8s::$0 ← - (byte/signed byte/word/signed word/dword/signed dword) 127
|
||||
(signed byte/signed word/signed dword~) test_8s::$1 ← - (byte/signed byte/word/signed word/dword/signed dword) 127
|
||||
@ -1467,8 +1518,8 @@ test_8s::@2: scope:[test_8s] from test_8s::@1
|
||||
test_8s::@return: scope:[test_8s] from test_8s::@2
|
||||
return
|
||||
to:@return
|
||||
@17: scope:[] from @16
|
||||
to:@18
|
||||
@18: scope:[] from @17
|
||||
to:@19
|
||||
test_16s: scope:[test_16s] from
|
||||
(signed word/signed dword~) test_16s::$0 ← - (word/signed word/dword/signed dword) 32767
|
||||
(signed word/signed dword~) test_16s::$1 ← - (word/signed word/dword/signed dword) 32767
|
||||
@ -1503,11 +1554,12 @@ test_16s::@2: scope:[test_16s] from test_16s::@1
|
||||
test_16s::@return: scope:[test_16s] from test_16s::@2
|
||||
return
|
||||
to:@return
|
||||
@18: scope:[] from @17
|
||||
@19: scope:[] from @18
|
||||
call main
|
||||
to:@end
|
||||
@end: scope:[] from @18
|
||||
@end: scope:[] from @19
|
||||
|
||||
Removing unused procedure print_sdword
|
||||
Removing unused procedure print_dword
|
||||
Eliminating unused variable - keeping the call (void~) print_sword::$5
|
||||
Eliminating unused variable - keeping the call (void~) print_sword::$2
|
||||
@ -1580,6 +1632,7 @@ Removing empty block @5
|
||||
Removing empty block @6
|
||||
Removing empty block @7
|
||||
Removing empty block @8
|
||||
Removing empty block @9
|
||||
Removing empty block div8u::@7
|
||||
Removing empty block div16u::@7
|
||||
Removing empty block div8s::@8
|
||||
@ -1594,14 +1647,14 @@ Removing empty block div16s::@12
|
||||
Removing empty block div16s::@6
|
||||
Removing empty block div16s::@13
|
||||
Removing empty block div16s::@14
|
||||
Removing empty block @13
|
||||
Removing empty block @14
|
||||
Removing empty block test_8u::@2
|
||||
Removing empty block @15
|
||||
Removing empty block test_16u::@2
|
||||
Removing empty block test_8u::@2
|
||||
Removing empty block @16
|
||||
Removing empty block test_8s::@2
|
||||
Removing empty block test_16u::@2
|
||||
Removing empty block @17
|
||||
Removing empty block test_8s::@2
|
||||
Removing empty block @18
|
||||
Removing empty block test_16s::@2
|
||||
PROCEDURE MODIFY VARIABLE ANALYSIS
|
||||
print_str modifies char_cursor
|
||||
@ -1658,7 +1711,7 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN
|
||||
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
|
||||
(byte*) line_cursor#0 ← (byte*) SCREEN#0
|
||||
(byte*) char_cursor#0 ← (byte*) line_cursor#0
|
||||
to:@9
|
||||
to:@10
|
||||
print_str: scope:[print_str] from test_16s::@4 test_16s::@6 test_16s::@8 test_16u::@4 test_16u::@6 test_16u::@8 test_8s::@4 test_8s::@6 test_8s::@8 test_8u::@4 test_8u::@6 test_8u::@8
|
||||
(byte*) char_cursor#140 ← phi( test_16s::@4/(byte*) char_cursor#54 test_16s::@6/(byte*) char_cursor#56 test_16s::@8/(byte*) char_cursor#58 test_16u::@4/(byte*) char_cursor#36 test_16u::@6/(byte*) char_cursor#38 test_16u::@8/(byte*) char_cursor#40 test_8s::@4/(byte*) char_cursor#45 test_8s::@6/(byte*) char_cursor#47 test_8s::@8/(byte*) char_cursor#49 test_8u::@4/(byte*) char_cursor#27 test_8u::@6/(byte*) char_cursor#29 test_8u::@8/(byte*) char_cursor#31 )
|
||||
(byte*) print_str::str#15 ← phi( test_16s::@4/(byte*) print_str::str#10 test_16s::@6/(byte*) print_str::str#11 test_16s::@8/(byte*) print_str::str#12 test_16u::@4/(byte*) print_str::str#4 test_16u::@6/(byte*) print_str::str#5 test_16u::@8/(byte*) print_str::str#6 test_8s::@4/(byte*) print_str::str#7 test_8s::@6/(byte*) print_str::str#8 test_8s::@8/(byte*) print_str::str#9 test_8u::@4/(byte*) print_str::str#1 test_8u::@6/(byte*) print_str::str#2 test_8u::@8/(byte*) print_str::str#3 )
|
||||
@ -1858,11 +1911,11 @@ print_cls::@return: scope:[print_cls] from print_cls::@2
|
||||
(byte*) char_cursor#20 ← (byte*) char_cursor#82
|
||||
return
|
||||
to:@return
|
||||
@9: scope:[] from @begin
|
||||
@10: scope:[] from @begin
|
||||
(byte*) char_cursor#154 ← phi( @begin/(byte*) char_cursor#0 )
|
||||
(byte*) line_cursor#61 ← phi( @begin/(byte*) line_cursor#0 )
|
||||
(byte) rem8u#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:@10
|
||||
to:@11
|
||||
div8u: scope:[div8u] from div8s::@4 test_8u::@1
|
||||
(byte) div8u::divisor#6 ← phi( div8s::@4/(byte) div8u::divisor#0 test_8u::@1/(byte) div8u::divisor#1 )
|
||||
(byte) div8u::dividend#5 ← phi( div8s::@4/(byte) div8u::dividend#1 test_8u::@1/(byte) div8u::dividend#2 )
|
||||
@ -1938,12 +1991,12 @@ div8u::@return: scope:[div8u] from div8u::@6
|
||||
(byte) rem8u#2 ← (byte) rem8u#13
|
||||
return
|
||||
to:@return
|
||||
@10: scope:[] from @9
|
||||
(byte) rem8u#50 ← phi( @9/(byte) rem8u#0 )
|
||||
(byte*) char_cursor#153 ← phi( @9/(byte*) char_cursor#154 )
|
||||
(byte*) line_cursor#56 ← phi( @9/(byte*) line_cursor#61 )
|
||||
@11: scope:[] from @10
|
||||
(byte) rem8u#50 ← phi( @10/(byte) rem8u#0 )
|
||||
(byte*) char_cursor#153 ← phi( @10/(byte*) char_cursor#154 )
|
||||
(byte*) line_cursor#56 ← phi( @10/(byte*) line_cursor#61 )
|
||||
(word) rem16u#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:@11
|
||||
to:@12
|
||||
div16u: scope:[div16u] from div16s::@4 test_16u::@1
|
||||
(word) div16u::divisor#6 ← phi( div16s::@4/(word) div16u::divisor#0 test_16u::@1/(word) div16u::divisor#1 )
|
||||
(word) div16u::dividend#5 ← phi( div16s::@4/(word) div16u::dividend#1 test_16u::@1/(word) div16u::dividend#2 )
|
||||
@ -2020,13 +2073,13 @@ div16u::@return: scope:[div16u] from div16u::@6
|
||||
(word) rem16u#2 ← (word) rem16u#13
|
||||
return
|
||||
to:@return
|
||||
@11: scope:[] from @10
|
||||
(word) rem16u#45 ← phi( @10/(word) rem16u#0 )
|
||||
(byte) rem8u#47 ← phi( @10/(byte) rem8u#50 )
|
||||
(byte*) char_cursor#148 ← phi( @10/(byte*) char_cursor#153 )
|
||||
(byte*) line_cursor#51 ← phi( @10/(byte*) line_cursor#56 )
|
||||
@12: scope:[] from @11
|
||||
(word) rem16u#45 ← phi( @11/(word) rem16u#0 )
|
||||
(byte) rem8u#47 ← phi( @11/(byte) rem8u#50 )
|
||||
(byte*) char_cursor#148 ← phi( @11/(byte*) char_cursor#153 )
|
||||
(byte*) line_cursor#51 ← phi( @11/(byte*) line_cursor#56 )
|
||||
(signed byte) rem8s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:@12
|
||||
to:@13
|
||||
div8s: scope:[div8s] from test_8s::@1
|
||||
(byte) rem8u#55 ← phi( test_8s::@1/(byte) rem8u#34 )
|
||||
(signed byte) div8s::divisor#6 ← phi( test_8s::@1/(signed byte) div8s::divisor#0 )
|
||||
@ -2131,14 +2184,14 @@ div8s::@return: scope:[div8s] from div8s::@11 div8s::@5
|
||||
(signed byte) rem8s#3 ← (signed byte) rem8s#9
|
||||
return
|
||||
to:@return
|
||||
@12: scope:[] from @11
|
||||
(signed byte) rem8s#26 ← phi( @11/(signed byte) rem8s#0 )
|
||||
(word) rem16u#44 ← phi( @11/(word) rem16u#45 )
|
||||
(byte) rem8u#45 ← phi( @11/(byte) rem8u#47 )
|
||||
(byte*) char_cursor#147 ← phi( @11/(byte*) char_cursor#148 )
|
||||
(byte*) line_cursor#50 ← phi( @11/(byte*) line_cursor#51 )
|
||||
@13: scope:[] from @12
|
||||
(signed byte) rem8s#26 ← phi( @12/(signed byte) rem8s#0 )
|
||||
(word) rem16u#44 ← phi( @12/(word) rem16u#45 )
|
||||
(byte) rem8u#45 ← phi( @12/(byte) rem8u#47 )
|
||||
(byte*) char_cursor#147 ← phi( @12/(byte*) char_cursor#148 )
|
||||
(byte*) line_cursor#50 ← phi( @12/(byte*) line_cursor#51 )
|
||||
(signed word) rem16s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:@18
|
||||
to:@19
|
||||
div16s: scope:[div16s] from test_16s::@1
|
||||
(word) rem16u#54 ← phi( test_16s::@1/(word) rem16u#33 )
|
||||
(signed word) div16s::divisor#6 ← phi( test_16s::@1/(signed word) div16s::divisor#0 )
|
||||
@ -2243,13 +2296,13 @@ div16s::@return: scope:[div16s] from div16s::@11 div16s::@5
|
||||
(signed word) rem16s#3 ← (signed word) rem16s#9
|
||||
return
|
||||
to:@return
|
||||
main: scope:[main] from @18
|
||||
(signed word) rem16s#29 ← phi( @18/(signed word) rem16s#20 )
|
||||
(signed byte) rem8s#29 ← phi( @18/(signed byte) rem8s#21 )
|
||||
(word) rem16u#47 ← phi( @18/(word) rem16u#35 )
|
||||
(byte) rem8u#39 ← phi( @18/(byte) rem8u#36 )
|
||||
(byte*) char_cursor#134 ← phi( @18/(byte*) char_cursor#139 )
|
||||
(byte*) line_cursor#40 ← phi( @18/(byte*) line_cursor#45 )
|
||||
main: scope:[main] from @19
|
||||
(signed word) rem16s#29 ← phi( @19/(signed word) rem16s#20 )
|
||||
(signed byte) rem8s#29 ← phi( @19/(signed byte) rem8s#21 )
|
||||
(word) rem16u#47 ← phi( @19/(word) rem16u#35 )
|
||||
(byte) rem8u#39 ← phi( @19/(byte) rem8u#36 )
|
||||
(byte*) char_cursor#134 ← phi( @19/(byte*) char_cursor#139 )
|
||||
(byte*) line_cursor#40 ← phi( @19/(byte*) line_cursor#45 )
|
||||
call print_cls param-assignment
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main
|
||||
@ -2855,22 +2908,22 @@ test_16s::@return: scope:[test_16s] from test_16s::@11
|
||||
(byte*) line_cursor#18 ← (byte*) line_cursor#37
|
||||
return
|
||||
to:@return
|
||||
@18: scope:[] from @12
|
||||
(signed word) rem16s#20 ← phi( @12/(signed word) rem16s#0 )
|
||||
(signed byte) rem8s#21 ← phi( @12/(signed byte) rem8s#26 )
|
||||
(word) rem16u#35 ← phi( @12/(word) rem16u#44 )
|
||||
(byte) rem8u#36 ← phi( @12/(byte) rem8u#45 )
|
||||
(byte*) char_cursor#139 ← phi( @12/(byte*) char_cursor#147 )
|
||||
(byte*) line_cursor#45 ← phi( @12/(byte*) line_cursor#50 )
|
||||
@19: scope:[] from @13
|
||||
(signed word) rem16s#20 ← phi( @13/(signed word) rem16s#0 )
|
||||
(signed byte) rem8s#21 ← phi( @13/(signed byte) rem8s#26 )
|
||||
(word) rem16u#35 ← phi( @13/(word) rem16u#44 )
|
||||
(byte) rem8u#36 ← phi( @13/(byte) rem8u#45 )
|
||||
(byte*) char_cursor#139 ← phi( @13/(byte*) char_cursor#147 )
|
||||
(byte*) line_cursor#45 ← phi( @13/(byte*) line_cursor#50 )
|
||||
call main param-assignment
|
||||
to:@19
|
||||
@19: scope:[] from @18
|
||||
(signed word) rem16s#15 ← phi( @18/(signed word) rem16s#5 )
|
||||
(signed byte) rem8s#15 ← phi( @18/(signed byte) rem8s#5 )
|
||||
(word) rem16u#26 ← phi( @18/(word) rem16u#7 )
|
||||
(byte) rem8u#26 ← phi( @18/(byte) rem8u#7 )
|
||||
(byte*) char_cursor#125 ← phi( @18/(byte*) char_cursor#26 )
|
||||
(byte*) line_cursor#38 ← phi( @18/(byte*) line_cursor#10 )
|
||||
to:@20
|
||||
@20: scope:[] from @19
|
||||
(signed word) rem16s#15 ← phi( @19/(signed word) rem16s#5 )
|
||||
(signed byte) rem8s#15 ← phi( @19/(signed byte) rem8s#5 )
|
||||
(word) rem16u#26 ← phi( @19/(word) rem16u#7 )
|
||||
(byte) rem8u#26 ← phi( @19/(byte) rem8u#7 )
|
||||
(byte*) char_cursor#125 ← phi( @19/(byte*) char_cursor#26 )
|
||||
(byte*) line_cursor#38 ← phi( @19/(byte*) line_cursor#10 )
|
||||
(byte*) line_cursor#19 ← (byte*) line_cursor#38
|
||||
(byte*) char_cursor#63 ← (byte*) char_cursor#125
|
||||
(byte) rem8u#12 ← (byte) rem8u#26
|
||||
@ -2878,15 +2931,15 @@ test_16s::@return: scope:[test_16s] from test_16s::@11
|
||||
(signed byte) rem8s#8 ← (signed byte) rem8s#15
|
||||
(signed word) rem16s#8 ← (signed word) rem16s#15
|
||||
to:@end
|
||||
@end: scope:[] from @19
|
||||
@end: scope:[] from @20
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @10
|
||||
(label) @11
|
||||
(label) @12
|
||||
(label) @18
|
||||
(label) @13
|
||||
(label) @19
|
||||
(label) @9
|
||||
(label) @20
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) SCREEN
|
||||
@ -4914,18 +4967,18 @@ Culled Empty Block (label) print_sbyte::@3
|
||||
Culled Empty Block (label) print_word::@2
|
||||
Culled Empty Block (label) print_byte::@2
|
||||
Culled Empty Block (label) print_cls::@2
|
||||
Culled Empty Block (label) @9
|
||||
Culled Empty Block (label) @10
|
||||
Culled Empty Block (label) @11
|
||||
Culled Empty Block (label) @12
|
||||
Culled Empty Block (label) div8s::@1
|
||||
Culled Empty Block (label) div8s::@3
|
||||
Culled Empty Block (label) div8s::@11
|
||||
Culled Empty Block (label) @12
|
||||
Culled Empty Block (label) @13
|
||||
Culled Empty Block (label) div16s::@1
|
||||
Culled Empty Block (label) div16s::@3
|
||||
Culled Empty Block (label) div16s::@11
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) @19
|
||||
Culled Empty Block (label) @20
|
||||
Succesful SSA optimization Pass2CullEmptyBlocks
|
||||
Not aliassing across scopes: char_cursor#126 char_cursor#17
|
||||
Not aliassing across scopes: print_sword::w#5 print_sword::w#1
|
||||
@ -5191,7 +5244,7 @@ Constant inlined print_str::str#5 = (const string) test_16u::str1
|
||||
Constant inlined div8u::rem#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Constant inlined rem8u#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Succesful SSA optimization Pass2ConstantInlining
|
||||
Block Sequence Planned @begin @18 @end main main::@1 main::@2 main::@3 main::@4 main::@return test_16s test_16s::@1 test_16s::@3 test_16s::@4 test_16s::@5 test_16s::@6 test_16s::@7 test_16s::@8 test_16s::@9 test_16s::@10 test_16s::@11 test_16s::@return print_ln print_ln::@1 print_ln::@return print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 div16s div16s::@7 div16s::@2 div16s::@9 div16s::@4 div16s::@15 div16s::@return div16s::@5 div16u div16u::@1 div16u::@4 div16u::@2 div16u::@5 div16u::@3 div16u::@6 div16u::@return test_8s test_8s::@1 test_8s::@3 test_8s::@4 test_8s::@5 test_8s::@6 test_8s::@7 test_8s::@8 test_8s::@9 test_8s::@10 test_8s::@11 test_8s::@return print_sbyte print_sbyte::@2 print_sbyte::@4 print_sbyte::@1 print_sbyte::@return div8s div8s::@7 div8s::@2 div8s::@9 div8s::@4 div8s::@15 div8s::@return div8s::@5 div8u div8u::@1 div8u::@4 div8u::@2 div8u::@5 div8u::@3 div8u::@6 div8u::@return test_16u test_16u::@1 test_16u::@3 test_16u::@4 test_16u::@5 test_16u::@6 test_16u::@7 test_16u::@8 test_16u::@9 test_16u::@10 test_16u::@11 test_16u::@return test_8u test_8u::@1 test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@6 test_8u::@7 test_8u::@8 test_8u::@9 test_8u::@10 test_8u::@11 test_8u::@return print_cls print_cls::@1 print_cls::@return
|
||||
Block Sequence Planned @begin @19 @end main main::@1 main::@2 main::@3 main::@4 main::@return test_16s test_16s::@1 test_16s::@3 test_16s::@4 test_16s::@5 test_16s::@6 test_16s::@7 test_16s::@8 test_16s::@9 test_16s::@10 test_16s::@11 test_16s::@return print_ln print_ln::@1 print_ln::@return print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 div16s div16s::@7 div16s::@2 div16s::@9 div16s::@4 div16s::@15 div16s::@return div16s::@5 div16u div16u::@1 div16u::@4 div16u::@2 div16u::@5 div16u::@3 div16u::@6 div16u::@return test_8s test_8s::@1 test_8s::@3 test_8s::@4 test_8s::@5 test_8s::@6 test_8s::@7 test_8s::@8 test_8s::@9 test_8s::@10 test_8s::@11 test_8s::@return print_sbyte print_sbyte::@2 print_sbyte::@4 print_sbyte::@1 print_sbyte::@return div8s div8s::@7 div8s::@2 div8s::@9 div8s::@4 div8s::@15 div8s::@return div8s::@5 div8u div8u::@1 div8u::@4 div8u::@2 div8u::@5 div8u::@3 div8u::@6 div8u::@return test_16u test_16u::@1 test_16u::@3 test_16u::@4 test_16u::@5 test_16u::@6 test_16u::@7 test_16u::@8 test_16u::@9 test_16u::@10 test_16u::@11 test_16u::@return test_8u test_8u::@1 test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@6 test_8u::@7 test_8u::@8 test_8u::@9 test_8u::@10 test_8u::@11 test_8u::@return print_cls print_cls::@1 print_cls::@return
|
||||
Added new block during phi lifting test_16s::@12(between test_16s::@11 and test_16s::@1)
|
||||
Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1)
|
||||
Added new block during phi lifting print_sword::@5(between print_sword and print_sword::@1)
|
||||
@ -5214,9 +5267,9 @@ Added new block during phi lifting div8u::@10(between div8u::@2 and div8u::@3)
|
||||
Added new block during phi lifting test_16u::@12(between test_16u::@11 and test_16u::@1)
|
||||
Added new block during phi lifting test_8u::@12(between test_8u::@11 and test_8u::@1)
|
||||
Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1)
|
||||
Block Sequence Planned @begin @18 @end main main::@1 main::@2 main::@3 main::@4 main::@return test_16s test_16s::@1 test_16s::@3 test_16s::@4 test_16s::@5 test_16s::@6 test_16s::@7 test_16s::@8 test_16s::@9 test_16s::@10 test_16s::@11 test_16s::@return test_16s::@12 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_sword::@5 print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 div16s div16s::@7 div16s::@2 div16s::@9 div16s::@4 div16s::@15 div16s::@18 div16s::@return div16s::@5 div16s::@17 div16s::@16 div16u div16u::@1 div16u::@4 div16u::@2 div16u::@5 div16u::@3 div16u::@6 div16u::@return div16u::@8 div16u::@10 div16u::@9 test_8s test_8s::@1 test_8s::@3 test_8s::@4 test_8s::@5 test_8s::@6 test_8s::@7 test_8s::@8 test_8s::@9 test_8s::@10 test_8s::@11 test_8s::@return test_8s::@12 print_sbyte print_sbyte::@2 print_sbyte::@4 print_sbyte::@1 print_sbyte::@return print_sbyte::@5 div8s div8s::@7 div8s::@2 div8s::@9 div8s::@4 div8s::@15 div8s::@18 div8s::@return div8s::@5 div8s::@17 div8s::@16 div8u div8u::@1 div8u::@4 div8u::@2 div8u::@5 div8u::@3 div8u::@6 div8u::@return div8u::@8 div8u::@10 div8u::@9 test_16u test_16u::@1 test_16u::@3 test_16u::@4 test_16u::@5 test_16u::@6 test_16u::@7 test_16u::@8 test_16u::@9 test_16u::@10 test_16u::@11 test_16u::@return test_16u::@12 test_8u test_8u::@1 test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@6 test_8u::@7 test_8u::@8 test_8u::@9 test_8u::@10 test_8u::@11 test_8u::@return test_8u::@12 print_cls print_cls::@1 print_cls::@return print_cls::@3
|
||||
Block Sequence Planned @begin @19 @end main main::@1 main::@2 main::@3 main::@4 main::@return test_16s test_16s::@1 test_16s::@3 test_16s::@4 test_16s::@5 test_16s::@6 test_16s::@7 test_16s::@8 test_16s::@9 test_16s::@10 test_16s::@11 test_16s::@return test_16s::@12 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_sword::@5 print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 div16s div16s::@7 div16s::@2 div16s::@9 div16s::@4 div16s::@15 div16s::@18 div16s::@return div16s::@5 div16s::@17 div16s::@16 div16u div16u::@1 div16u::@4 div16u::@2 div16u::@5 div16u::@3 div16u::@6 div16u::@return div16u::@8 div16u::@10 div16u::@9 test_8s test_8s::@1 test_8s::@3 test_8s::@4 test_8s::@5 test_8s::@6 test_8s::@7 test_8s::@8 test_8s::@9 test_8s::@10 test_8s::@11 test_8s::@return test_8s::@12 print_sbyte print_sbyte::@2 print_sbyte::@4 print_sbyte::@1 print_sbyte::@return print_sbyte::@5 div8s div8s::@7 div8s::@2 div8s::@9 div8s::@4 div8s::@15 div8s::@18 div8s::@return div8s::@5 div8s::@17 div8s::@16 div8u div8u::@1 div8u::@4 div8u::@2 div8u::@5 div8u::@3 div8u::@6 div8u::@return div8u::@8 div8u::@10 div8u::@9 test_16u test_16u::@1 test_16u::@3 test_16u::@4 test_16u::@5 test_16u::@6 test_16u::@7 test_16u::@8 test_16u::@9 test_16u::@10 test_16u::@11 test_16u::@return test_16u::@12 test_8u test_8u::@1 test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@6 test_8u::@7 test_8u::@8 test_8u::@9 test_8u::@10 test_8u::@11 test_8u::@return test_8u::@12 print_cls print_cls::@1 print_cls::@return print_cls::@3
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @18
|
||||
Adding NOP phi() at start of @19
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@1
|
||||
@ -5413,9 +5466,9 @@ Culled Empty Block (label) div8u::@10
|
||||
Culled Empty Block (label) div8u::@9
|
||||
Culled Empty Block (label) test_16u::@12
|
||||
Culled Empty Block (label) print_cls::@3
|
||||
Block Sequence Planned @begin @18 @end main main::@1 main::@2 main::@3 main::@4 main::@return test_16s test_16s::@1 test_16s::@3 test_16s::@4 test_16s::@5 test_16s::@6 test_16s::@7 test_16s::@8 test_16s::@9 test_16s::@10 test_16s::@11 test_16s::@return print_ln print_ln::@1 print_ln::@return print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 div16s div16s::@7 div16s::@2 div16s::@9 div16s::@4 div16s::@15 div16s::@18 div16s::@return div16s::@5 div16s::@17 div16s::@16 div16u div16u::@1 div16u::@4 div16u::@2 div16u::@5 div16u::@3 div16u::@6 div16u::@return test_8s test_8s::@1 test_8s::@3 test_8s::@4 test_8s::@5 test_8s::@6 test_8s::@7 test_8s::@8 test_8s::@9 test_8s::@10 test_8s::@11 test_8s::@return print_sbyte print_sbyte::@2 print_sbyte::@4 print_sbyte::@1 print_sbyte::@return div8s div8s::@7 div8s::@2 div8s::@9 div8s::@4 div8s::@15 div8s::@18 div8s::@return div8s::@5 div8s::@17 div8s::@16 div8u div8u::@1 div8u::@4 div8u::@2 div8u::@5 div8u::@3 div8u::@6 div8u::@return test_16u test_16u::@1 test_16u::@3 test_16u::@4 test_16u::@5 test_16u::@6 test_16u::@7 test_16u::@8 test_16u::@9 test_16u::@10 test_16u::@11 test_16u::@return test_8u test_8u::@1 test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@6 test_8u::@7 test_8u::@8 test_8u::@9 test_8u::@10 test_8u::@11 test_8u::@return test_8u::@12 print_cls print_cls::@1 print_cls::@return
|
||||
Block Sequence Planned @begin @19 @end main main::@1 main::@2 main::@3 main::@4 main::@return test_16s test_16s::@1 test_16s::@3 test_16s::@4 test_16s::@5 test_16s::@6 test_16s::@7 test_16s::@8 test_16s::@9 test_16s::@10 test_16s::@11 test_16s::@return print_ln print_ln::@1 print_ln::@return print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 div16s div16s::@7 div16s::@2 div16s::@9 div16s::@4 div16s::@15 div16s::@18 div16s::@return div16s::@5 div16s::@17 div16s::@16 div16u div16u::@1 div16u::@4 div16u::@2 div16u::@5 div16u::@3 div16u::@6 div16u::@return test_8s test_8s::@1 test_8s::@3 test_8s::@4 test_8s::@5 test_8s::@6 test_8s::@7 test_8s::@8 test_8s::@9 test_8s::@10 test_8s::@11 test_8s::@return print_sbyte print_sbyte::@2 print_sbyte::@4 print_sbyte::@1 print_sbyte::@return div8s div8s::@7 div8s::@2 div8s::@9 div8s::@4 div8s::@15 div8s::@18 div8s::@return div8s::@5 div8s::@17 div8s::@16 div8u div8u::@1 div8u::@4 div8u::@2 div8u::@5 div8u::@3 div8u::@6 div8u::@return test_16u test_16u::@1 test_16u::@3 test_16u::@4 test_16u::@5 test_16u::@6 test_16u::@7 test_16u::@8 test_16u::@9 test_16u::@10 test_16u::@11 test_16u::@return test_8u test_8u::@1 test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@6 test_8u::@7 test_8u::@8 test_8u::@9 test_8u::@10 test_8u::@11 test_8u::@return test_8u::@12 print_cls print_cls::@1 print_cls::@return
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @18
|
||||
Adding NOP phi() at start of @19
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@1
|
||||
@ -5473,14 +5526,14 @@ Propagating live ranges...
|
||||
FINAL CONTROL FLOW GRAPH
|
||||
@begin: scope:[] from
|
||||
[0] phi() [ ] ( )
|
||||
to:@18
|
||||
@18: scope:[] from @begin
|
||||
to:@19
|
||||
@19: scope:[] from @begin
|
||||
[1] phi() [ ] ( )
|
||||
[2] call main param-assignment [ ] ( )
|
||||
to:@end
|
||||
@end: scope:[] from @18
|
||||
@end: scope:[] from @19
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @18
|
||||
main: scope:[main] from @19
|
||||
[4] phi() [ ] ( main:2 [ ] )
|
||||
[5] call print_cls param-assignment [ ] ( main:2 [ ] )
|
||||
to:main::@1
|
||||
@ -6017,129 +6070,129 @@ print_cls::@return: scope:[print_cls] from print_cls::@1
|
||||
|
||||
DOMINATORS
|
||||
@begin dominated by @begin
|
||||
@18 dominated by @18 @begin
|
||||
@end dominated by @18 @end @begin
|
||||
main dominated by @18 main @begin
|
||||
main::@1 dominated by main::@1 @18 main @begin
|
||||
main::@2 dominated by main::@1 main::@2 @18 main @begin
|
||||
main::@3 dominated by main::@1 main::@2 main::@3 @18 main @begin
|
||||
main::@4 dominated by main::@1 main::@2 main::@3 main::@4 @18 main @begin
|
||||
main::@return dominated by main::@1 main::@2 main::@3 main::@4 main::@return @18 main @begin
|
||||
test_16s dominated by main::@1 main::@2 main::@3 main::@4 @18 test_16s main @begin
|
||||
test_16s::@1 dominated by main::@1 main::@2 main::@3 main::@4 @18 test_16s test_16s::@1 main @begin
|
||||
test_16s::@3 dominated by main::@1 main::@2 main::@3 main::@4 @18 test_16s test_16s::@1 test_16s::@3 main @begin
|
||||
test_16s::@4 dominated by main::@1 main::@2 main::@3 main::@4 @18 test_16s test_16s::@1 test_16s::@3 test_16s::@4 main @begin
|
||||
test_16s::@5 dominated by main::@1 main::@2 main::@3 main::@4 @18 test_16s test_16s::@1 test_16s::@3 test_16s::@4 test_16s::@5 main @begin
|
||||
test_16s::@6 dominated by main::@1 main::@2 main::@3 main::@4 @18 test_16s test_16s::@1 test_16s::@3 test_16s::@4 test_16s::@5 test_16s::@6 main @begin
|
||||
test_16s::@7 dominated by main::@1 main::@2 main::@3 main::@4 @18 test_16s test_16s::@1 test_16s::@3 test_16s::@4 test_16s::@5 test_16s::@6 test_16s::@7 main @begin
|
||||
test_16s::@8 dominated by main::@1 main::@2 main::@3 main::@4 @18 test_16s test_16s::@1 test_16s::@3 test_16s::@4 test_16s::@5 test_16s::@6 test_16s::@7 test_16s::@8 main @begin
|
||||
test_16s::@9 dominated by main::@1 main::@2 main::@3 main::@4 @18 test_16s test_16s::@1 test_16s::@3 test_16s::@4 test_16s::@5 test_16s::@6 test_16s::@7 test_16s::@8 main test_16s::@9 @begin
|
||||
test_16s::@10 dominated by main::@1 main::@2 main::@3 main::@4 @18 test_16s test_16s::@1 test_16s::@3 test_16s::@4 test_16s::@5 test_16s::@6 test_16s::@7 test_16s::@8 main test_16s::@9 @begin test_16s::@10
|
||||
test_16s::@11 dominated by main::@1 main::@2 main::@3 main::@4 @18 test_16s test_16s::@1 test_16s::@3 test_16s::@4 test_16s::@5 test_16s::@6 test_16s::@7 test_16s::@8 main test_16s::@9 @begin test_16s::@11 test_16s::@10
|
||||
test_16s::@return dominated by main::@1 main::@2 main::@3 main::@4 test_16s::@return @18 test_16s test_16s::@1 test_16s::@3 test_16s::@4 test_16s::@5 test_16s::@6 test_16s::@7 test_16s::@8 main test_16s::@9 @begin test_16s::@11 test_16s::@10
|
||||
print_ln dominated by main::@1 print_ln @18 main @begin
|
||||
print_ln::@1 dominated by main::@1 print_ln @18 print_ln::@1 main @begin
|
||||
print_ln::@return dominated by print_ln::@return main::@1 print_ln @18 print_ln::@1 main @begin
|
||||
print_sword dominated by main::@1 main::@2 main::@3 main::@4 @18 test_16s print_sword test_16s::@1 test_16s::@3 main @begin
|
||||
print_sword::@2 dominated by main::@1 main::@2 main::@3 main::@4 @18 test_16s print_sword test_16s::@1 test_16s::@3 print_sword::@2 main @begin
|
||||
print_sword::@4 dominated by main::@1 main::@2 main::@3 main::@4 @18 test_16s print_sword test_16s::@1 test_16s::@3 print_sword::@2 print_sword::@4 main @begin
|
||||
print_sword::@1 dominated by main::@1 main::@2 main::@3 main::@4 @18 test_16s print_sword test_16s::@1 test_16s::@3 print_sword::@1 main @begin
|
||||
print_sword::@return dominated by main::@1 main::@2 main::@3 main::@4 @18 test_16s print_sword test_16s::@1 test_16s::@3 print_sword::@1 main @begin print_sword::@return
|
||||
print_word dominated by print_word main::@1 main::@2 @18 main @begin
|
||||
print_word::@1 dominated by print_word main::@1 main::@2 print_word::@1 @18 main @begin
|
||||
print_word::@return dominated by print_word main::@1 main::@2 print_word::@return print_word::@1 @18 main @begin
|
||||
print_byte dominated by main::@1 print_byte @18 main @begin
|
||||
print_byte::@1 dominated by main::@1 print_byte::@1 print_byte @18 main @begin
|
||||
print_byte::@return dominated by main::@1 print_byte::@1 print_byte @18 main @begin print_byte::@return
|
||||
print_char dominated by main::@1 @18 main print_char @begin
|
||||
print_char::@return dominated by main::@1 @18 main print_char print_char::@return @begin
|
||||
print_str dominated by main::@1 @18 print_str main @begin
|
||||
print_str::@1 dominated by main::@1 print_str::@1 @18 print_str main @begin
|
||||
print_str::@return dominated by main::@1 print_str::@return print_str::@1 @18 print_str main @begin
|
||||
print_str::@2 dominated by main::@1 print_str::@1 print_str::@2 @18 print_str main @begin
|
||||
div16s dominated by main::@1 main::@2 main::@3 main::@4 div16s @18 test_16s test_16s::@1 main @begin
|
||||
div16s::@7 dominated by main::@1 main::@2 main::@3 main::@4 div16s div16s::@7 @18 test_16s test_16s::@1 main @begin
|
||||
div16s::@2 dominated by main::@1 main::@2 main::@3 main::@4 div16s div16s::@2 @18 test_16s test_16s::@1 main @begin
|
||||
div16s::@9 dominated by main::@1 main::@2 main::@3 main::@4 div16s div16s::@9 div16s::@2 @18 test_16s test_16s::@1 main @begin
|
||||
div16s::@4 dominated by main::@1 main::@2 main::@3 main::@4 div16s div16s::@4 div16s::@2 @18 test_16s test_16s::@1 main @begin
|
||||
div16s::@15 dominated by main::@1 main::@2 main::@3 main::@4 div16s div16s::@4 div16s::@2 @18 test_16s test_16s::@1 main @begin div16s::@15
|
||||
div16s::@18 dominated by main::@1 main::@2 main::@3 main::@4 div16s div16s::@4 div16s::@2 @18 test_16s test_16s::@1 main @begin div16s::@15 div16s::@18
|
||||
div16s::@return dominated by main::@1 main::@2 main::@3 main::@4 div16s div16s::@4 div16s::@2 @18 test_16s test_16s::@1 main @begin div16s::@return div16s::@15
|
||||
div16s::@5 dominated by main::@1 main::@2 main::@3 main::@4 div16s div16s::@5 div16s::@4 div16s::@2 @18 test_16s test_16s::@1 main @begin div16s::@15
|
||||
div16s::@17 dominated by main::@1 main::@2 main::@3 main::@4 div16s div16s::@2 @18 test_16s test_16s::@1 main @begin div16s::@17
|
||||
div16s::@16 dominated by main::@1 main::@2 main::@3 main::@4 div16s @18 test_16s test_16s::@1 main @begin div16s::@16
|
||||
div16u dominated by main::@1 main::@2 div16u @18 main @begin
|
||||
div16u::@1 dominated by main::@1 main::@2 div16u div16u::@1 @18 main @begin
|
||||
div16u::@4 dominated by main::@1 main::@2 div16u div16u::@4 div16u::@1 @18 main @begin
|
||||
div16u::@2 dominated by main::@1 main::@2 div16u div16u::@2 div16u::@1 @18 main @begin
|
||||
div16u::@5 dominated by main::@1 main::@2 div16u div16u::@5 div16u::@2 div16u::@1 @18 main @begin
|
||||
div16u::@3 dominated by main::@1 main::@2 div16u div16u::@3 div16u::@2 div16u::@1 @18 main @begin
|
||||
div16u::@6 dominated by main::@1 main::@2 div16u div16u::@6 div16u::@3 div16u::@2 div16u::@1 @18 main @begin
|
||||
div16u::@return dominated by div16u::@return main::@1 main::@2 div16u div16u::@6 div16u::@3 div16u::@2 div16u::@1 @18 main @begin
|
||||
test_8s dominated by main::@1 main::@2 main::@3 test_8s @18 main @begin
|
||||
test_8s::@1 dominated by main::@1 main::@2 main::@3 test_8s @18 main @begin test_8s::@1
|
||||
test_8s::@3 dominated by main::@1 main::@2 main::@3 test_8s @18 main @begin test_8s::@1 test_8s::@3
|
||||
test_8s::@4 dominated by main::@1 main::@2 main::@3 test_8s @18 main @begin test_8s::@1 test_8s::@3 test_8s::@4
|
||||
test_8s::@5 dominated by main::@1 main::@2 main::@3 test_8s @18 main @begin test_8s::@1 test_8s::@3 test_8s::@4 test_8s::@5
|
||||
test_8s::@6 dominated by main::@1 main::@2 main::@3 test_8s @18 main @begin test_8s::@1 test_8s::@3 test_8s::@4 test_8s::@5 test_8s::@6
|
||||
test_8s::@7 dominated by main::@1 main::@2 main::@3 test_8s @18 main @begin test_8s::@1 test_8s::@3 test_8s::@4 test_8s::@5 test_8s::@6 test_8s::@7
|
||||
test_8s::@8 dominated by main::@1 main::@2 main::@3 test_8s @18 main test_8s::@8 @begin test_8s::@1 test_8s::@3 test_8s::@4 test_8s::@5 test_8s::@6 test_8s::@7
|
||||
test_8s::@9 dominated by main::@1 main::@2 main::@3 test_8s @18 main test_8s::@8 test_8s::@9 @begin test_8s::@1 test_8s::@3 test_8s::@4 test_8s::@5 test_8s::@6 test_8s::@7
|
||||
test_8s::@10 dominated by main::@1 main::@2 main::@3 test_8s::@10 test_8s @18 main test_8s::@8 test_8s::@9 @begin test_8s::@1 test_8s::@3 test_8s::@4 test_8s::@5 test_8s::@6 test_8s::@7
|
||||
test_8s::@11 dominated by main::@1 main::@2 main::@3 test_8s::@10 test_8s::@11 test_8s @18 main test_8s::@8 test_8s::@9 @begin test_8s::@1 test_8s::@3 test_8s::@4 test_8s::@5 test_8s::@6 test_8s::@7
|
||||
test_8s::@return dominated by main::@1 main::@2 main::@3 test_8s::@10 test_8s::@11 test_8s @18 main test_8s::@8 test_8s::@9 @begin test_8s::@return test_8s::@1 test_8s::@3 test_8s::@4 test_8s::@5 test_8s::@6 test_8s::@7
|
||||
print_sbyte dominated by main::@1 main::@2 main::@3 test_8s @18 print_sbyte main @begin test_8s::@1 test_8s::@3
|
||||
print_sbyte::@2 dominated by main::@1 main::@2 main::@3 test_8s @18 print_sbyte main print_sbyte::@2 @begin test_8s::@1 test_8s::@3
|
||||
print_sbyte::@4 dominated by main::@1 main::@2 main::@3 test_8s @18 print_sbyte main print_sbyte::@4 print_sbyte::@2 @begin test_8s::@1 test_8s::@3
|
||||
print_sbyte::@1 dominated by main::@1 main::@2 main::@3 test_8s @18 print_sbyte main print_sbyte::@1 @begin test_8s::@1 test_8s::@3
|
||||
print_sbyte::@return dominated by main::@1 main::@2 main::@3 test_8s @18 print_sbyte main print_sbyte::@1 @begin print_sbyte::@return test_8s::@1 test_8s::@3
|
||||
div8s dominated by main::@1 main::@2 main::@3 div8s test_8s @18 main @begin test_8s::@1
|
||||
div8s::@7 dominated by main::@1 main::@2 main::@3 div8s test_8s @18 main @begin test_8s::@1 div8s::@7
|
||||
div8s::@2 dominated by main::@1 main::@2 main::@3 div8s test_8s @18 main div8s::@2 @begin test_8s::@1
|
||||
div8s::@9 dominated by main::@1 main::@2 main::@3 div8s test_8s @18 main div8s::@2 @begin test_8s::@1 div8s::@9
|
||||
div8s::@4 dominated by main::@1 main::@2 main::@3 div8s test_8s @18 main div8s::@2 @begin test_8s::@1 div8s::@4
|
||||
div8s::@15 dominated by main::@1 main::@2 main::@3 div8s test_8s @18 div8s::@15 main div8s::@2 @begin test_8s::@1 div8s::@4
|
||||
div8s::@18 dominated by main::@1 main::@2 main::@3 div8s test_8s @18 div8s::@18 div8s::@15 main div8s::@2 @begin test_8s::@1 div8s::@4
|
||||
div8s::@return dominated by main::@1 main::@2 main::@3 div8s test_8s @18 div8s::@15 main div8s::@2 div8s::@return @begin test_8s::@1 div8s::@4
|
||||
div8s::@5 dominated by main::@1 main::@2 main::@3 div8s test_8s @18 div8s::@15 main div8s::@2 @begin test_8s::@1 div8s::@5 div8s::@4
|
||||
div8s::@17 dominated by main::@1 main::@2 main::@3 div8s test_8s @18 div8s::@17 main div8s::@2 @begin test_8s::@1
|
||||
div8s::@16 dominated by main::@1 main::@2 main::@3 div8s test_8s @18 div8s::@16 main @begin test_8s::@1
|
||||
div8u dominated by main::@1 div8u @18 main @begin
|
||||
div8u::@1 dominated by main::@1 div8u @18 main @begin div8u::@1
|
||||
div8u::@4 dominated by main::@1 div8u @18 main div8u::@4 @begin div8u::@1
|
||||
div8u::@2 dominated by main::@1 div8u @18 main div8u::@2 @begin div8u::@1
|
||||
div8u::@5 dominated by main::@1 div8u @18 main div8u::@2 div8u::@5 @begin div8u::@1
|
||||
div8u::@3 dominated by main::@1 div8u @18 main div8u::@3 div8u::@2 @begin div8u::@1
|
||||
div8u::@6 dominated by main::@1 div8u @18 main div8u::@3 div8u::@2 div8u::@6 @begin div8u::@1
|
||||
div8u::@return dominated by main::@1 div8u div8u::@return @18 main div8u::@3 div8u::@2 div8u::@6 @begin div8u::@1
|
||||
test_16u dominated by main::@1 main::@2 @18 test_16u main @begin
|
||||
test_16u::@1 dominated by main::@1 main::@2 @18 test_16u test_16u::@1 main @begin
|
||||
test_16u::@3 dominated by main::@1 main::@2 @18 test_16u test_16u::@1 test_16u::@3 main @begin
|
||||
test_16u::@4 dominated by main::@1 main::@2 @18 test_16u test_16u::@1 test_16u::@3 test_16u::@4 main @begin
|
||||
test_16u::@5 dominated by main::@1 main::@2 @18 test_16u test_16u::@5 test_16u::@1 test_16u::@3 test_16u::@4 main @begin
|
||||
test_16u::@6 dominated by main::@1 main::@2 @18 test_16u test_16u::@5 test_16u::@6 test_16u::@1 test_16u::@3 test_16u::@4 main @begin
|
||||
test_16u::@7 dominated by main::@1 main::@2 @18 test_16u test_16u::@5 test_16u::@6 test_16u::@7 test_16u::@1 test_16u::@3 test_16u::@4 main @begin
|
||||
test_16u::@8 dominated by main::@1 main::@2 @18 test_16u test_16u::@5 test_16u::@6 test_16u::@7 test_16u::@8 test_16u::@1 test_16u::@3 test_16u::@4 main @begin
|
||||
test_16u::@9 dominated by main::@1 main::@2 @18 test_16u test_16u::@9 test_16u::@5 test_16u::@6 test_16u::@7 test_16u::@8 test_16u::@1 test_16u::@3 test_16u::@4 main @begin
|
||||
test_16u::@10 dominated by main::@1 main::@2 test_16u::@10 @18 test_16u test_16u::@9 test_16u::@5 test_16u::@6 test_16u::@7 test_16u::@8 test_16u::@1 test_16u::@3 test_16u::@4 main @begin
|
||||
test_16u::@11 dominated by main::@1 main::@2 test_16u::@11 test_16u::@10 @18 test_16u test_16u::@9 test_16u::@5 test_16u::@6 test_16u::@7 test_16u::@8 test_16u::@1 test_16u::@3 test_16u::@4 main @begin
|
||||
test_16u::@return dominated by main::@1 main::@2 test_16u::@11 test_16u::@10 @18 test_16u test_16u::@9 test_16u::@5 test_16u::@6 test_16u::@7 test_16u::@8 test_16u::@1 test_16u::@3 test_16u::@4 main @begin test_16u::@return
|
||||
test_8u dominated by main::@1 test_8u @18 main @begin
|
||||
test_8u::@1 dominated by main::@1 test_8u @18 main @begin test_8u::@1
|
||||
test_8u::@3 dominated by main::@1 test_8u @18 main @begin test_8u::@3 test_8u::@1
|
||||
test_8u::@4 dominated by main::@1 test_8u @18 main @begin test_8u::@3 test_8u::@4 test_8u::@1
|
||||
test_8u::@5 dominated by main::@1 test_8u @18 main @begin test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@1
|
||||
test_8u::@6 dominated by main::@1 test_8u @18 main @begin test_8u::@6 test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@1
|
||||
test_8u::@7 dominated by main::@1 test_8u @18 main @begin test_8u::@6 test_8u::@7 test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@1
|
||||
test_8u::@8 dominated by main::@1 test_8u @18 main @begin test_8u::@6 test_8u::@7 test_8u::@8 test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@1
|
||||
test_8u::@9 dominated by main::@1 test_8u @18 main @begin test_8u::@6 test_8u::@7 test_8u::@8 test_8u::@9 test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@1
|
||||
test_8u::@10 dominated by main::@1 test_8u @18 main @begin test_8u::@6 test_8u::@7 test_8u::@8 test_8u::@9 test_8u::@10 test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@1
|
||||
test_8u::@11 dominated by main::@1 test_8u @18 main @begin test_8u::@6 test_8u::@7 test_8u::@8 test_8u::@9 test_8u::@10 test_8u::@11 test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@1
|
||||
test_8u::@return dominated by main::@1 test_8u @18 main @begin test_8u::@6 test_8u::@7 test_8u::@8 test_8u::@9 test_8u::@10 test_8u::@11 test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@1 test_8u::@return
|
||||
test_8u::@12 dominated by main::@1 test_8u @18 main @begin test_8u::@6 test_8u::@7 test_8u::@8 test_8u::@9 test_8u::@10 test_8u::@12 test_8u::@11 test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@1
|
||||
print_cls dominated by @18 print_cls main @begin
|
||||
print_cls::@1 dominated by @18 print_cls main @begin print_cls::@1
|
||||
print_cls::@return dominated by @18 print_cls main @begin print_cls::@return print_cls::@1
|
||||
@19 dominated by @19 @begin
|
||||
@end dominated by @19 @end @begin
|
||||
main dominated by @19 main @begin
|
||||
main::@1 dominated by main::@1 @19 main @begin
|
||||
main::@2 dominated by main::@1 main::@2 @19 main @begin
|
||||
main::@3 dominated by main::@1 main::@2 main::@3 @19 main @begin
|
||||
main::@4 dominated by main::@1 main::@2 main::@3 main::@4 @19 main @begin
|
||||
main::@return dominated by main::@1 main::@2 main::@3 main::@4 main::@return @19 main @begin
|
||||
test_16s dominated by main::@1 main::@2 main::@3 main::@4 @19 test_16s main @begin
|
||||
test_16s::@1 dominated by main::@1 main::@2 main::@3 main::@4 @19 test_16s test_16s::@1 main @begin
|
||||
test_16s::@3 dominated by main::@1 main::@2 main::@3 main::@4 @19 test_16s test_16s::@1 test_16s::@3 main @begin
|
||||
test_16s::@4 dominated by main::@1 main::@2 main::@3 main::@4 @19 test_16s test_16s::@1 test_16s::@3 test_16s::@4 main @begin
|
||||
test_16s::@5 dominated by main::@1 main::@2 main::@3 main::@4 @19 test_16s test_16s::@1 test_16s::@3 test_16s::@4 test_16s::@5 main @begin
|
||||
test_16s::@6 dominated by main::@1 main::@2 main::@3 main::@4 @19 test_16s test_16s::@1 test_16s::@3 test_16s::@4 test_16s::@5 test_16s::@6 main @begin
|
||||
test_16s::@7 dominated by main::@1 main::@2 main::@3 main::@4 @19 test_16s test_16s::@1 test_16s::@3 test_16s::@4 test_16s::@5 test_16s::@6 test_16s::@7 main @begin
|
||||
test_16s::@8 dominated by main::@1 main::@2 main::@3 main::@4 @19 test_16s test_16s::@1 test_16s::@3 test_16s::@4 test_16s::@5 test_16s::@6 test_16s::@7 test_16s::@8 main @begin
|
||||
test_16s::@9 dominated by main::@1 main::@2 main::@3 main::@4 @19 test_16s test_16s::@1 test_16s::@3 test_16s::@4 test_16s::@5 test_16s::@6 test_16s::@7 test_16s::@8 main test_16s::@9 @begin
|
||||
test_16s::@10 dominated by main::@1 main::@2 main::@3 main::@4 @19 test_16s test_16s::@1 test_16s::@3 test_16s::@4 test_16s::@5 test_16s::@6 test_16s::@7 test_16s::@8 main test_16s::@9 @begin test_16s::@10
|
||||
test_16s::@11 dominated by main::@1 main::@2 main::@3 main::@4 @19 test_16s test_16s::@1 test_16s::@3 test_16s::@4 test_16s::@5 test_16s::@6 test_16s::@7 test_16s::@8 main test_16s::@9 @begin test_16s::@11 test_16s::@10
|
||||
test_16s::@return dominated by main::@1 main::@2 main::@3 main::@4 test_16s::@return @19 test_16s test_16s::@1 test_16s::@3 test_16s::@4 test_16s::@5 test_16s::@6 test_16s::@7 test_16s::@8 main test_16s::@9 @begin test_16s::@11 test_16s::@10
|
||||
print_ln dominated by main::@1 print_ln @19 main @begin
|
||||
print_ln::@1 dominated by main::@1 print_ln @19 print_ln::@1 main @begin
|
||||
print_ln::@return dominated by print_ln::@return main::@1 print_ln @19 print_ln::@1 main @begin
|
||||
print_sword dominated by main::@1 main::@2 main::@3 main::@4 @19 test_16s print_sword test_16s::@1 test_16s::@3 main @begin
|
||||
print_sword::@2 dominated by main::@1 main::@2 main::@3 main::@4 @19 test_16s print_sword test_16s::@1 test_16s::@3 print_sword::@2 main @begin
|
||||
print_sword::@4 dominated by main::@1 main::@2 main::@3 main::@4 @19 test_16s print_sword test_16s::@1 test_16s::@3 print_sword::@2 print_sword::@4 main @begin
|
||||
print_sword::@1 dominated by main::@1 main::@2 main::@3 main::@4 @19 test_16s print_sword test_16s::@1 test_16s::@3 print_sword::@1 main @begin
|
||||
print_sword::@return dominated by main::@1 main::@2 main::@3 main::@4 @19 test_16s print_sword test_16s::@1 test_16s::@3 print_sword::@1 main @begin print_sword::@return
|
||||
print_word dominated by print_word main::@1 main::@2 @19 main @begin
|
||||
print_word::@1 dominated by print_word main::@1 main::@2 print_word::@1 @19 main @begin
|
||||
print_word::@return dominated by print_word main::@1 main::@2 print_word::@return print_word::@1 @19 main @begin
|
||||
print_byte dominated by main::@1 print_byte @19 main @begin
|
||||
print_byte::@1 dominated by main::@1 print_byte::@1 print_byte @19 main @begin
|
||||
print_byte::@return dominated by main::@1 print_byte::@1 print_byte @19 main @begin print_byte::@return
|
||||
print_char dominated by main::@1 @19 main print_char @begin
|
||||
print_char::@return dominated by main::@1 @19 main print_char print_char::@return @begin
|
||||
print_str dominated by main::@1 @19 print_str main @begin
|
||||
print_str::@1 dominated by main::@1 print_str::@1 @19 print_str main @begin
|
||||
print_str::@return dominated by main::@1 print_str::@return print_str::@1 @19 print_str main @begin
|
||||
print_str::@2 dominated by main::@1 print_str::@1 print_str::@2 @19 print_str main @begin
|
||||
div16s dominated by main::@1 main::@2 main::@3 main::@4 div16s @19 test_16s test_16s::@1 main @begin
|
||||
div16s::@7 dominated by main::@1 main::@2 main::@3 main::@4 div16s div16s::@7 @19 test_16s test_16s::@1 main @begin
|
||||
div16s::@2 dominated by main::@1 main::@2 main::@3 main::@4 div16s div16s::@2 @19 test_16s test_16s::@1 main @begin
|
||||
div16s::@9 dominated by main::@1 main::@2 main::@3 main::@4 div16s div16s::@9 div16s::@2 @19 test_16s test_16s::@1 main @begin
|
||||
div16s::@4 dominated by main::@1 main::@2 main::@3 main::@4 div16s div16s::@4 div16s::@2 @19 test_16s test_16s::@1 main @begin
|
||||
div16s::@15 dominated by main::@1 main::@2 main::@3 main::@4 div16s div16s::@4 div16s::@2 @19 test_16s test_16s::@1 main @begin div16s::@15
|
||||
div16s::@18 dominated by main::@1 main::@2 main::@3 main::@4 div16s div16s::@4 div16s::@2 @19 test_16s test_16s::@1 main @begin div16s::@15 div16s::@18
|
||||
div16s::@return dominated by main::@1 main::@2 main::@3 main::@4 div16s div16s::@4 div16s::@2 @19 test_16s test_16s::@1 main @begin div16s::@return div16s::@15
|
||||
div16s::@5 dominated by main::@1 main::@2 main::@3 main::@4 div16s div16s::@5 div16s::@4 div16s::@2 @19 test_16s test_16s::@1 main @begin div16s::@15
|
||||
div16s::@17 dominated by main::@1 main::@2 main::@3 main::@4 div16s div16s::@2 @19 test_16s test_16s::@1 main @begin div16s::@17
|
||||
div16s::@16 dominated by main::@1 main::@2 main::@3 main::@4 div16s @19 test_16s test_16s::@1 main @begin div16s::@16
|
||||
div16u dominated by main::@1 main::@2 div16u @19 main @begin
|
||||
div16u::@1 dominated by main::@1 main::@2 div16u div16u::@1 @19 main @begin
|
||||
div16u::@4 dominated by main::@1 main::@2 div16u div16u::@4 div16u::@1 @19 main @begin
|
||||
div16u::@2 dominated by main::@1 main::@2 div16u div16u::@2 div16u::@1 @19 main @begin
|
||||
div16u::@5 dominated by main::@1 main::@2 div16u div16u::@5 div16u::@2 div16u::@1 @19 main @begin
|
||||
div16u::@3 dominated by main::@1 main::@2 div16u div16u::@3 div16u::@2 div16u::@1 @19 main @begin
|
||||
div16u::@6 dominated by main::@1 main::@2 div16u div16u::@6 div16u::@3 div16u::@2 div16u::@1 @19 main @begin
|
||||
div16u::@return dominated by div16u::@return main::@1 main::@2 div16u div16u::@6 div16u::@3 div16u::@2 div16u::@1 @19 main @begin
|
||||
test_8s dominated by main::@1 main::@2 main::@3 test_8s @19 main @begin
|
||||
test_8s::@1 dominated by main::@1 main::@2 main::@3 test_8s @19 main @begin test_8s::@1
|
||||
test_8s::@3 dominated by main::@1 main::@2 main::@3 test_8s @19 main @begin test_8s::@1 test_8s::@3
|
||||
test_8s::@4 dominated by main::@1 main::@2 main::@3 test_8s @19 main @begin test_8s::@1 test_8s::@3 test_8s::@4
|
||||
test_8s::@5 dominated by main::@1 main::@2 main::@3 test_8s @19 main @begin test_8s::@1 test_8s::@3 test_8s::@4 test_8s::@5
|
||||
test_8s::@6 dominated by main::@1 main::@2 main::@3 test_8s @19 main @begin test_8s::@1 test_8s::@3 test_8s::@4 test_8s::@5 test_8s::@6
|
||||
test_8s::@7 dominated by main::@1 main::@2 main::@3 test_8s @19 main @begin test_8s::@1 test_8s::@3 test_8s::@4 test_8s::@5 test_8s::@6 test_8s::@7
|
||||
test_8s::@8 dominated by main::@1 main::@2 main::@3 test_8s @19 main test_8s::@8 @begin test_8s::@1 test_8s::@3 test_8s::@4 test_8s::@5 test_8s::@6 test_8s::@7
|
||||
test_8s::@9 dominated by main::@1 main::@2 main::@3 test_8s @19 main test_8s::@8 test_8s::@9 @begin test_8s::@1 test_8s::@3 test_8s::@4 test_8s::@5 test_8s::@6 test_8s::@7
|
||||
test_8s::@10 dominated by main::@1 main::@2 main::@3 test_8s::@10 test_8s @19 main test_8s::@8 test_8s::@9 @begin test_8s::@1 test_8s::@3 test_8s::@4 test_8s::@5 test_8s::@6 test_8s::@7
|
||||
test_8s::@11 dominated by main::@1 main::@2 main::@3 test_8s::@10 test_8s::@11 test_8s @19 main test_8s::@8 test_8s::@9 @begin test_8s::@1 test_8s::@3 test_8s::@4 test_8s::@5 test_8s::@6 test_8s::@7
|
||||
test_8s::@return dominated by main::@1 main::@2 main::@3 test_8s::@10 test_8s::@11 test_8s @19 main test_8s::@8 test_8s::@9 @begin test_8s::@return test_8s::@1 test_8s::@3 test_8s::@4 test_8s::@5 test_8s::@6 test_8s::@7
|
||||
print_sbyte dominated by main::@1 main::@2 main::@3 test_8s @19 print_sbyte main @begin test_8s::@1 test_8s::@3
|
||||
print_sbyte::@2 dominated by main::@1 main::@2 main::@3 test_8s @19 print_sbyte main print_sbyte::@2 @begin test_8s::@1 test_8s::@3
|
||||
print_sbyte::@4 dominated by main::@1 main::@2 main::@3 test_8s @19 print_sbyte main print_sbyte::@4 print_sbyte::@2 @begin test_8s::@1 test_8s::@3
|
||||
print_sbyte::@1 dominated by main::@1 main::@2 main::@3 test_8s @19 print_sbyte main print_sbyte::@1 @begin test_8s::@1 test_8s::@3
|
||||
print_sbyte::@return dominated by main::@1 main::@2 main::@3 test_8s @19 print_sbyte main print_sbyte::@1 @begin print_sbyte::@return test_8s::@1 test_8s::@3
|
||||
div8s dominated by main::@1 main::@2 main::@3 div8s test_8s @19 main @begin test_8s::@1
|
||||
div8s::@7 dominated by main::@1 main::@2 main::@3 div8s test_8s @19 main @begin test_8s::@1 div8s::@7
|
||||
div8s::@2 dominated by main::@1 main::@2 main::@3 div8s test_8s @19 main div8s::@2 @begin test_8s::@1
|
||||
div8s::@9 dominated by main::@1 main::@2 main::@3 div8s test_8s @19 main div8s::@2 @begin test_8s::@1 div8s::@9
|
||||
div8s::@4 dominated by main::@1 main::@2 main::@3 div8s test_8s @19 main div8s::@2 @begin test_8s::@1 div8s::@4
|
||||
div8s::@15 dominated by main::@1 main::@2 main::@3 div8s test_8s @19 div8s::@15 main div8s::@2 @begin test_8s::@1 div8s::@4
|
||||
div8s::@18 dominated by main::@1 main::@2 main::@3 div8s test_8s @19 div8s::@18 div8s::@15 main div8s::@2 @begin test_8s::@1 div8s::@4
|
||||
div8s::@return dominated by main::@1 main::@2 main::@3 div8s test_8s @19 div8s::@15 main div8s::@2 div8s::@return @begin test_8s::@1 div8s::@4
|
||||
div8s::@5 dominated by main::@1 main::@2 main::@3 div8s test_8s @19 div8s::@15 main div8s::@2 @begin test_8s::@1 div8s::@5 div8s::@4
|
||||
div8s::@17 dominated by main::@1 main::@2 main::@3 div8s test_8s @19 div8s::@17 main div8s::@2 @begin test_8s::@1
|
||||
div8s::@16 dominated by main::@1 main::@2 main::@3 div8s test_8s @19 div8s::@16 main @begin test_8s::@1
|
||||
div8u dominated by main::@1 div8u @19 main @begin
|
||||
div8u::@1 dominated by main::@1 div8u @19 main @begin div8u::@1
|
||||
div8u::@4 dominated by main::@1 div8u @19 main div8u::@4 @begin div8u::@1
|
||||
div8u::@2 dominated by main::@1 div8u @19 main div8u::@2 @begin div8u::@1
|
||||
div8u::@5 dominated by main::@1 div8u @19 main div8u::@2 div8u::@5 @begin div8u::@1
|
||||
div8u::@3 dominated by main::@1 div8u @19 main div8u::@3 div8u::@2 @begin div8u::@1
|
||||
div8u::@6 dominated by main::@1 div8u @19 main div8u::@3 div8u::@2 div8u::@6 @begin div8u::@1
|
||||
div8u::@return dominated by main::@1 div8u div8u::@return @19 main div8u::@3 div8u::@2 div8u::@6 @begin div8u::@1
|
||||
test_16u dominated by main::@1 main::@2 @19 test_16u main @begin
|
||||
test_16u::@1 dominated by main::@1 main::@2 @19 test_16u test_16u::@1 main @begin
|
||||
test_16u::@3 dominated by main::@1 main::@2 @19 test_16u test_16u::@1 test_16u::@3 main @begin
|
||||
test_16u::@4 dominated by main::@1 main::@2 @19 test_16u test_16u::@1 test_16u::@3 test_16u::@4 main @begin
|
||||
test_16u::@5 dominated by main::@1 main::@2 @19 test_16u test_16u::@5 test_16u::@1 test_16u::@3 test_16u::@4 main @begin
|
||||
test_16u::@6 dominated by main::@1 main::@2 @19 test_16u test_16u::@5 test_16u::@6 test_16u::@1 test_16u::@3 test_16u::@4 main @begin
|
||||
test_16u::@7 dominated by main::@1 main::@2 @19 test_16u test_16u::@5 test_16u::@6 test_16u::@7 test_16u::@1 test_16u::@3 test_16u::@4 main @begin
|
||||
test_16u::@8 dominated by main::@1 main::@2 @19 test_16u test_16u::@5 test_16u::@6 test_16u::@7 test_16u::@8 test_16u::@1 test_16u::@3 test_16u::@4 main @begin
|
||||
test_16u::@9 dominated by main::@1 main::@2 @19 test_16u test_16u::@9 test_16u::@5 test_16u::@6 test_16u::@7 test_16u::@8 test_16u::@1 test_16u::@3 test_16u::@4 main @begin
|
||||
test_16u::@10 dominated by main::@1 main::@2 test_16u::@10 @19 test_16u test_16u::@9 test_16u::@5 test_16u::@6 test_16u::@7 test_16u::@8 test_16u::@1 test_16u::@3 test_16u::@4 main @begin
|
||||
test_16u::@11 dominated by main::@1 main::@2 test_16u::@11 test_16u::@10 @19 test_16u test_16u::@9 test_16u::@5 test_16u::@6 test_16u::@7 test_16u::@8 test_16u::@1 test_16u::@3 test_16u::@4 main @begin
|
||||
test_16u::@return dominated by main::@1 main::@2 test_16u::@11 test_16u::@10 @19 test_16u test_16u::@9 test_16u::@5 test_16u::@6 test_16u::@7 test_16u::@8 test_16u::@1 test_16u::@3 test_16u::@4 main @begin test_16u::@return
|
||||
test_8u dominated by main::@1 test_8u @19 main @begin
|
||||
test_8u::@1 dominated by main::@1 test_8u @19 main @begin test_8u::@1
|
||||
test_8u::@3 dominated by main::@1 test_8u @19 main @begin test_8u::@3 test_8u::@1
|
||||
test_8u::@4 dominated by main::@1 test_8u @19 main @begin test_8u::@3 test_8u::@4 test_8u::@1
|
||||
test_8u::@5 dominated by main::@1 test_8u @19 main @begin test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@1
|
||||
test_8u::@6 dominated by main::@1 test_8u @19 main @begin test_8u::@6 test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@1
|
||||
test_8u::@7 dominated by main::@1 test_8u @19 main @begin test_8u::@6 test_8u::@7 test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@1
|
||||
test_8u::@8 dominated by main::@1 test_8u @19 main @begin test_8u::@6 test_8u::@7 test_8u::@8 test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@1
|
||||
test_8u::@9 dominated by main::@1 test_8u @19 main @begin test_8u::@6 test_8u::@7 test_8u::@8 test_8u::@9 test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@1
|
||||
test_8u::@10 dominated by main::@1 test_8u @19 main @begin test_8u::@6 test_8u::@7 test_8u::@8 test_8u::@9 test_8u::@10 test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@1
|
||||
test_8u::@11 dominated by main::@1 test_8u @19 main @begin test_8u::@6 test_8u::@7 test_8u::@8 test_8u::@9 test_8u::@10 test_8u::@11 test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@1
|
||||
test_8u::@return dominated by main::@1 test_8u @19 main @begin test_8u::@6 test_8u::@7 test_8u::@8 test_8u::@9 test_8u::@10 test_8u::@11 test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@1 test_8u::@return
|
||||
test_8u::@12 dominated by main::@1 test_8u @19 main @begin test_8u::@6 test_8u::@7 test_8u::@8 test_8u::@9 test_8u::@10 test_8u::@12 test_8u::@11 test_8u::@3 test_8u::@4 test_8u::@5 test_8u::@1
|
||||
print_cls dominated by @19 print_cls main @begin
|
||||
print_cls::@1 dominated by @19 print_cls main @begin print_cls::@1
|
||||
print_cls::@return dominated by @19 print_cls main @begin print_cls::@return print_cls::@1
|
||||
|
||||
NATURAL LOOPS
|
||||
Found back edge: Loop head: test_16s::@1 tails: test_16s::@11 blocks: null
|
||||
@ -6687,17 +6740,17 @@ INITIAL ASM
|
||||
.label rem16s = 3
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @18 [phi:@begin->@18]
|
||||
b18_from_bbegin:
|
||||
jmp b18
|
||||
//SEG4 @18
|
||||
b18:
|
||||
//SEG3 [1] phi from @begin to @19 [phi:@begin->@19]
|
||||
b19_from_bbegin:
|
||||
jmp b19
|
||||
//SEG4 @19
|
||||
b19:
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
//SEG6 [4] phi from @18 to main [phi:@18->main]
|
||||
main_from_b18:
|
||||
//SEG6 [4] phi from @19 to main [phi:@19->main]
|
||||
main_from_b19:
|
||||
jsr main
|
||||
//SEG7 [3] phi from @18 to @end [phi:@18->@end]
|
||||
bend_from_b18:
|
||||
//SEG7 [3] phi from @19 to @end [phi:@19->@end]
|
||||
bend_from_b19:
|
||||
jmp bend
|
||||
//SEG8 @end
|
||||
bend:
|
||||
@ -6758,9 +6811,9 @@ test_16s: {
|
||||
//SEG31 [16] phi from test_16s to test_16s::@1 [phi:test_16s->test_16s::@1]
|
||||
b1_from_test_16s:
|
||||
//SEG32 [16] phi (signed word) rem16s#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16s->test_16s::@1#0] -- vwsz1=vbuc1
|
||||
lda #0
|
||||
lda #<0
|
||||
sta rem16s
|
||||
lda #0
|
||||
lda #>0
|
||||
sta rem16s+1
|
||||
//SEG33 [16] phi (byte) test_16s::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16s->test_16s::@1#1] -- vbuz1=vbuc1
|
||||
lda #0
|
||||
@ -7360,15 +7413,15 @@ div16u: {
|
||||
lda #0
|
||||
sta i
|
||||
//SEG220 [107] phi (word) div16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->div16u::@1#1] -- vwuz1=vbuc1
|
||||
lda #0
|
||||
lda #<0
|
||||
sta quotient
|
||||
lda #0
|
||||
lda #>0
|
||||
sta quotient+1
|
||||
//SEG221 [107] phi (word) div16u::dividend#3 = (word) div16u::dividend#5 [phi:div16u->div16u::@1#2] -- register_copy
|
||||
//SEG222 [107] phi (word) div16u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->div16u::@1#3] -- vwuz1=vbuc1
|
||||
lda #0
|
||||
lda #<0
|
||||
sta rem
|
||||
lda #0
|
||||
lda #>0
|
||||
sta rem+1
|
||||
jmp b1
|
||||
//SEG223 [107] phi from div16u::@3 to div16u::@1 [phi:div16u::@3->div16u::@1]
|
||||
@ -7937,9 +7990,9 @@ test_16u: {
|
||||
//SEG423 [203] phi from test_16u to test_16u::@1 [phi:test_16u->test_16u::@1]
|
||||
b1_from_test_16u:
|
||||
//SEG424 [203] phi (word) rem16u#30 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16u->test_16u::@1#0] -- vwuz1=vbuc1
|
||||
lda #0
|
||||
lda #<0
|
||||
sta rem16u
|
||||
lda #0
|
||||
lda #>0
|
||||
sta rem16u+1
|
||||
//SEG425 [203] phi (byte) test_16u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16u->test_16u::@1#1] -- vbuz1=vbuc1
|
||||
lda #0
|
||||
@ -8735,17 +8788,17 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.label rem16s = 3
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @18 [phi:@begin->@18]
|
||||
b18_from_bbegin:
|
||||
jmp b18
|
||||
//SEG4 @18
|
||||
b18:
|
||||
//SEG3 [1] phi from @begin to @19 [phi:@begin->@19]
|
||||
b19_from_bbegin:
|
||||
jmp b19
|
||||
//SEG4 @19
|
||||
b19:
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
//SEG6 [4] phi from @18 to main [phi:@18->main]
|
||||
main_from_b18:
|
||||
//SEG6 [4] phi from @19 to main [phi:@19->main]
|
||||
main_from_b19:
|
||||
jsr main
|
||||
//SEG7 [3] phi from @18 to @end [phi:@18->@end]
|
||||
bend_from_b18:
|
||||
//SEG7 [3] phi from @19 to @end [phi:@19->@end]
|
||||
bend_from_b19:
|
||||
jmp bend
|
||||
//SEG8 @end
|
||||
bend:
|
||||
@ -8806,9 +8859,9 @@ test_16s: {
|
||||
//SEG31 [16] phi from test_16s to test_16s::@1 [phi:test_16s->test_16s::@1]
|
||||
b1_from_test_16s:
|
||||
//SEG32 [16] phi (signed word) rem16s#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16s->test_16s::@1#0] -- vwsz1=vbuc1
|
||||
lda #0
|
||||
lda #<0
|
||||
sta rem16s
|
||||
lda #0
|
||||
lda #>0
|
||||
sta rem16s+1
|
||||
//SEG33 [16] phi (byte) test_16s::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16s->test_16s::@1#1] -- vbuz1=vbuc1
|
||||
lda #0
|
||||
@ -9347,15 +9400,15 @@ div16u: {
|
||||
//SEG219 [107] phi (byte) div16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->div16u::@1#0] -- vbuxx=vbuc1
|
||||
ldx #0
|
||||
//SEG220 [107] phi (word) div16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->div16u::@1#1] -- vwuz1=vbuc1
|
||||
lda #0
|
||||
lda #<0
|
||||
sta quotient
|
||||
lda #0
|
||||
lda #>0
|
||||
sta quotient+1
|
||||
//SEG221 [107] phi (word) div16u::dividend#3 = (word) div16u::dividend#5 [phi:div16u->div16u::@1#2] -- register_copy
|
||||
//SEG222 [107] phi (word) div16u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->div16u::@1#3] -- vwuz1=vbuc1
|
||||
lda #0
|
||||
lda #<0
|
||||
sta rem
|
||||
lda #0
|
||||
lda #>0
|
||||
sta rem+1
|
||||
jmp b1
|
||||
//SEG223 [107] phi from div16u::@3 to div16u::@1 [phi:div16u::@3->div16u::@1]
|
||||
@ -9877,9 +9930,9 @@ test_16u: {
|
||||
//SEG423 [203] phi from test_16u to test_16u::@1 [phi:test_16u->test_16u::@1]
|
||||
b1_from_test_16u:
|
||||
//SEG424 [203] phi (word) rem16u#30 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16u->test_16u::@1#0] -- vwuz1=vbuc1
|
||||
lda #0
|
||||
lda #<0
|
||||
sta rem16u
|
||||
lda #0
|
||||
lda #>0
|
||||
sta rem16u+1
|
||||
//SEG425 [203] phi (byte) test_16u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16u->test_16u::@1#1] -- vbuz1=vbuc1
|
||||
lda #0
|
||||
@ -10276,7 +10329,7 @@ print_cls: {
|
||||
}
|
||||
|
||||
ASSEMBLER OPTIMIZATIONS
|
||||
Removing instruction jmp b18
|
||||
Removing instruction jmp b19
|
||||
Removing instruction jmp bend
|
||||
Removing instruction jmp b1
|
||||
Removing instruction jmp b2
|
||||
@ -10375,20 +10428,20 @@ Removing instruction jmp breturn
|
||||
Removing instruction jmp b1
|
||||
Removing instruction jmp breturn
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Removing instruction lda #0
|
||||
Removing instruction lda #>0
|
||||
Removing instruction lda #0
|
||||
Removing instruction ldy i
|
||||
Removing instruction lda i
|
||||
Removing instruction ldy #0
|
||||
Replacing instruction lda #0 with TXA
|
||||
Removing instruction lda #0
|
||||
Removing instruction lda #0
|
||||
Removing instruction lda #0
|
||||
Replacing instruction lda #<0 with TXA
|
||||
Removing instruction lda #>0
|
||||
Removing instruction lda #<0
|
||||
Removing instruction lda #>0
|
||||
Removing instruction lda #0
|
||||
Removing instruction ldy i
|
||||
Replacing instruction lda #0 with TXA
|
||||
Replacing instruction ldy #0 with TAY
|
||||
Removing instruction lda #0
|
||||
Removing instruction lda #>0
|
||||
Removing instruction lda #0
|
||||
Removing instruction ldy i
|
||||
Removing instruction lda i
|
||||
@ -10417,9 +10470,9 @@ Replacing label b1_from_b11 with b1
|
||||
Replacing label b1_from_b1 with b1
|
||||
Replacing label b1_from_b1 with b1
|
||||
Removing instruction bbegin:
|
||||
Removing instruction b18_from_bbegin:
|
||||
Removing instruction main_from_b18:
|
||||
Removing instruction bend_from_b18:
|
||||
Removing instruction b19_from_bbegin:
|
||||
Removing instruction main_from_b19:
|
||||
Removing instruction bend_from_b19:
|
||||
Removing instruction b1_from_main:
|
||||
Removing instruction test_8u_from_b1:
|
||||
Removing instruction b2_from_b1:
|
||||
@ -10495,7 +10548,7 @@ Removing instruction b10_from_b9:
|
||||
Removing instruction print_ln_from_b10:
|
||||
Removing instruction b1_from_b1:
|
||||
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||
Removing instruction b18:
|
||||
Removing instruction b19:
|
||||
Removing instruction bend:
|
||||
Removing instruction print_cls_from_main:
|
||||
Removing instruction b1:
|
||||
@ -10631,7 +10684,7 @@ Succesful ASM optimization Pass5UnreachableCodeElimination
|
||||
Fixing long branch [82] bne b1 to beq
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(label) @18
|
||||
(label) @19
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) SCREEN
|
||||
@ -11068,12 +11121,12 @@ Score: 33529
|
||||
.label rem16u = 3
|
||||
.label rem16s = 3
|
||||
//SEG2 @begin
|
||||
//SEG3 [1] phi from @begin to @18 [phi:@begin->@18]
|
||||
//SEG4 @18
|
||||
//SEG3 [1] phi from @begin to @19 [phi:@begin->@19]
|
||||
//SEG4 @19
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
//SEG6 [4] phi from @18 to main [phi:@18->main]
|
||||
//SEG6 [4] phi from @19 to main [phi:@19->main]
|
||||
jsr main
|
||||
//SEG7 [3] phi from @18 to @end [phi:@18->@end]
|
||||
//SEG7 [3] phi from @19 to @end [phi:@19->@end]
|
||||
//SEG8 @end
|
||||
//SEG9 main
|
||||
main: {
|
||||
@ -11112,7 +11165,7 @@ test_16s: {
|
||||
.label i = 2
|
||||
//SEG31 [16] phi from test_16s to test_16s::@1 [phi:test_16s->test_16s::@1]
|
||||
//SEG32 [16] phi (signed word) rem16s#17 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16s->test_16s::@1#0] -- vwsz1=vbuc1
|
||||
lda #0
|
||||
lda #<0
|
||||
sta rem16s
|
||||
sta rem16s+1
|
||||
//SEG33 [16] phi (byte) test_16s::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16s->test_16s::@1#1] -- vbuz1=vbuc1
|
||||
@ -11979,7 +12032,7 @@ test_16u: {
|
||||
.label i = 2
|
||||
//SEG423 [203] phi from test_16u to test_16u::@1 [phi:test_16u->test_16u::@1]
|
||||
//SEG424 [203] phi (word) rem16u#30 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16u->test_16u::@1#0] -- vwuz1=vbuc1
|
||||
lda #0
|
||||
lda #<0
|
||||
sta rem16u
|
||||
sta rem16u+1
|
||||
//SEG425 [203] phi (byte) test_16u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16u->test_16u::@1#1] -- vbuz1=vbuc1
|
||||
|
@ -1,4 +1,4 @@
|
||||
(label) @18
|
||||
(label) @19
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) SCREEN
|
||||
|
@ -38,8 +38,8 @@ main: {
|
||||
sta _2
|
||||
lda dw+3
|
||||
sta _2+1
|
||||
lda _32
|
||||
clc
|
||||
lda _32
|
||||
adc #<$1111
|
||||
sta _32
|
||||
lda _32+1
|
||||
@ -57,8 +57,8 @@ main: {
|
||||
sta _5
|
||||
lda dw+1
|
||||
sta _5+1
|
||||
lda _33
|
||||
clc
|
||||
lda _33
|
||||
adc #<$1111
|
||||
sta _33
|
||||
lda _33+1
|
||||
|
@ -1,13 +1,13 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi() [ ] ( )
|
||||
to:@10
|
||||
@10: scope:[] from @begin
|
||||
to:@11
|
||||
@11: scope:[] from @begin
|
||||
[1] phi() [ ] ( )
|
||||
[2] call main param-assignment [ ] ( )
|
||||
to:@end
|
||||
@end: scope:[] from @10
|
||||
@end: scope:[] from @11
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @10
|
||||
main: scope:[main] from @11
|
||||
[4] phi() [ ] ( main:2 [ ] )
|
||||
[5] call print_cls param-assignment [ ] ( main:2 [ ] )
|
||||
to:main::@1
|
||||
|
@ -76,6 +76,15 @@ void print_dword(dword dw) {
|
||||
print_word(<dw);
|
||||
}
|
||||
|
||||
// Print a signed dword as HEX
|
||||
void print_sdword(signed dword dw) {
|
||||
if(dw<0) {
|
||||
print_char('-');
|
||||
dw = -dw;
|
||||
}
|
||||
print_dword((dword)dw);
|
||||
}
|
||||
|
||||
// Print a byte as HEX
|
||||
void print_byte(byte b) {
|
||||
// Table of hexadecimal digits
|
||||
@ -176,6 +185,19 @@ proc (void()) print_dword((dword) print_dword::dw)
|
||||
print_dword::@return:
|
||||
return
|
||||
endproc // print_dword()
|
||||
proc (void()) print_sdword((signed dword) print_sdword::dw)
|
||||
(boolean~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(boolean~) print_sdword::$1 ← ! (boolean~) print_sdword::$0
|
||||
if((boolean~) print_sdword::$1) goto print_sdword::@1
|
||||
(void~) print_sdword::$2 ← call print_char (byte) '-'
|
||||
(signed dword~) print_sdword::$3 ← - (signed dword) print_sdword::dw
|
||||
(signed dword) print_sdword::dw ← (signed dword~) print_sdword::$3
|
||||
print_sdword::@1:
|
||||
(dword~) print_sdword::$4 ← ((dword)) (signed dword) print_sdword::dw
|
||||
(void~) print_sdword::$5 ← call print_dword (dword~) print_sdword::$4
|
||||
print_sdword::@return:
|
||||
return
|
||||
endproc // print_sdword()
|
||||
proc (void()) print_byte((byte) print_byte::b)
|
||||
(byte[]) print_byte::hextab ← (string) "0123456789abcdef"
|
||||
(byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
@ -329,6 +351,16 @@ SYMBOLS
|
||||
(label) print_sbyte::@1
|
||||
(label) print_sbyte::@return
|
||||
(signed byte) print_sbyte::b
|
||||
(void()) print_sdword((signed dword) print_sdword::dw)
|
||||
(boolean~) print_sdword::$0
|
||||
(boolean~) print_sdword::$1
|
||||
(void~) print_sdword::$2
|
||||
(signed dword~) print_sdword::$3
|
||||
(dword~) print_sdword::$4
|
||||
(void~) print_sdword::$5
|
||||
(label) print_sdword::@1
|
||||
(label) print_sdword::@return
|
||||
(signed dword) print_sdword::dw
|
||||
(void()) print_str((byte*) print_str::str)
|
||||
(boolean~) print_str::$0
|
||||
(label) print_str::@1
|
||||
@ -463,6 +495,25 @@ print_dword::@return: scope:[print_dword] from print_dword
|
||||
to:@return
|
||||
@6: scope:[] from @5
|
||||
to:@7
|
||||
print_sdword: scope:[print_sdword] from
|
||||
(boolean~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(boolean~) print_sdword::$1 ← ! (boolean~) print_sdword::$0
|
||||
if((boolean~) print_sdword::$1) goto print_sdword::@1
|
||||
to:print_sdword::@2
|
||||
print_sdword::@1: scope:[print_sdword] from print_sdword print_sdword::@2
|
||||
(dword~) print_sdword::$4 ← ((dword)) (signed dword) print_sdword::dw
|
||||
(void~) print_sdword::$5 ← call print_dword (dword~) print_sdword::$4
|
||||
to:print_sdword::@return
|
||||
print_sdword::@2: scope:[print_sdword] from print_sdword
|
||||
(void~) print_sdword::$2 ← call print_char (byte) '-'
|
||||
(signed dword~) print_sdword::$3 ← - (signed dword) print_sdword::dw
|
||||
(signed dword) print_sdword::dw ← (signed dword~) print_sdword::$3
|
||||
to:print_sdword::@1
|
||||
print_sdword::@return: scope:[print_sdword] from print_sdword::@1
|
||||
return
|
||||
to:@return
|
||||
@7: scope:[] from @6
|
||||
to:@8
|
||||
print_byte: scope:[print_byte] from
|
||||
(byte[]) print_byte::hextab ← (string) "0123456789abcdef"
|
||||
(byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
@ -473,8 +524,8 @@ print_byte: scope:[print_byte] from
|
||||
print_byte::@return: scope:[print_byte] from print_byte
|
||||
return
|
||||
to:@return
|
||||
@7: scope:[] from @6
|
||||
to:@8
|
||||
@8: scope:[] from @7
|
||||
to:@9
|
||||
print_char: scope:[print_char] from
|
||||
*((byte*) char_cursor) ← (byte) print_char::ch
|
||||
(byte*) char_cursor ← ++ (byte*) char_cursor
|
||||
@ -482,8 +533,8 @@ print_char: scope:[print_char] from
|
||||
print_char::@return: scope:[print_char] from print_char
|
||||
return
|
||||
to:@return
|
||||
@8: scope:[] from @7
|
||||
to:@9
|
||||
@9: scope:[] from @8
|
||||
to:@10
|
||||
print_cls: scope:[print_cls] from
|
||||
(byte*) print_cls::sc ← (byte*) SCREEN
|
||||
to:print_cls::@1
|
||||
@ -501,8 +552,8 @@ print_cls::@2: scope:[print_cls] from print_cls::@1
|
||||
print_cls::@return: scope:[print_cls] from print_cls::@2
|
||||
return
|
||||
to:@return
|
||||
@9: scope:[] from @8
|
||||
to:@10
|
||||
@10: scope:[] from @9
|
||||
to:@11
|
||||
main: scope:[main] from
|
||||
(void~) main::$0 ← call print_cls
|
||||
(dword) main::dw ← (dword/signed dword) 305419896
|
||||
@ -552,14 +603,15 @@ main::@2: scope:[main] from main::@1
|
||||
main::@return: scope:[main] from main::@2
|
||||
return
|
||||
to:@return
|
||||
@10: scope:[] from @9
|
||||
@11: scope:[] from @10
|
||||
call main
|
||||
to:@end
|
||||
@end: scope:[] from @10
|
||||
@end: scope:[] from @11
|
||||
|
||||
Removing unused procedure print_str
|
||||
Removing unused procedure print_sword
|
||||
Removing unused procedure print_sbyte
|
||||
Removing unused procedure print_sdword
|
||||
Eliminating unused variable - keeping the call (void~) print_word::$1
|
||||
Eliminating unused variable - keeping the call (void~) print_word::$3
|
||||
Eliminating unused variable - keeping the call (void~) print_dword::$1
|
||||
@ -593,6 +645,7 @@ Removing empty block @6
|
||||
Removing empty block @7
|
||||
Removing empty block @8
|
||||
Removing empty block @9
|
||||
Removing empty block @10
|
||||
Removing empty block main::@2
|
||||
PROCEDURE MODIFY VARIABLE ANALYSIS
|
||||
print_ln modifies line_cursor
|
||||
@ -627,7 +680,7 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN
|
||||
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
|
||||
(byte*) line_cursor#0 ← (byte*) SCREEN#0
|
||||
(byte*) char_cursor#0 ← (byte*) line_cursor#0
|
||||
to:@10
|
||||
to:@11
|
||||
print_ln: scope:[print_ln] from main::@16
|
||||
(byte*) char_cursor#64 ← phi( main::@16/(byte*) char_cursor#29 )
|
||||
(byte*) line_cursor#17 ← phi( main::@16/(byte*) line_cursor#19 )
|
||||
@ -757,9 +810,9 @@ print_cls::@return: scope:[print_cls] from print_cls::@2
|
||||
(byte*) char_cursor#15 ← (byte*) char_cursor#46
|
||||
return
|
||||
to:@return
|
||||
main: scope:[main] from @10
|
||||
(byte*) char_cursor#68 ← phi( @10/(byte*) char_cursor#70 )
|
||||
(byte*) line_cursor#18 ← phi( @10/(byte*) line_cursor#20 )
|
||||
main: scope:[main] from @11
|
||||
(byte*) char_cursor#68 ← phi( @11/(byte*) char_cursor#70 )
|
||||
(byte*) line_cursor#18 ← phi( @11/(byte*) line_cursor#20 )
|
||||
call print_cls param-assignment
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main
|
||||
@ -927,22 +980,22 @@ main::@return: scope:[main] from main::@17
|
||||
(byte*) char_cursor#31 ← (byte*) char_cursor#62
|
||||
return
|
||||
to:@return
|
||||
@10: scope:[] from @begin
|
||||
@11: scope:[] from @begin
|
||||
(byte*) char_cursor#70 ← phi( @begin/(byte*) char_cursor#0 )
|
||||
(byte*) line_cursor#20 ← phi( @begin/(byte*) line_cursor#0 )
|
||||
call main param-assignment
|
||||
to:@11
|
||||
@11: scope:[] from @10
|
||||
(byte*) char_cursor#63 ← phi( @10/(byte*) char_cursor#31 )
|
||||
(byte*) line_cursor#16 ← phi( @10/(byte*) line_cursor#7 )
|
||||
to:@12
|
||||
@12: scope:[] from @11
|
||||
(byte*) char_cursor#63 ← phi( @11/(byte*) char_cursor#31 )
|
||||
(byte*) line_cursor#16 ← phi( @11/(byte*) line_cursor#7 )
|
||||
(byte*) line_cursor#8 ← (byte*) line_cursor#16
|
||||
(byte*) char_cursor#32 ← (byte*) char_cursor#63
|
||||
to:@end
|
||||
@end: scope:[] from @11
|
||||
@end: scope:[] from @12
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @10
|
||||
(label) @11
|
||||
(label) @12
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) SCREEN
|
||||
@ -1381,7 +1434,7 @@ Culled Empty Block (label) print_dword::@2
|
||||
Culled Empty Block (label) print_byte::@2
|
||||
Culled Empty Block (label) print_cls::@2
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) @11
|
||||
Culled Empty Block (label) @12
|
||||
Succesful SSA optimization Pass2CullEmptyBlocks
|
||||
Not aliassing across scopes: line_cursor#9 line_cursor#19
|
||||
Not aliassing across scopes: print_word::w#4 print_word::w#2
|
||||
@ -1467,13 +1520,13 @@ Constant inlined print_char::ch#7 = (byte) ' '
|
||||
Constant inlined main::dw#0 = (dword/signed dword) 305419896
|
||||
Constant inlined print_char::ch#6 = (byte) ' '
|
||||
Succesful SSA optimization Pass2ConstantInlining
|
||||
Block Sequence Planned @begin @10 @end main main::@1 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@13 main::@14 main::@15 main::@16 main::@17 main::@return print_ln print_ln::@1 print_ln::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_word print_word::@1 print_word::@return print_dword print_dword::@1 print_dword::@return print_cls print_cls::@1 print_cls::@return
|
||||
Block Sequence Planned @begin @11 @end main main::@1 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@13 main::@14 main::@15 main::@16 main::@17 main::@return print_ln print_ln::@1 print_ln::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_word print_word::@1 print_word::@return print_dword print_dword::@1 print_dword::@return print_cls print_cls::@1 print_cls::@return
|
||||
Added new block during phi lifting main::@18(between main::@17 and main::@1)
|
||||
Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1)
|
||||
Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1)
|
||||
Block Sequence Planned @begin @10 @end main main::@1 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@13 main::@14 main::@15 main::@16 main::@17 main::@return main::@18 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_word print_word::@1 print_word::@return print_dword print_dword::@1 print_dword::@return print_cls print_cls::@1 print_cls::@return print_cls::@3
|
||||
Block Sequence Planned @begin @11 @end main main::@1 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@13 main::@14 main::@15 main::@16 main::@17 main::@return main::@18 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_word print_word::@1 print_word::@return print_dword print_dword::@1 print_dword::@return print_cls print_cls::@1 print_cls::@return print_cls::@3
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @10
|
||||
Adding NOP phi() at start of @11
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@16
|
||||
@ -1576,9 +1629,9 @@ Coalesced [110] print_cls::sc#3 ← print_cls::sc#1
|
||||
Coalesced down to 7 phi equivalence classes
|
||||
Culled Empty Block (label) print_ln::@3
|
||||
Culled Empty Block (label) print_cls::@3
|
||||
Block Sequence Planned @begin @10 @end main main::@1 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@13 main::@14 main::@15 main::@16 main::@17 main::@return main::@18 print_ln print_ln::@1 print_ln::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_word print_word::@1 print_word::@return print_dword print_dword::@1 print_dword::@return print_cls print_cls::@1 print_cls::@return
|
||||
Block Sequence Planned @begin @11 @end main main::@1 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@13 main::@14 main::@15 main::@16 main::@17 main::@return main::@18 print_ln print_ln::@1 print_ln::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_word print_word::@1 print_word::@return print_dword print_dword::@1 print_dword::@return print_cls print_cls::@1 print_cls::@return
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @10
|
||||
Adding NOP phi() at start of @11
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@4
|
||||
@ -1634,14 +1687,14 @@ Propagating live ranges...
|
||||
FINAL CONTROL FLOW GRAPH
|
||||
@begin: scope:[] from
|
||||
[0] phi() [ ] ( )
|
||||
to:@10
|
||||
@10: scope:[] from @begin
|
||||
to:@11
|
||||
@11: scope:[] from @begin
|
||||
[1] phi() [ ] ( )
|
||||
[2] call main param-assignment [ ] ( )
|
||||
to:@end
|
||||
@end: scope:[] from @10
|
||||
@end: scope:[] from @11
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @10
|
||||
main: scope:[main] from @11
|
||||
[4] phi() [ ] ( main:2 [ ] )
|
||||
[5] call print_cls param-assignment [ ] ( main:2 [ ] )
|
||||
to:main::@1
|
||||
@ -1798,43 +1851,43 @@ print_cls::@return: scope:[print_cls] from print_cls::@1
|
||||
|
||||
DOMINATORS
|
||||
@begin dominated by @begin
|
||||
@10 dominated by @10 @begin
|
||||
@end dominated by @end @10 @begin
|
||||
main dominated by main @10 @begin
|
||||
main::@1 dominated by main main::@1 @10 @begin
|
||||
main::@4 dominated by main main::@1 @10 main::@4 @begin
|
||||
main::@5 dominated by main main::@1 main::@5 @10 main::@4 @begin
|
||||
main::@6 dominated by main main::@1 main::@5 main::@6 @10 main::@4 @begin
|
||||
main::@7 dominated by main::@7 main main::@1 main::@5 main::@6 @10 main::@4 @begin
|
||||
main::@8 dominated by main::@7 main::@8 main main::@1 main::@5 main::@6 @10 main::@4 @begin
|
||||
main::@9 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 @10 main::@4 @begin
|
||||
main::@10 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 @10 main::@4 @begin main::@10
|
||||
main::@11 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 @10 main::@4 main::@11 @begin main::@10
|
||||
main::@12 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 @10 main::@4 main::@11 @begin main::@10 main::@12
|
||||
main::@13 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 @10 main::@4 main::@11 @begin main::@10 main::@13 main::@12
|
||||
main::@14 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 @10 main::@4 main::@11 @begin main::@10 main::@13 main::@12 main::@14
|
||||
main::@15 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 @10 main::@4 main::@11 @begin main::@10 main::@13 main::@12 main::@15 main::@14
|
||||
main::@16 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 @10 main::@4 main::@11 @begin main::@10 main::@16 main::@13 main::@12 main::@15 main::@14
|
||||
main::@17 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 @10 main::@4 main::@11 @begin main::@10 main::@17 main::@16 main::@13 main::@12 main::@15 main::@14
|
||||
main::@return dominated by main::@9 main::@return main::@7 main::@8 main main::@1 main::@5 main::@6 @10 main::@4 main::@11 @begin main::@10 main::@17 main::@16 main::@13 main::@12 main::@15 main::@14
|
||||
main::@18 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 @10 main::@4 main::@11 @begin main::@10 main::@17 main::@16 main::@18 main::@13 main::@12 main::@15 main::@14
|
||||
print_ln dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 @10 main::@4 main::@11 @begin main::@10 main::@16 main::@13 main::@12 main::@15 main::@14 print_ln
|
||||
print_ln::@1 dominated by main::@9 print_ln::@1 main::@7 main::@8 main main::@1 main::@5 main::@6 @10 main::@4 main::@11 @begin main::@10 main::@16 main::@13 main::@12 main::@15 main::@14 print_ln
|
||||
print_ln::@return dominated by main::@9 print_ln::@1 main::@7 main::@8 main print_ln::@return main::@1 main::@5 main::@6 @10 main::@4 main::@11 @begin main::@10 main::@16 main::@13 main::@12 main::@15 main::@14 print_ln
|
||||
print_byte dominated by main main::@1 @10 @begin print_byte
|
||||
print_byte::@1 dominated by main main::@1 print_byte::@1 @10 @begin print_byte
|
||||
print_byte::@return dominated by main main::@1 print_byte::@1 @10 @begin print_byte print_byte::@return
|
||||
print_char dominated by main print_char main::@1 @10 @begin
|
||||
print_char::@return dominated by main print_char main::@1 @10 print_char::@return @begin
|
||||
print_word dominated by main print_word main::@1 @10 @begin
|
||||
print_word::@1 dominated by main print_word main::@1 print_word::@1 @10 @begin
|
||||
print_word::@return dominated by main print_word main::@1 print_word::@1 @10 @begin print_word::@return
|
||||
print_dword dominated by main main::@1 @10 print_dword @begin
|
||||
print_dword::@1 dominated by main main::@1 print_dword::@1 @10 print_dword @begin
|
||||
print_dword::@return dominated by main print_dword::@return main::@1 print_dword::@1 @10 print_dword @begin
|
||||
print_cls dominated by main @10 @begin print_cls
|
||||
print_cls::@1 dominated by main @10 @begin print_cls::@1 print_cls
|
||||
print_cls::@return dominated by main print_cls::@return @10 @begin print_cls::@1 print_cls
|
||||
@11 dominated by @11 @begin
|
||||
@end dominated by @end @11 @begin
|
||||
main dominated by main @11 @begin
|
||||
main::@1 dominated by main main::@1 @11 @begin
|
||||
main::@4 dominated by main main::@1 main::@4 @11 @begin
|
||||
main::@5 dominated by main main::@1 main::@5 main::@4 @11 @begin
|
||||
main::@6 dominated by main main::@1 main::@5 main::@6 main::@4 @11 @begin
|
||||
main::@7 dominated by main::@7 main main::@1 main::@5 main::@6 main::@4 @11 @begin
|
||||
main::@8 dominated by main::@7 main::@8 main main::@1 main::@5 main::@6 main::@4 @11 @begin
|
||||
main::@9 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@4 @11 @begin
|
||||
main::@10 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@4 @11 @begin main::@10
|
||||
main::@11 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@4 @11 main::@11 @begin main::@10
|
||||
main::@12 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@4 @11 main::@11 @begin main::@10 main::@12
|
||||
main::@13 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@4 @11 main::@11 @begin main::@10 main::@13 main::@12
|
||||
main::@14 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@4 @11 main::@11 @begin main::@10 main::@13 main::@12 main::@14
|
||||
main::@15 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@4 @11 main::@11 @begin main::@10 main::@13 main::@12 main::@15 main::@14
|
||||
main::@16 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@4 @11 main::@11 @begin main::@10 main::@16 main::@13 main::@12 main::@15 main::@14
|
||||
main::@17 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@4 @11 main::@11 @begin main::@10 main::@17 main::@16 main::@13 main::@12 main::@15 main::@14
|
||||
main::@return dominated by main::@9 main::@return main::@7 main::@8 main main::@1 main::@5 main::@6 main::@4 @11 main::@11 @begin main::@10 main::@17 main::@16 main::@13 main::@12 main::@15 main::@14
|
||||
main::@18 dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@4 @11 main::@11 @begin main::@10 main::@17 main::@16 main::@18 main::@13 main::@12 main::@15 main::@14
|
||||
print_ln dominated by main::@9 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@4 @11 main::@11 @begin main::@10 main::@16 main::@13 main::@12 main::@15 main::@14 print_ln
|
||||
print_ln::@1 dominated by main::@9 print_ln::@1 main::@7 main::@8 main main::@1 main::@5 main::@6 main::@4 @11 main::@11 @begin main::@10 main::@16 main::@13 main::@12 main::@15 main::@14 print_ln
|
||||
print_ln::@return dominated by main::@9 print_ln::@1 main::@7 main::@8 main print_ln::@return main::@1 main::@5 main::@6 main::@4 @11 main::@11 @begin main::@10 main::@16 main::@13 main::@12 main::@15 main::@14 print_ln
|
||||
print_byte dominated by main main::@1 @11 @begin print_byte
|
||||
print_byte::@1 dominated by main main::@1 print_byte::@1 @11 @begin print_byte
|
||||
print_byte::@return dominated by main main::@1 print_byte::@1 @11 @begin print_byte print_byte::@return
|
||||
print_char dominated by main print_char main::@1 @11 @begin
|
||||
print_char::@return dominated by main print_char main::@1 @11 print_char::@return @begin
|
||||
print_word dominated by main print_word main::@1 @11 @begin
|
||||
print_word::@1 dominated by main print_word main::@1 print_word::@1 @11 @begin
|
||||
print_word::@return dominated by main print_word main::@1 print_word::@1 @11 @begin print_word::@return
|
||||
print_dword dominated by main main::@1 @11 print_dword @begin
|
||||
print_dword::@1 dominated by main main::@1 print_dword::@1 @11 print_dword @begin
|
||||
print_dword::@return dominated by main print_dword::@return main::@1 print_dword::@1 @11 print_dword @begin
|
||||
print_cls dominated by main @11 @begin print_cls
|
||||
print_cls::@1 dominated by main @11 @begin print_cls::@1 print_cls
|
||||
print_cls::@return dominated by main print_cls::@return @11 @begin print_cls::@1 print_cls
|
||||
|
||||
NATURAL LOOPS
|
||||
Found back edge: Loop head: main::@1 tails: main::@18 blocks: null
|
||||
@ -1999,17 +2052,17 @@ INITIAL ASM
|
||||
.label char_cursor = $a
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @10 [phi:@begin->@10]
|
||||
b10_from_bbegin:
|
||||
jmp b10
|
||||
//SEG4 @10
|
||||
b10:
|
||||
//SEG3 [1] phi from @begin to @11 [phi:@begin->@11]
|
||||
b11_from_bbegin:
|
||||
jmp b11
|
||||
//SEG4 @11
|
||||
b11:
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
//SEG6 [4] phi from @10 to main [phi:@10->main]
|
||||
main_from_b10:
|
||||
//SEG6 [4] phi from @11 to main [phi:@11->main]
|
||||
main_from_b11:
|
||||
jsr main
|
||||
//SEG7 [3] phi from @10 to @end [phi:@10->@end]
|
||||
bend_from_b10:
|
||||
//SEG7 [3] phi from @11 to @end [phi:@11->@end]
|
||||
bend_from_b11:
|
||||
jmp bend
|
||||
//SEG8 @end
|
||||
bend:
|
||||
@ -2659,17 +2712,17 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.label char_cursor = 8
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @10 [phi:@begin->@10]
|
||||
b10_from_bbegin:
|
||||
jmp b10
|
||||
//SEG4 @10
|
||||
b10:
|
||||
//SEG3 [1] phi from @begin to @11 [phi:@begin->@11]
|
||||
b11_from_bbegin:
|
||||
jmp b11
|
||||
//SEG4 @11
|
||||
b11:
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
//SEG6 [4] phi from @10 to main [phi:@10->main]
|
||||
main_from_b10:
|
||||
//SEG6 [4] phi from @11 to main [phi:@11->main]
|
||||
main_from_b11:
|
||||
jsr main
|
||||
//SEG7 [3] phi from @10 to @end [phi:@10->@end]
|
||||
bend_from_b10:
|
||||
//SEG7 [3] phi from @11 to @end [phi:@11->@end]
|
||||
bend_from_b11:
|
||||
jmp bend
|
||||
//SEG8 @end
|
||||
bend:
|
||||
@ -2719,8 +2772,8 @@ main: {
|
||||
lda dw+3
|
||||
sta _2+1
|
||||
//SEG18 [8] (word~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 [ main::dw#10 char_cursor#69 line_cursor#19 main::$32 ] ( main:2 [ main::dw#10 char_cursor#69 line_cursor#19 main::$32 ] ) -- vwuz1=vwuz1_plus_vwuc1
|
||||
lda _32
|
||||
clc
|
||||
lda _32
|
||||
adc #<$1111
|
||||
sta _32
|
||||
lda _32+1
|
||||
@ -2741,8 +2794,8 @@ main: {
|
||||
lda dw+1
|
||||
sta _5+1
|
||||
//SEG21 [11] (word~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 [ main::dw#10 char_cursor#69 line_cursor#19 main::dw2#1 main::$33 ] ( main:2 [ main::dw#10 char_cursor#69 line_cursor#19 main::dw2#1 main::$33 ] ) -- vwuz1=vwuz1_plus_vwuc1
|
||||
lda _33
|
||||
clc
|
||||
lda _33
|
||||
adc #<$1111
|
||||
sta _33
|
||||
lda _33+1
|
||||
@ -3170,7 +3223,7 @@ print_cls: {
|
||||
}
|
||||
|
||||
ASSEMBLER OPTIMIZATIONS
|
||||
Removing instruction jmp b10
|
||||
Removing instruction jmp b11
|
||||
Removing instruction jmp bend
|
||||
Removing instruction jmp b1
|
||||
Removing instruction jmp b4
|
||||
@ -3208,9 +3261,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 b10_from_bbegin:
|
||||
Removing instruction main_from_b10:
|
||||
Removing instruction bend_from_b10:
|
||||
Removing instruction b11_from_bbegin:
|
||||
Removing instruction main_from_b11:
|
||||
Removing instruction bend_from_b11:
|
||||
Removing instruction b4_from_b1:
|
||||
Removing instruction print_char_from_b4:
|
||||
Removing instruction b6_from_b5:
|
||||
@ -3229,7 +3282,7 @@ Removing instruction b1_from_print_ln:
|
||||
Removing instruction b1_from_b1:
|
||||
Removing instruction b1_from_b1:
|
||||
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||
Removing instruction b10:
|
||||
Removing instruction b11:
|
||||
Removing instruction bend:
|
||||
Removing instruction print_cls_from_main:
|
||||
Removing instruction b1_from_main:
|
||||
@ -3276,7 +3329,7 @@ Removing instruction jmp b1
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(label) @10
|
||||
(label) @11
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) SCREEN
|
||||
@ -3392,12 +3445,12 @@ Score: 7440
|
||||
.label line_cursor = 6
|
||||
.label char_cursor = 8
|
||||
//SEG2 @begin
|
||||
//SEG3 [1] phi from @begin to @10 [phi:@begin->@10]
|
||||
//SEG4 @10
|
||||
//SEG3 [1] phi from @begin to @11 [phi:@begin->@11]
|
||||
//SEG4 @11
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
//SEG6 [4] phi from @10 to main [phi:@10->main]
|
||||
//SEG6 [4] phi from @11 to main [phi:@11->main]
|
||||
jsr main
|
||||
//SEG7 [3] phi from @10 to @end [phi:@10->@end]
|
||||
//SEG7 [3] phi from @11 to @end [phi:@11->@end]
|
||||
//SEG8 @end
|
||||
//SEG9 main
|
||||
main: {
|
||||
@ -3442,8 +3495,8 @@ main: {
|
||||
lda dw+3
|
||||
sta _2+1
|
||||
//SEG18 [8] (word~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 [ main::dw#10 char_cursor#69 line_cursor#19 main::$32 ] ( main:2 [ main::dw#10 char_cursor#69 line_cursor#19 main::$32 ] ) -- vwuz1=vwuz1_plus_vwuc1
|
||||
lda _32
|
||||
clc
|
||||
lda _32
|
||||
adc #<$1111
|
||||
sta _32
|
||||
lda _32+1
|
||||
@ -3464,8 +3517,8 @@ main: {
|
||||
lda dw+1
|
||||
sta _5+1
|
||||
//SEG21 [11] (word~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 [ main::dw#10 char_cursor#69 line_cursor#19 main::dw2#1 main::$33 ] ( main:2 [ main::dw#10 char_cursor#69 line_cursor#19 main::dw2#1 main::$33 ] ) -- vwuz1=vwuz1_plus_vwuc1
|
||||
lda _33
|
||||
clc
|
||||
lda _33
|
||||
adc #<$1111
|
||||
sta _33
|
||||
lda _33+1
|
||||
|
@ -1,4 +1,4 @@
|
||||
(label) @10
|
||||
(label) @11
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) SCREEN
|
||||
|
@ -16,11 +16,494 @@ main: {
|
||||
jsr mul8u_compare
|
||||
jsr mul8s_compare
|
||||
jsr mul16u_compare
|
||||
jsr mul16s_compare
|
||||
rts
|
||||
}
|
||||
mul16s_compare: {
|
||||
.label a = 2
|
||||
.label b = 4
|
||||
.label ms = $a
|
||||
.label mn = $10
|
||||
ldx #0
|
||||
lda #<-$7fff
|
||||
sta b
|
||||
lda #>-$7fff
|
||||
sta b+1
|
||||
lda #<-$7fff
|
||||
sta a
|
||||
lda #>-$7fff
|
||||
sta a+1
|
||||
b1:
|
||||
ldy #0
|
||||
b2:
|
||||
clc
|
||||
lda a
|
||||
adc #<$d2b
|
||||
sta a
|
||||
lda a+1
|
||||
adc #>$d2b
|
||||
sta a+1
|
||||
clc
|
||||
lda b
|
||||
adc #<$ffd
|
||||
sta b
|
||||
lda b+1
|
||||
adc #>$ffd
|
||||
sta b+1
|
||||
jsr muls16s
|
||||
jsr mul16s
|
||||
lda ms
|
||||
cmp mn
|
||||
bne !+
|
||||
lda ms+1
|
||||
cmp mn+1
|
||||
bne !+
|
||||
lda ms+2
|
||||
cmp mn+2
|
||||
bne !+
|
||||
lda ms+3
|
||||
cmp mn+3
|
||||
beq b5
|
||||
!:
|
||||
lda #0
|
||||
jmp b3
|
||||
b5:
|
||||
lda #1
|
||||
b3:
|
||||
cmp #0
|
||||
bne b4
|
||||
lda #2
|
||||
sta BGCOL
|
||||
jsr mul16s_error
|
||||
breturn:
|
||||
rts
|
||||
b4:
|
||||
iny
|
||||
cpy #$10
|
||||
bne b2
|
||||
inx
|
||||
cpx #$10
|
||||
bne b1
|
||||
lda line_cursor
|
||||
sta char_cursor
|
||||
lda line_cursor+1
|
||||
sta char_cursor+1
|
||||
lda #<str
|
||||
sta print_str.str
|
||||
lda #>str
|
||||
sta print_str.str+1
|
||||
jsr print_str
|
||||
jsr print_ln
|
||||
jmp breturn
|
||||
str: .text "signed word multiply results match!@"
|
||||
}
|
||||
print_ln: {
|
||||
b1:
|
||||
lda line_cursor
|
||||
clc
|
||||
adc #$28
|
||||
sta line_cursor
|
||||
bcc !+
|
||||
inc line_cursor+1
|
||||
!:
|
||||
lda line_cursor+1
|
||||
cmp char_cursor+1
|
||||
bcc b1
|
||||
bne !+
|
||||
lda line_cursor
|
||||
cmp char_cursor
|
||||
bcc b1
|
||||
!:
|
||||
rts
|
||||
}
|
||||
print_str: {
|
||||
.label str = 8
|
||||
b1:
|
||||
ldy #0
|
||||
lda (str),y
|
||||
cmp #'@'
|
||||
bne b2
|
||||
rts
|
||||
b2:
|
||||
ldy #0
|
||||
lda (str),y
|
||||
sta (char_cursor),y
|
||||
inc char_cursor
|
||||
bne !+
|
||||
inc char_cursor+1
|
||||
!:
|
||||
inc str
|
||||
bne !+
|
||||
inc str+1
|
||||
!:
|
||||
jmp b1
|
||||
}
|
||||
mul16s_error: {
|
||||
.label a = 2
|
||||
.label b = 4
|
||||
.label ms = $a
|
||||
.label mn = $10
|
||||
lda line_cursor
|
||||
sta char_cursor
|
||||
lda line_cursor+1
|
||||
sta char_cursor+1
|
||||
lda #<str
|
||||
sta print_str.str
|
||||
lda #>str
|
||||
sta print_str.str+1
|
||||
jsr print_str
|
||||
jsr print_sword
|
||||
lda #<str1
|
||||
sta print_str.str
|
||||
lda #>str1
|
||||
sta print_str.str+1
|
||||
jsr print_str
|
||||
lda b
|
||||
sta print_sword.w
|
||||
lda b+1
|
||||
sta print_sword.w+1
|
||||
jsr print_sword
|
||||
lda #<str2
|
||||
sta print_str.str
|
||||
lda #>str2
|
||||
sta print_str.str+1
|
||||
jsr print_str
|
||||
jsr print_sdword
|
||||
lda #<str3
|
||||
sta print_str.str
|
||||
lda #>str3
|
||||
sta print_str.str+1
|
||||
jsr print_str
|
||||
lda mn
|
||||
sta print_sdword.dw
|
||||
lda mn+1
|
||||
sta print_sdword.dw+1
|
||||
lda mn+2
|
||||
sta print_sdword.dw+2
|
||||
lda mn+3
|
||||
sta print_sdword.dw+3
|
||||
jsr print_sdword
|
||||
jsr print_ln
|
||||
rts
|
||||
str: .text "signed word multiply mismatch @"
|
||||
str1: .text "*@"
|
||||
str2: .text " slow:@"
|
||||
str3: .text " / normal:@"
|
||||
}
|
||||
print_sdword: {
|
||||
.label dw = $a
|
||||
lda dw+3
|
||||
bpl b1
|
||||
lda #'-'
|
||||
jsr print_char
|
||||
sec
|
||||
lda dw
|
||||
eor #$ff
|
||||
adc #0
|
||||
sta dw
|
||||
lda dw+1
|
||||
eor #$ff
|
||||
adc #0
|
||||
sta dw+1
|
||||
lda dw+2
|
||||
eor #$ff
|
||||
adc #0
|
||||
sta dw+2
|
||||
lda dw+3
|
||||
eor #$ff
|
||||
adc #0
|
||||
sta dw+3
|
||||
b1:
|
||||
jsr print_dword
|
||||
rts
|
||||
}
|
||||
print_dword: {
|
||||
.label dw = $a
|
||||
lda dw+2
|
||||
sta print_word.w
|
||||
lda dw+3
|
||||
sta print_word.w+1
|
||||
jsr print_word
|
||||
lda dw
|
||||
sta print_word.w
|
||||
lda dw+1
|
||||
sta print_word.w+1
|
||||
jsr print_word
|
||||
rts
|
||||
}
|
||||
print_word: {
|
||||
.label w = 2
|
||||
lda w+1
|
||||
tax
|
||||
jsr print_byte
|
||||
lda w
|
||||
tax
|
||||
jsr print_byte
|
||||
rts
|
||||
}
|
||||
print_byte: {
|
||||
txa
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
tay
|
||||
lda hextab,y
|
||||
jsr print_char
|
||||
txa
|
||||
and #$f
|
||||
tay
|
||||
lda hextab,y
|
||||
jsr print_char
|
||||
rts
|
||||
hextab: .text "0123456789abcdef"
|
||||
}
|
||||
print_char: {
|
||||
ldy #0
|
||||
sta (char_cursor),y
|
||||
inc char_cursor
|
||||
bne !+
|
||||
inc char_cursor+1
|
||||
!:
|
||||
rts
|
||||
}
|
||||
print_sword: {
|
||||
.label w = 2
|
||||
lda w+1
|
||||
bpl b1
|
||||
lda #'-'
|
||||
jsr print_char
|
||||
sec
|
||||
lda w
|
||||
eor #$ff
|
||||
adc #0
|
||||
sta w
|
||||
lda w+1
|
||||
eor #$ff
|
||||
adc #0
|
||||
sta w+1
|
||||
b1:
|
||||
jsr print_word
|
||||
rts
|
||||
}
|
||||
mul16s: {
|
||||
.label _6 = 8
|
||||
.label _12 = 8
|
||||
.label _16 = 8
|
||||
.label _17 = 8
|
||||
.label m = $10
|
||||
.label return = $10
|
||||
.label a = 2
|
||||
.label b = 4
|
||||
lda b
|
||||
sta mul16u.b
|
||||
lda b+1
|
||||
sta mul16u.b+1
|
||||
lda a
|
||||
sta mul16u.a
|
||||
lda a+1
|
||||
sta mul16u.a+1
|
||||
jsr mul16u
|
||||
lda a+1
|
||||
bpl b1
|
||||
lda m+2
|
||||
sta _6
|
||||
lda m+3
|
||||
sta _6+1
|
||||
lda _16
|
||||
sec
|
||||
sbc b
|
||||
sta _16
|
||||
lda _16+1
|
||||
sbc b+1
|
||||
sta _16+1
|
||||
lda _16
|
||||
sta m+2
|
||||
lda _16+1
|
||||
sta m+3
|
||||
b1:
|
||||
lda b+1
|
||||
bpl b2
|
||||
lda m+2
|
||||
sta _12
|
||||
lda m+3
|
||||
sta _12+1
|
||||
lda _17
|
||||
sec
|
||||
sbc a
|
||||
sta _17
|
||||
lda _17+1
|
||||
sbc a+1
|
||||
sta _17+1
|
||||
lda _17
|
||||
sta m+2
|
||||
lda _17+1
|
||||
sta m+3
|
||||
b2:
|
||||
rts
|
||||
}
|
||||
mul16u: {
|
||||
.label mb = $16
|
||||
.label a = 8
|
||||
.label res = $10
|
||||
.label return = $10
|
||||
.label b = $14
|
||||
lda b
|
||||
sta mb
|
||||
lda b+1
|
||||
sta mb+1
|
||||
lda #0
|
||||
sta mb+2
|
||||
sta mb+3
|
||||
sta res
|
||||
sta res+1
|
||||
sta res+2
|
||||
sta res+3
|
||||
b1:
|
||||
lda a
|
||||
bne b2
|
||||
lda a+1
|
||||
bne b2
|
||||
rts
|
||||
b2:
|
||||
lda a
|
||||
and #1
|
||||
cmp #0
|
||||
beq b4
|
||||
lda res
|
||||
clc
|
||||
adc mb
|
||||
sta res
|
||||
lda res+1
|
||||
adc mb+1
|
||||
sta res+1
|
||||
lda res+2
|
||||
adc mb+2
|
||||
sta res+2
|
||||
lda res+3
|
||||
adc mb+3
|
||||
sta res+3
|
||||
b4:
|
||||
clc
|
||||
ror a+1
|
||||
ror a
|
||||
asl mb
|
||||
rol mb+1
|
||||
rol mb+2
|
||||
rol mb+3
|
||||
jmp b1
|
||||
}
|
||||
muls16s: {
|
||||
.label m = $a
|
||||
.label i = 8
|
||||
.label return = $a
|
||||
.label j = 8
|
||||
.label a = 2
|
||||
.label b = 4
|
||||
lda a+1
|
||||
bpl b1
|
||||
lda #<0
|
||||
sta i
|
||||
sta i+1
|
||||
sta m
|
||||
sta m+1
|
||||
lda #<0>>$10
|
||||
sta m+2
|
||||
lda #>0>>$10
|
||||
sta m+3
|
||||
b2:
|
||||
lda b+1
|
||||
ora #$7f
|
||||
bmi !+
|
||||
lda #0
|
||||
!:
|
||||
sta $ff
|
||||
sec
|
||||
lda m
|
||||
sbc b
|
||||
sta m
|
||||
lda m+1
|
||||
sbc b+1
|
||||
sta m+1
|
||||
lda m+2
|
||||
sbc $ff
|
||||
sta m+2
|
||||
lda m+3
|
||||
sbc $ff
|
||||
sta m+3
|
||||
lda i
|
||||
bne !+
|
||||
dec i+1
|
||||
!:
|
||||
dec i
|
||||
lda i+1
|
||||
cmp a+1
|
||||
bne b2
|
||||
lda i
|
||||
cmp a
|
||||
bne b2
|
||||
jmp b3
|
||||
b6:
|
||||
lda #<0
|
||||
sta return
|
||||
sta return+1
|
||||
lda #<0>>$10
|
||||
sta return+2
|
||||
lda #>0>>$10
|
||||
sta return+3
|
||||
b3:
|
||||
rts
|
||||
b1:
|
||||
lda a+1
|
||||
bmi b6
|
||||
bne !+
|
||||
lda a
|
||||
beq b6
|
||||
!:
|
||||
lda #<0
|
||||
sta j
|
||||
sta j+1
|
||||
sta m
|
||||
sta m+1
|
||||
lda #<0>>$10
|
||||
sta m+2
|
||||
lda #>0>>$10
|
||||
sta m+3
|
||||
b5:
|
||||
lda b+1
|
||||
ora #$7f
|
||||
bmi !+
|
||||
lda #0
|
||||
!:
|
||||
sta $ff
|
||||
lda m
|
||||
clc
|
||||
adc b
|
||||
sta m
|
||||
lda m+1
|
||||
adc b+1
|
||||
sta m+1
|
||||
lda m+2
|
||||
adc $ff
|
||||
sta m+2
|
||||
lda m+3
|
||||
adc $ff
|
||||
sta m+3
|
||||
inc j
|
||||
bne !+
|
||||
inc j+1
|
||||
!:
|
||||
lda j+1
|
||||
cmp a+1
|
||||
bne b5
|
||||
lda j
|
||||
cmp a
|
||||
bne b5
|
||||
jmp b3
|
||||
}
|
||||
mul16u_compare: {
|
||||
.label a = 2
|
||||
.label b = 4
|
||||
.label b = $14
|
||||
.label ms = $a
|
||||
.label mn = $10
|
||||
ldx #0
|
||||
@ -32,15 +515,15 @@ mul16u_compare: {
|
||||
b1:
|
||||
ldy #0
|
||||
b2:
|
||||
lda a
|
||||
clc
|
||||
lda a
|
||||
adc #<$d2b
|
||||
sta a
|
||||
lda a+1
|
||||
adc #>$d2b
|
||||
sta a+1
|
||||
lda b
|
||||
clc
|
||||
lda b
|
||||
adc #<$ffd
|
||||
sta b
|
||||
lda b+1
|
||||
@ -97,50 +580,9 @@ mul16u_compare: {
|
||||
jmp breturn
|
||||
str: .text "word multiply results match!@"
|
||||
}
|
||||
print_ln: {
|
||||
b1:
|
||||
lda line_cursor
|
||||
clc
|
||||
adc #$28
|
||||
sta line_cursor
|
||||
bcc !+
|
||||
inc line_cursor+1
|
||||
!:
|
||||
lda line_cursor+1
|
||||
cmp char_cursor+1
|
||||
bcc b1
|
||||
bne !+
|
||||
lda line_cursor
|
||||
cmp char_cursor
|
||||
bcc b1
|
||||
!:
|
||||
rts
|
||||
}
|
||||
print_str: {
|
||||
.label str = 8
|
||||
b1:
|
||||
ldy #0
|
||||
lda (str),y
|
||||
cmp #'@'
|
||||
bne b2
|
||||
rts
|
||||
b2:
|
||||
ldy #0
|
||||
lda (str),y
|
||||
sta (char_cursor),y
|
||||
inc char_cursor
|
||||
bne !+
|
||||
inc char_cursor+1
|
||||
!:
|
||||
inc str
|
||||
bne !+
|
||||
inc str+1
|
||||
!:
|
||||
jmp b1
|
||||
}
|
||||
mul16u_error: {
|
||||
.label a = 2
|
||||
.label b = 4
|
||||
.label b = $14
|
||||
.label ms = $a
|
||||
.label mn = $10
|
||||
lda line_cursor
|
||||
@ -190,119 +632,18 @@ mul16u_error: {
|
||||
str2: .text " slow:@"
|
||||
str3: .text " / normal:@"
|
||||
}
|
||||
print_dword: {
|
||||
.label dw = $a
|
||||
lda dw+2
|
||||
sta print_word.w
|
||||
lda dw+3
|
||||
sta print_word.w+1
|
||||
jsr print_word
|
||||
lda dw
|
||||
sta print_word.w
|
||||
lda dw+1
|
||||
sta print_word.w+1
|
||||
jsr print_word
|
||||
rts
|
||||
}
|
||||
print_word: {
|
||||
.label w = 2
|
||||
lda w+1
|
||||
tax
|
||||
jsr print_byte
|
||||
lda w
|
||||
tax
|
||||
jsr print_byte
|
||||
rts
|
||||
}
|
||||
print_byte: {
|
||||
txa
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
tay
|
||||
lda hextab,y
|
||||
jsr print_char
|
||||
txa
|
||||
and #$f
|
||||
tay
|
||||
lda hextab,y
|
||||
jsr print_char
|
||||
rts
|
||||
hextab: .text "0123456789abcdef"
|
||||
}
|
||||
print_char: {
|
||||
ldy #0
|
||||
sta (char_cursor),y
|
||||
inc char_cursor
|
||||
bne !+
|
||||
inc char_cursor+1
|
||||
!:
|
||||
rts
|
||||
}
|
||||
mul16u: {
|
||||
.label mb = $14
|
||||
.label a = 8
|
||||
.label res = $10
|
||||
.label b = 4
|
||||
.label return = $10
|
||||
lda b
|
||||
sta mb
|
||||
lda b+1
|
||||
sta mb+1
|
||||
lda #0
|
||||
sta mb+2
|
||||
sta mb+3
|
||||
sta res
|
||||
sta res+1
|
||||
sta res+2
|
||||
sta res+3
|
||||
b1:
|
||||
lda a
|
||||
bne b2
|
||||
lda a+1
|
||||
bne b2
|
||||
rts
|
||||
b2:
|
||||
lda a
|
||||
and #1
|
||||
cmp #0
|
||||
beq b4
|
||||
lda res
|
||||
clc
|
||||
adc mb
|
||||
sta res
|
||||
lda res+1
|
||||
adc mb+1
|
||||
sta res+1
|
||||
lda res+2
|
||||
adc mb+2
|
||||
sta res+2
|
||||
lda res+3
|
||||
adc mb+3
|
||||
sta res+3
|
||||
b4:
|
||||
clc
|
||||
ror a+1
|
||||
ror a
|
||||
asl mb
|
||||
rol mb+1
|
||||
rol mb+2
|
||||
rol mb+3
|
||||
jmp b1
|
||||
}
|
||||
muls16u: {
|
||||
.label return = $a
|
||||
.label m = $a
|
||||
.label i = 8
|
||||
.label i = 4
|
||||
.label a = 2
|
||||
.label b = 4
|
||||
.label b = $14
|
||||
lda a
|
||||
bne !+
|
||||
lda a+1
|
||||
beq b3
|
||||
!:
|
||||
lda #0
|
||||
lda #<0
|
||||
sta i
|
||||
sta i+1
|
||||
sta m
|
||||
@ -345,10 +686,10 @@ muls16u: {
|
||||
}
|
||||
mul8s_compare: {
|
||||
.label ms = 2
|
||||
.label mf = $1a
|
||||
.label mf = $14
|
||||
.label mn = 4
|
||||
.label b = $19
|
||||
.label a = $18
|
||||
.label b = $1b
|
||||
.label a = $1a
|
||||
lda #-$80
|
||||
sta a
|
||||
b1:
|
||||
@ -413,10 +754,10 @@ mul8s_compare: {
|
||||
str: .text "signed multiply results match!@"
|
||||
}
|
||||
mul8s_error: {
|
||||
.label b = $19
|
||||
.label b = $1b
|
||||
.label ms = 2
|
||||
.label mn = 4
|
||||
.label mf = $1a
|
||||
.label mf = $14
|
||||
lda line_cursor
|
||||
sta char_cursor
|
||||
lda line_cursor+1
|
||||
@ -468,25 +809,6 @@ mul8s_error: {
|
||||
str3: .text " / normal:@"
|
||||
str4: .text " / fast:@"
|
||||
}
|
||||
print_sword: {
|
||||
.label w = 2
|
||||
lda w+1
|
||||
bpl b1
|
||||
lda #'-'
|
||||
jsr print_char
|
||||
sec
|
||||
lda w
|
||||
eor #$ff
|
||||
adc #0
|
||||
sta w
|
||||
lda w+1
|
||||
eor #$ff
|
||||
adc #0
|
||||
sta w+1
|
||||
b1:
|
||||
jsr print_word
|
||||
rts
|
||||
}
|
||||
print_sbyte: {
|
||||
cpx #0
|
||||
bpl b1
|
||||
@ -503,7 +825,7 @@ print_sbyte: {
|
||||
}
|
||||
mul8s: {
|
||||
.label m = 4
|
||||
.label a = $18
|
||||
.label a = $1a
|
||||
.label return = 4
|
||||
tya
|
||||
ldx a
|
||||
@ -560,9 +882,9 @@ mul8u: {
|
||||
jmp b1
|
||||
}
|
||||
mulf8s: {
|
||||
.label m = $1a
|
||||
.label b = $19
|
||||
.label return = $1a
|
||||
.label m = $14
|
||||
.label b = $1b
|
||||
.label return = $14
|
||||
tya
|
||||
ldx b
|
||||
jsr mulf8u
|
||||
@ -587,7 +909,7 @@ mulf8s: {
|
||||
mulf8u: {
|
||||
.label memA = $fe
|
||||
.label memB = $ff
|
||||
.label return = $1a
|
||||
.label return = $14
|
||||
sta memA
|
||||
stx memB
|
||||
sta sm1+1
|
||||
@ -615,7 +937,7 @@ mulf8u: {
|
||||
muls8s: {
|
||||
.label m = 2
|
||||
.label return = 2
|
||||
.label a = $18
|
||||
.label a = $1a
|
||||
lda a
|
||||
cmp #0
|
||||
bpl b1
|
||||
@ -643,7 +965,7 @@ muls8s: {
|
||||
bne b2
|
||||
jmp b3
|
||||
b6:
|
||||
lda #0
|
||||
lda #<0
|
||||
sta return
|
||||
sta return+1
|
||||
b3:
|
||||
@ -678,10 +1000,10 @@ muls8s: {
|
||||
}
|
||||
mul8u_compare: {
|
||||
.label ms = 2
|
||||
.label mf = $1a
|
||||
.label mf = $14
|
||||
.label mn = 4
|
||||
.label b = $19
|
||||
.label a = $18
|
||||
.label b = $1b
|
||||
.label a = $1a
|
||||
lda #0
|
||||
sta a
|
||||
b1:
|
||||
@ -742,10 +1064,10 @@ mul8u_compare: {
|
||||
str: .text "multiply results match!@"
|
||||
}
|
||||
mul8u_error: {
|
||||
.label b = $19
|
||||
.label b = $1b
|
||||
.label ms = 2
|
||||
.label mn = 4
|
||||
.label mf = $1a
|
||||
.label mf = $14
|
||||
lda #<str
|
||||
sta print_str.str
|
||||
lda #>str
|
||||
@ -796,7 +1118,7 @@ mul8u_error: {
|
||||
muls8u: {
|
||||
.label return = 2
|
||||
.label m = 2
|
||||
.label a = $18
|
||||
.label a = $1a
|
||||
lda a
|
||||
beq b3
|
||||
ldy #0
|
||||
@ -816,7 +1138,7 @@ muls8u: {
|
||||
bne b2
|
||||
jmp b1
|
||||
b3:
|
||||
lda #0
|
||||
lda #<0
|
||||
sta return
|
||||
sta return+1
|
||||
b1:
|
||||
@ -960,10 +1282,10 @@ mulf_init: {
|
||||
.label sqr1_hi = 4
|
||||
.label sqr = 6
|
||||
.label sqr1_lo = 2
|
||||
.label x_2 = $18
|
||||
.label x_2 = $1a
|
||||
.label sqr2_hi = 4
|
||||
.label sqr2_lo = 2
|
||||
.label dir = $18
|
||||
.label dir = $1a
|
||||
lda #0
|
||||
sta x_2
|
||||
lda #<mulf_sqr1_hi+1
|
||||
@ -974,7 +1296,7 @@ mulf_init: {
|
||||
sta sqr1_lo
|
||||
lda #>mulf_sqr1_lo+1
|
||||
sta sqr1_lo+1
|
||||
lda #0
|
||||
lda #<0
|
||||
sta sqr
|
||||
sta sqr+1
|
||||
tax
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,4 +1,4 @@
|
||||
(label) @28
|
||||
(label) @32
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
@ -7,26 +7,30 @@
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(byte*) char_cursor
|
||||
(byte*) char_cursor#1 char_cursor zp ZP_WORD:14 11.0
|
||||
(byte*) char_cursor#103 char_cursor zp ZP_WORD:14 6.0
|
||||
(byte*) char_cursor#104 char_cursor zp ZP_WORD:14 0.8148148148148144
|
||||
(byte*) char_cursor#116 char_cursor zp ZP_WORD:14 0.1951219512195122
|
||||
(byte*) char_cursor#166 char_cursor zp ZP_WORD:14 1.365384615384616
|
||||
(byte*) char_cursor#167 char_cursor zp ZP_WORD:14 6.25
|
||||
(byte*) char_cursor#168 char_cursor zp ZP_WORD:14 3.0
|
||||
(byte*) char_cursor#170 char_cursor zp ZP_WORD:14 3.0
|
||||
(byte*) char_cursor#172 char_cursor zp ZP_WORD:14 11.0
|
||||
(byte*) char_cursor#174 char_cursor zp ZP_WORD:14 3.9999999999999996
|
||||
(byte*) char_cursor#189 char_cursor zp ZP_WORD:14 38.0
|
||||
(byte*~) char_cursor#239 char_cursor zp ZP_WORD:14 4.0
|
||||
(byte*~) char_cursor#240 char_cursor zp ZP_WORD:14 4.0
|
||||
(byte*~) char_cursor#244 char_cursor zp ZP_WORD:14 4.0
|
||||
(byte*~) char_cursor#245 char_cursor zp ZP_WORD:14 4.0
|
||||
(byte*~) char_cursor#282 char_cursor zp ZP_WORD:14 4.0
|
||||
(byte*) char_cursor#102 char_cursor zp ZP_WORD:14 1.253968253968253
|
||||
(byte*) char_cursor#124 char_cursor zp ZP_WORD:14 7.0
|
||||
(byte*) char_cursor#125 char_cursor zp ZP_WORD:14 0.8181818181818177
|
||||
(byte*) char_cursor#138 char_cursor zp ZP_WORD:14 0.1951219512195122
|
||||
(byte*) char_cursor#203 char_cursor zp ZP_WORD:14 7.25
|
||||
(byte*) char_cursor#204 char_cursor zp ZP_WORD:14 3.0
|
||||
(byte*) char_cursor#206 char_cursor zp ZP_WORD:14 3.0
|
||||
(byte*) char_cursor#208 char_cursor zp ZP_WORD:14 11.0
|
||||
(byte*) char_cursor#209 char_cursor zp ZP_WORD:14 4.0
|
||||
(byte*) char_cursor#210 char_cursor zp ZP_WORD:14 3.0
|
||||
(byte*) char_cursor#212 char_cursor zp ZP_WORD:14 3.9999999999999996
|
||||
(byte*) char_cursor#230 char_cursor zp ZP_WORD:14 48.0
|
||||
(byte*~) char_cursor#292 char_cursor zp ZP_WORD:14 4.0
|
||||
(byte*~) char_cursor#293 char_cursor zp ZP_WORD:14 4.0
|
||||
(byte*~) char_cursor#297 char_cursor zp ZP_WORD:14 4.0
|
||||
(byte*~) char_cursor#298 char_cursor zp ZP_WORD:14 4.0
|
||||
(byte*~) char_cursor#302 char_cursor zp ZP_WORD:14 4.0
|
||||
(byte*~) char_cursor#303 char_cursor zp ZP_WORD:14 4.0
|
||||
(byte*~) char_cursor#346 char_cursor zp ZP_WORD:14 4.0
|
||||
(byte*) line_cursor
|
||||
(byte*) line_cursor#1 line_cursor zp ZP_WORD:6 0.42063492063492064
|
||||
(byte*) line_cursor#11 line_cursor zp ZP_WORD:6 0.09523809523809523
|
||||
(byte*) line_cursor#29 line_cursor zp ZP_WORD:6 24.0
|
||||
(byte*) line_cursor#57 line_cursor zp ZP_WORD:6 14.0
|
||||
(byte*) line_cursor#1 line_cursor zp ZP_WORD:6 0.33701657458563516
|
||||
(byte*) line_cursor#12 line_cursor zp ZP_WORD:6 0.09523809523809523
|
||||
(byte*) line_cursor#35 line_cursor zp ZP_WORD:6 24.0
|
||||
(byte*) line_cursor#69 line_cursor zp ZP_WORD:6 18.0
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
@ -34,7 +38,88 @@
|
||||
(label) main::@4
|
||||
(label) main::@5
|
||||
(label) main::@6
|
||||
(label) main::@7
|
||||
(label) main::@return
|
||||
(signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b)
|
||||
(word~) mul16s::$12 $12 zp ZP_WORD:8 4.0
|
||||
(word~) mul16s::$16 $16 zp ZP_WORD:8 4.0
|
||||
(word~) mul16s::$17 $17 zp ZP_WORD:8 4.0
|
||||
(word~) mul16s::$6 $6 zp ZP_WORD:8 4.0
|
||||
(label) mul16s::@1
|
||||
(label) mul16s::@2
|
||||
(label) mul16s::@3
|
||||
(label) mul16s::@4
|
||||
(label) mul16s::@6
|
||||
(label) mul16s::@return
|
||||
(signed word) mul16s::a
|
||||
(signed word) mul16s::a#0 a zp ZP_WORD:2 7.357142857142858
|
||||
(signed word) mul16s::b
|
||||
(signed word) mul16s::b#0 b zp ZP_WORD:4 9.363636363636363
|
||||
(dword) mul16s::m
|
||||
(dword) mul16s::m#0 m zp ZP_DWORD:16 2.0
|
||||
(dword) mul16s::m#1 m zp ZP_DWORD:16 4.0
|
||||
(dword) mul16s::m#2 m zp ZP_DWORD:16 4.0
|
||||
(dword) mul16s::m#4 m zp ZP_DWORD:16 6.0
|
||||
(dword) mul16s::m#5 m zp ZP_DWORD:16 2.5
|
||||
(signed dword) mul16s::return
|
||||
(signed dword) mul16s::return#0 return zp ZP_DWORD:16 34.33333333333333
|
||||
(signed dword) mul16s::return#2 return zp ZP_DWORD:16 202.0
|
||||
(void()) mul16s_compare()
|
||||
(label) mul16s_compare::@1
|
||||
(label) mul16s_compare::@10
|
||||
(label) mul16s_compare::@11
|
||||
(label) mul16s_compare::@13
|
||||
(label) mul16s_compare::@2
|
||||
(label) mul16s_compare::@3
|
||||
(label) mul16s_compare::@4
|
||||
(label) mul16s_compare::@5
|
||||
(label) mul16s_compare::@6
|
||||
(label) mul16s_compare::@8
|
||||
(label) mul16s_compare::@9
|
||||
(label) mul16s_compare::@return
|
||||
(signed word) mul16s_compare::a
|
||||
(signed word) mul16s_compare::a#1 a zp ZP_WORD:2 19.857142857142858
|
||||
(signed word) mul16s_compare::a#2 a zp ZP_WORD:2 213.0
|
||||
(signed word) mul16s_compare::a#5 a zp ZP_WORD:2 22.0
|
||||
(signed word) mul16s_compare::b
|
||||
(signed word) mul16s_compare::b#1 b zp ZP_WORD:4 19.857142857142858
|
||||
(signed word) mul16s_compare::b#2 b zp ZP_WORD:4 106.5
|
||||
(signed word) mul16s_compare::b#5 b zp ZP_WORD:4 22.0
|
||||
(byte) mul16s_compare::i
|
||||
(byte) mul16s_compare::i#1 reg byte x 16.5
|
||||
(byte) mul16s_compare::i#9 reg byte x 1.1
|
||||
(byte) mul16s_compare::j
|
||||
(byte) mul16s_compare::j#1 reg byte y 151.5
|
||||
(byte) mul16s_compare::j#2 reg byte y 11.882352941176471
|
||||
(signed dword) mul16s_compare::mn
|
||||
(signed dword) mul16s_compare::mn#0 mn zp ZP_DWORD:16 22.666666666666664
|
||||
(signed dword) mul16s_compare::ms
|
||||
(signed dword) mul16s_compare::ms#0 ms zp ZP_DWORD:10 15.692307692307692
|
||||
(byte) mul16s_compare::ok
|
||||
(byte) mul16s_compare::ok#2 reg byte a 101.0
|
||||
(const string) mul16s_compare::str str = (string) "signed word multiply results match!@"
|
||||
(void()) mul16s_error((signed word) mul16s_error::a , (signed word) mul16s_error::b , (signed dword) mul16s_error::ms , (signed dword) mul16s_error::mn)
|
||||
(label) mul16s_error::@1
|
||||
(label) mul16s_error::@2
|
||||
(label) mul16s_error::@3
|
||||
(label) mul16s_error::@4
|
||||
(label) mul16s_error::@5
|
||||
(label) mul16s_error::@6
|
||||
(label) mul16s_error::@7
|
||||
(label) mul16s_error::@8
|
||||
(label) mul16s_error::@return
|
||||
(signed word) mul16s_error::a
|
||||
(signed word) mul16s_error::a#0 a zp ZP_WORD:2 0.6666666666666666
|
||||
(signed word) mul16s_error::b
|
||||
(signed word) mul16s_error::b#0 b zp ZP_WORD:4 0.4444444444444444
|
||||
(signed dword) mul16s_error::mn
|
||||
(signed dword) mul16s_error::mn#0 mn zp ZP_DWORD:16 0.26666666666666666
|
||||
(signed dword) mul16s_error::ms
|
||||
(signed dword) mul16s_error::ms#0 ms zp ZP_DWORD:10 0.3333333333333333
|
||||
(const string) mul16s_error::str str = (string) "signed word multiply mismatch @"
|
||||
(const string) mul16s_error::str1 str1 = (string) "*@"
|
||||
(const string) mul16s_error::str2 str2 = (string) " slow:@"
|
||||
(const string) mul16s_error::str3 str3 = (string) " / normal:@"
|
||||
(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
|
||||
(byte~) mul16u::$1 reg byte a 2002.0
|
||||
(label) mul16u::@1
|
||||
@ -44,20 +129,25 @@
|
||||
(label) mul16u::@return
|
||||
(word) mul16u::a
|
||||
(word) mul16u::a#0 a zp ZP_WORD:8 1001.0
|
||||
(word) mul16u::a#1 a zp ZP_WORD:8 34.33333333333333
|
||||
(word) mul16u::a#2 a zp ZP_WORD:8 667.6666666666667
|
||||
(word) mul16u::a#2 a zp ZP_WORD:8 101.0
|
||||
(word) mul16u::a#3 a zp ZP_WORD:8 667.6666666666667
|
||||
(word) mul16u::a#6 a zp ZP_WORD:8 52.5
|
||||
(word~) mul16u::a#8 a zp ZP_WORD:8 4.0
|
||||
(word) mul16u::b
|
||||
(word) mul16u::b#0 b zp ZP_WORD:4 103.0
|
||||
(word) mul16u::b#1 b zp ZP_WORD:20 202.0
|
||||
(word) mul16u::b#2 b zp ZP_WORD:20 105.0
|
||||
(word~) mul16u::b#3 b zp ZP_WORD:20 2.0
|
||||
(dword) mul16u::mb
|
||||
(dword) mul16u::mb#0 mb zp ZP_DWORD:20 4.0
|
||||
(dword) mul16u::mb#1 mb zp ZP_DWORD:20 2002.0
|
||||
(dword) mul16u::mb#2 mb zp ZP_DWORD:20 429.2857142857143
|
||||
(dword) mul16u::mb#0 mb zp ZP_DWORD:22 4.0
|
||||
(dword) mul16u::mb#1 mb zp ZP_DWORD:22 2002.0
|
||||
(dword) mul16u::mb#2 mb zp ZP_DWORD:22 429.2857142857143
|
||||
(dword) mul16u::res
|
||||
(dword) mul16u::res#1 res zp ZP_DWORD:16 2002.0
|
||||
(dword) mul16u::res#2 res zp ZP_DWORD:16 517.3333333333334
|
||||
(dword) mul16u::res#2 res zp ZP_DWORD:16 443.7142857142857
|
||||
(dword) mul16u::res#6 res zp ZP_DWORD:16 1001.0
|
||||
(dword) mul16u::return
|
||||
(dword) mul16u::return#2 return zp ZP_DWORD:16 202.0
|
||||
(dword) mul16u::return#2 return zp ZP_DWORD:16 4.0
|
||||
(dword) mul16u::return#3 return zp ZP_DWORD:16 202.0
|
||||
(void()) mul16u_compare()
|
||||
(label) mul16u_compare::@1
|
||||
(label) mul16u_compare::@10
|
||||
@ -76,9 +166,9 @@
|
||||
(word) mul16u_compare::a#2 a zp ZP_WORD:2 213.0
|
||||
(word) mul16u_compare::a#5 a zp ZP_WORD:2 22.0
|
||||
(word) mul16u_compare::b
|
||||
(word) mul16u_compare::b#1 b zp ZP_WORD:4 19.857142857142858
|
||||
(word) mul16u_compare::b#2 b zp ZP_WORD:4 106.5
|
||||
(word) mul16u_compare::b#5 b zp ZP_WORD:4 22.0
|
||||
(word) mul16u_compare::b#1 b zp ZP_WORD:20 19.857142857142858
|
||||
(word) mul16u_compare::b#2 b zp ZP_WORD:20 106.5
|
||||
(word) mul16u_compare::b#5 b zp ZP_WORD:20 22.0
|
||||
(byte) mul16u_compare::i
|
||||
(byte) mul16u_compare::i#1 reg byte x 16.5
|
||||
(byte) mul16u_compare::i#9 reg byte x 1.1
|
||||
@ -105,7 +195,7 @@
|
||||
(word) mul16u_error::a
|
||||
(word) mul16u_error::a#0 a zp ZP_WORD:2 0.6666666666666666
|
||||
(word) mul16u_error::b
|
||||
(word) mul16u_error::b#0 b zp ZP_WORD:4 0.4444444444444444
|
||||
(word) mul16u_error::b#0 b zp ZP_WORD:20 0.4444444444444444
|
||||
(dword) mul16u_error::mn
|
||||
(dword) mul16u_error::mn#0 mn zp ZP_DWORD:16 0.26666666666666666
|
||||
(dword) mul16u_error::ms
|
||||
@ -126,7 +216,7 @@
|
||||
(label) mul8s::@6
|
||||
(label) mul8s::@return
|
||||
(signed byte) mul8s::a
|
||||
(signed byte) mul8s::a#0 a zp ZP_BYTE:24 7.357142857142858
|
||||
(signed byte) mul8s::a#0 a zp ZP_BYTE:26 7.357142857142858
|
||||
(signed byte) mul8s::b
|
||||
(signed byte) mul8s::b#0 reg byte y 9.363636363636363
|
||||
(word) mul8s::m
|
||||
@ -154,13 +244,13 @@
|
||||
(label) mul8s_compare::@8
|
||||
(label) mul8s_compare::@return
|
||||
(signed byte) mul8s_compare::a
|
||||
(signed byte) mul8s_compare::a#1 a zp ZP_BYTE:24 16.5
|
||||
(signed byte) mul8s_compare::a#7 a zp ZP_BYTE:24 12.11111111111111
|
||||
(signed byte) mul8s_compare::a#1 a zp ZP_BYTE:26 16.5
|
||||
(signed byte) mul8s_compare::a#7 a zp ZP_BYTE:26 12.11111111111111
|
||||
(signed byte) mul8s_compare::b
|
||||
(signed byte) mul8s_compare::b#1 b zp ZP_BYTE:25 151.5
|
||||
(signed byte) mul8s_compare::b#10 b zp ZP_BYTE:25 20.279999999999998
|
||||
(signed byte) mul8s_compare::b#1 b zp ZP_BYTE:27 151.5
|
||||
(signed byte) mul8s_compare::b#10 b zp ZP_BYTE:27 20.279999999999998
|
||||
(signed word) mul8s_compare::mf
|
||||
(signed word) mul8s_compare::mf#0 mf zp ZP_WORD:26 11.333333333333332
|
||||
(signed word) mul8s_compare::mf#0 mf zp ZP_WORD:20 11.333333333333332
|
||||
(signed word) mul8s_compare::mn
|
||||
(signed word) mul8s_compare::mn#0 mn zp ZP_WORD:4 17.0
|
||||
(signed word) mul8s_compare::ms
|
||||
@ -184,9 +274,9 @@
|
||||
(signed byte) mul8s_error::a
|
||||
(signed byte) mul8s_error::a#0 reg byte x 0.5714285714285714
|
||||
(signed byte) mul8s_error::b
|
||||
(signed byte) mul8s_error::b#0 b zp ZP_BYTE:25 0.4
|
||||
(signed byte) mul8s_error::b#0 b zp ZP_BYTE:27 0.4
|
||||
(signed word) mul8s_error::mf
|
||||
(signed word) mul8s_error::mf#0 mf zp ZP_WORD:26 0.21052631578947367
|
||||
(signed word) mul8s_error::mf#0 mf zp ZP_WORD:20 0.21052631578947367
|
||||
(signed word) mul8s_error::mn
|
||||
(signed word) mul8s_error::mn#0 mn zp ZP_WORD:4 0.25
|
||||
(signed word) mul8s_error::ms
|
||||
@ -241,13 +331,13 @@
|
||||
(label) mul8u_compare::@8
|
||||
(label) mul8u_compare::@return
|
||||
(byte) mul8u_compare::a
|
||||
(byte) mul8u_compare::a#1 a zp ZP_BYTE:24 16.5
|
||||
(byte) mul8u_compare::a#7 a zp ZP_BYTE:24 12.11111111111111
|
||||
(byte) mul8u_compare::a#1 a zp ZP_BYTE:26 16.5
|
||||
(byte) mul8u_compare::a#7 a zp ZP_BYTE:26 12.11111111111111
|
||||
(byte) mul8u_compare::b
|
||||
(byte) mul8u_compare::b#1 b zp ZP_BYTE:25 151.5
|
||||
(byte) mul8u_compare::b#10 b zp ZP_BYTE:25 20.279999999999998
|
||||
(byte) mul8u_compare::b#1 b zp ZP_BYTE:27 151.5
|
||||
(byte) mul8u_compare::b#10 b zp ZP_BYTE:27 20.279999999999998
|
||||
(word) mul8u_compare::mf
|
||||
(word) mul8u_compare::mf#0 mf zp ZP_WORD:26 11.333333333333332
|
||||
(word) mul8u_compare::mf#0 mf zp ZP_WORD:20 11.333333333333332
|
||||
(word) mul8u_compare::mn
|
||||
(word) mul8u_compare::mn#0 mn zp ZP_WORD:4 17.0
|
||||
(word) mul8u_compare::ms
|
||||
@ -271,9 +361,9 @@
|
||||
(byte) mul8u_error::a
|
||||
(byte) mul8u_error::a#0 reg byte x 0.5714285714285714
|
||||
(byte) mul8u_error::b
|
||||
(byte) mul8u_error::b#0 b zp ZP_BYTE:25 0.4
|
||||
(byte) mul8u_error::b#0 b zp ZP_BYTE:27 0.4
|
||||
(word) mul8u_error::mf
|
||||
(word) mul8u_error::mf#0 mf zp ZP_WORD:26 0.21052631578947367
|
||||
(word) mul8u_error::mf#0 mf zp ZP_WORD:20 0.21052631578947367
|
||||
(word) mul8u_error::mn
|
||||
(word) mul8u_error::mn#0 mn zp ZP_WORD:4 0.25
|
||||
(word) mul8u_error::ms
|
||||
@ -305,15 +395,15 @@
|
||||
(signed byte) mulf8s::a
|
||||
(signed byte) mulf8s::a#0 reg byte y 7.357142857142858
|
||||
(signed byte) mulf8s::b
|
||||
(signed byte) mulf8s::b#0 b zp ZP_BYTE:25 9.363636363636363
|
||||
(signed byte) mulf8s::b#0 b zp ZP_BYTE:27 9.363636363636363
|
||||
(word) mulf8s::m
|
||||
(word) mulf8s::m#0 m zp ZP_WORD:26 2.0
|
||||
(word) mulf8s::m#1 m zp ZP_WORD:26 4.0
|
||||
(word) mulf8s::m#2 m zp ZP_WORD:26 4.0
|
||||
(word) mulf8s::m#4 m zp ZP_WORD:26 1.3333333333333333
|
||||
(word) mulf8s::m#5 m zp ZP_WORD:26 2.5
|
||||
(word) mulf8s::m#0 m zp ZP_WORD:20 2.0
|
||||
(word) mulf8s::m#1 m zp ZP_WORD:20 4.0
|
||||
(word) mulf8s::m#2 m zp ZP_WORD:20 4.0
|
||||
(word) mulf8s::m#4 m zp ZP_WORD:20 1.3333333333333333
|
||||
(word) mulf8s::m#5 m zp ZP_WORD:20 2.5
|
||||
(signed word) mulf8s::return
|
||||
(signed word) mulf8s::return#2 return zp ZP_WORD:26 202.0
|
||||
(signed word) mulf8s::return#2 return zp ZP_WORD:20 202.0
|
||||
(word()) mulf8u((byte) mulf8u::a , (byte) mulf8u::b)
|
||||
(label) mulf8u::@return
|
||||
(byte) mulf8u::a
|
||||
@ -329,9 +419,9 @@
|
||||
(byte*) mulf8u::memB
|
||||
(const byte*) mulf8u::memB#0 memB = ((byte*))(byte/word/signed word/dword/signed dword) 255
|
||||
(word) mulf8u::return
|
||||
(word) mulf8u::return#0 return zp ZP_WORD:26 26.25
|
||||
(word) mulf8u::return#2 return zp ZP_WORD:26 4.0
|
||||
(word) mulf8u::return#3 return zp ZP_WORD:26 202.0
|
||||
(word) mulf8u::return#0 return zp ZP_WORD:20 26.25
|
||||
(word) mulf8u::return#2 return zp ZP_WORD:20 4.0
|
||||
(word) mulf8u::return#3 return zp ZP_WORD:20 202.0
|
||||
(void()) mulf_init()
|
||||
(byte~) mulf_init::$2 reg byte a 22.0
|
||||
(byte~) mulf_init::$5 reg byte a 22.0
|
||||
@ -348,8 +438,8 @@
|
||||
(byte) mulf_init::c#1 reg byte x 2.357142857142857
|
||||
(byte) mulf_init::c#2 reg byte x 22.0
|
||||
(byte) mulf_init::dir
|
||||
(byte) mulf_init::dir#2 dir zp ZP_BYTE:24 4.714285714285714
|
||||
(byte) mulf_init::dir#3 dir zp ZP_BYTE:24 7.333333333333333
|
||||
(byte) mulf_init::dir#2 dir zp ZP_BYTE:26 4.714285714285714
|
||||
(byte) mulf_init::dir#3 dir zp ZP_BYTE:26 7.333333333333333
|
||||
(word) mulf_init::sqr
|
||||
(word) mulf_init::sqr#1 sqr zp ZP_WORD:6 7.333333333333333
|
||||
(word) mulf_init::sqr#2 sqr zp ZP_WORD:6 22.0
|
||||
@ -368,9 +458,9 @@
|
||||
(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp ZP_WORD:2 16.5
|
||||
(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp ZP_WORD:2 4.125
|
||||
(byte) mulf_init::x_2
|
||||
(byte) mulf_init::x_2#1 x_2 zp ZP_BYTE:24 11.0
|
||||
(byte) mulf_init::x_2#2 x_2 zp ZP_BYTE:24 4.888888888888889
|
||||
(byte) mulf_init::x_2#3 x_2 zp ZP_BYTE:24 8.25
|
||||
(byte) mulf_init::x_2#1 x_2 zp ZP_BYTE:26 11.0
|
||||
(byte) mulf_init::x_2#2 x_2 zp ZP_BYTE:26 4.888888888888889
|
||||
(byte) mulf_init::x_2#3 x_2 zp ZP_BYTE:26 8.25
|
||||
(byte) mulf_init::x_255
|
||||
(byte) mulf_init::x_255#1 reg byte x 5.5
|
||||
(byte) mulf_init::x_255#2 reg byte x 11.0
|
||||
@ -405,6 +495,30 @@
|
||||
(const string) mulf_tables_cmp::str str = (string) "multiply table mismatch at @"
|
||||
(const string) mulf_tables_cmp::str1 str1 = (string) " / @"
|
||||
(const string) mulf_tables_cmp::str2 str2 = (string) "multiply tables match!@"
|
||||
(signed dword()) muls16s((signed word) muls16s::a , (signed word) muls16s::b)
|
||||
(label) muls16s::@1
|
||||
(label) muls16s::@2
|
||||
(label) muls16s::@3
|
||||
(label) muls16s::@5
|
||||
(label) muls16s::@return
|
||||
(signed word) muls16s::a
|
||||
(signed word) muls16s::a#0 a zp ZP_WORD:2 175.58333333333334
|
||||
(signed word) muls16s::b
|
||||
(signed word) muls16s::b#0 b zp ZP_WORD:4 191.1818181818182
|
||||
(signed word) muls16s::i
|
||||
(signed word) muls16s::i#1 i zp ZP_WORD:8 1501.5
|
||||
(signed word) muls16s::i#2 i zp ZP_WORD:8 1001.0
|
||||
(signed word) muls16s::j
|
||||
(signed word) muls16s::j#1 j zp ZP_WORD:8 1501.5
|
||||
(signed word) muls16s::j#2 j zp ZP_WORD:8 1001.0
|
||||
(signed dword) muls16s::m
|
||||
(signed dword) muls16s::m#1 m zp ZP_DWORD:10 1001.0
|
||||
(signed dword) muls16s::m#2 m zp ZP_DWORD:10 1001.0
|
||||
(signed dword) muls16s::m#3 m zp ZP_DWORD:10 2002.0
|
||||
(signed dword) muls16s::m#5 m zp ZP_DWORD:10 2002.0
|
||||
(signed dword) muls16s::return
|
||||
(signed dword) muls16s::return#0 return zp ZP_DWORD:10 701.0
|
||||
(signed dword) muls16s::return#2 return zp ZP_DWORD:10 202.0
|
||||
(dword()) muls16u((word) muls16u::a , (word) muls16u::b)
|
||||
(label) muls16u::@1
|
||||
(label) muls16u::@2
|
||||
@ -412,10 +526,10 @@
|
||||
(word) muls16u::a
|
||||
(word) muls16u::a#0 a zp ZP_WORD:2 157.71428571428572
|
||||
(word) muls16u::b
|
||||
(word) muls16u::b#0 b zp ZP_WORD:4 183.66666666666669
|
||||
(word) muls16u::b#0 b zp ZP_WORD:20 183.66666666666669
|
||||
(word) muls16u::i
|
||||
(word) muls16u::i#1 i zp ZP_WORD:8 1501.5
|
||||
(word) muls16u::i#2 i zp ZP_WORD:8 1001.0
|
||||
(word) muls16u::i#1 i zp ZP_WORD:4 1501.5
|
||||
(word) muls16u::i#2 i zp ZP_WORD:4 1001.0
|
||||
(dword) muls16u::m
|
||||
(dword) muls16u::m#1 m zp ZP_DWORD:10 1001.0
|
||||
(dword) muls16u::m#3 m zp ZP_DWORD:10 2002.0
|
||||
@ -429,7 +543,7 @@
|
||||
(label) muls8s::@5
|
||||
(label) muls8s::@return
|
||||
(signed byte) muls8s::a
|
||||
(signed byte) muls8s::a#0 a zp ZP_BYTE:24 175.58333333333334
|
||||
(signed byte) muls8s::a#0 a zp ZP_BYTE:26 175.58333333333334
|
||||
(signed byte) muls8s::b
|
||||
(signed byte) muls8s::b#0 reg byte x 191.1818181818182
|
||||
(signed byte) muls8s::i
|
||||
@ -451,7 +565,7 @@
|
||||
(label) muls8u::@2
|
||||
(label) muls8u::@return
|
||||
(byte) muls8u::a
|
||||
(byte) muls8u::a#0 a zp ZP_BYTE:24 157.71428571428572
|
||||
(byte) muls8u::a#0 a zp ZP_BYTE:26 157.71428571428572
|
||||
(byte) muls8u::b
|
||||
(byte) muls8u::b#0 reg byte x 183.66666666666669
|
||||
(byte) muls8u::i
|
||||
@ -480,9 +594,9 @@
|
||||
(void()) print_char((byte) print_char::ch)
|
||||
(label) print_char::@return
|
||||
(byte) print_char::ch
|
||||
(byte) print_char::ch#2 reg byte a 4.0
|
||||
(byte) print_char::ch#3 reg byte a 4.0
|
||||
(byte) print_char::ch#4 reg byte a 6.0
|
||||
(byte) print_char::ch#4 reg byte a 4.0
|
||||
(byte) print_char::ch#5 reg byte a 6.0
|
||||
(void()) print_cls()
|
||||
(label) print_cls::@1
|
||||
(label) print_cls::@return
|
||||
@ -495,7 +609,8 @@
|
||||
(dword) print_dword::dw
|
||||
(dword) print_dword::dw#0 dw zp ZP_DWORD:10 4.0
|
||||
(dword) print_dword::dw#1 dw zp ZP_DWORD:10 4.0
|
||||
(dword) print_dword::dw#2 dw zp ZP_DWORD:10 2.6666666666666665
|
||||
(dword) print_dword::dw#2 dw zp ZP_DWORD:10 4.0
|
||||
(dword) print_dword::dw#3 dw zp ZP_DWORD:10 3.333333333333333
|
||||
(void()) print_ln()
|
||||
(label) print_ln::@1
|
||||
(label) print_ln::@return
|
||||
@ -510,14 +625,25 @@
|
||||
(signed byte) print_sbyte::b#2 reg byte x 4.0
|
||||
(signed byte) print_sbyte::b#3 reg byte x 2.5
|
||||
(signed byte) print_sbyte::b#4 reg byte x 4.0
|
||||
(void()) print_sdword((signed dword) print_sdword::dw)
|
||||
(label) print_sdword::@1
|
||||
(label) print_sdword::@2
|
||||
(label) print_sdword::@4
|
||||
(label) print_sdword::@return
|
||||
(signed dword) print_sdword::dw
|
||||
(signed dword) print_sdword::dw#0 dw zp ZP_DWORD:10 4.0
|
||||
(signed dword) print_sdword::dw#1 dw zp ZP_DWORD:10 4.0
|
||||
(signed dword) print_sdword::dw#2 dw zp ZP_DWORD:10 4.0
|
||||
(signed dword) print_sdword::dw#3 dw zp ZP_DWORD:10 2.5
|
||||
(signed dword) print_sdword::dw#4 dw zp ZP_DWORD:10 6.0
|
||||
(void()) print_str((byte*) print_str::str)
|
||||
(label) print_str::@1
|
||||
(label) print_str::@2
|
||||
(label) print_str::@return
|
||||
(byte*) print_str::str
|
||||
(byte*) print_str::str#0 str zp ZP_WORD:8 22.0
|
||||
(byte*) print_str::str#21 str zp ZP_WORD:8 11.5
|
||||
(byte*) print_str::str#23 str zp ZP_WORD:8 2.0
|
||||
(byte*) print_str::str#26 str zp ZP_WORD:8 11.5
|
||||
(byte*) print_str::str#28 str zp ZP_WORD:8 2.0
|
||||
(void()) print_sword((signed word) print_sword::w)
|
||||
(label) print_sword::@1
|
||||
(label) print_sword::@2
|
||||
@ -528,8 +654,10 @@
|
||||
(signed word) print_sword::w#1 w zp ZP_WORD:2 4.0
|
||||
(signed word) print_sword::w#2 w zp ZP_WORD:2 4.0
|
||||
(signed word) print_sword::w#3 w zp ZP_WORD:2 4.0
|
||||
(signed word) print_sword::w#4 w zp ZP_WORD:2 3.0
|
||||
(signed word) print_sword::w#4 w zp ZP_WORD:2 4.0
|
||||
(signed word) print_sword::w#5 w zp ZP_WORD:2 4.0
|
||||
(signed word) print_sword::w#6 w zp ZP_WORD:2 4.0
|
||||
(signed word) print_sword::w#7 w zp ZP_WORD:2 4.0
|
||||
(void()) print_word((word) print_word::w)
|
||||
(label) print_word::@1
|
||||
(label) print_word::@return
|
||||
@ -546,26 +674,29 @@
|
||||
(word) print_word::w#8 w zp ZP_WORD:2 4.0
|
||||
(word) print_word::w#9 w zp ZP_WORD:2 4.0
|
||||
|
||||
reg byte x [ mul16s_compare::i#9 mul16s_compare::i#1 ]
|
||||
zp ZP_WORD:2 [ mul16s_compare::a#2 mul16s_compare::a#5 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mul16s_error::a#0 print_sword::w#7 print_sword::w#6 print_sword::w#4 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#10 print_word::w#8 print_word::w#9 print_word::w#5 print_word::w#6 print_word::w#7 print_word::w#17 print_word::w#18 print_word::w#1 print_word::w#2 print_word::w#21 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul16u_error::a#0 mul16u_compare::a#2 mul16u_compare::a#5 mul16u_compare::a#1 muls16u::a#0 mul8s_error::ms#0 mul8s_compare::ms#0 muls8s::return#2 muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 mul8u_error::ms#0 mul8u_compare::ms#0 muls8u::return#2 muls8u::return#0 muls8u::m#3 muls8u::m#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 ]
|
||||
zp ZP_WORD:4 [ mul16s_compare::b#2 mul16s_compare::b#5 mul16s_compare::b#1 muls16s::b#0 mul16s::b#0 mul16s_error::b#0 muls16u::i#2 muls16u::i#1 mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s::return#2 mul8s_compare::mn#0 mul8s_error::mn#0 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 mul8u_compare::mn#0 mul8u_error::mn#0 mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ]
|
||||
reg byte y [ mul16s_compare::j#2 mul16s_compare::j#1 ]
|
||||
reg byte a [ mul16s_compare::ok#2 ]
|
||||
zp ZP_WORD:6 [ line_cursor#35 line_cursor#69 line_cursor#1 line_cursor#12 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ]
|
||||
zp ZP_WORD:8 [ print_str::str#26 print_str::str#28 print_str::str#0 mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 muls16s::i#2 muls16s::i#1 muls16s::j#2 muls16s::j#1 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 mul16s::$6 mul16s::$16 mul16s::$12 mul16s::$17 ]
|
||||
zp ZP_DWORD:10 [ print_sdword::dw#4 print_sdword::dw#3 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#0 print_dword::dw#3 print_dword::dw#1 print_dword::dw#2 print_dword::dw#0 mul16s_error::ms#0 mul16s_compare::ms#0 muls16s::return#2 muls16s::m#5 muls16s::return#0 muls16s::m#3 muls16s::m#1 muls16s::m#2 mul16u_error::ms#0 mul16u_compare::ms#0 muls16u::return#2 muls16u::return#0 muls16u::m#3 muls16u::m#1 ]
|
||||
reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ]
|
||||
reg byte a [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ]
|
||||
zp ZP_WORD:14 [ char_cursor#124 char_cursor#212 char_cursor#208 char_cursor#209 char_cursor#210 char_cursor#230 char_cursor#292 char_cursor#293 char_cursor#203 char_cursor#102 char_cursor#125 char_cursor#297 char_cursor#298 char_cursor#302 char_cursor#303 char_cursor#138 char_cursor#1 char_cursor#204 char_cursor#206 char_cursor#346 ]
|
||||
zp ZP_DWORD:16 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16s::return#0 mul16s::return#2 mul16s_compare::mn#0 mul16s_error::mn#0 mul16u::return#3 mul16u_compare::mn#0 mul16u_error::mn#0 ]
|
||||
zp ZP_WORD:20 [ mul16u::b#2 mul16u::b#3 mul16u::b#1 mul16u_compare::b#2 mul16u_compare::b#5 mul16u_compare::b#1 muls16u::b#0 mul16u_error::b#0 mulf8s::m#4 mulf8s::m#5 mulf8s::m#1 mulf8s::m#0 mulf8s::m#2 mulf8s::return#2 mul8s_compare::mf#0 mul8s_error::mf#0 mulf8u::return#2 mulf8u::return#0 mulf8u::return#3 mul8u_compare::mf#0 mul8u_error::mf#0 ]
|
||||
zp ZP_DWORD:22 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]
|
||||
reg byte x [ mul16u_compare::i#9 mul16u_compare::i#1 ]
|
||||
zp ZP_WORD:2 [ mul16u_compare::a#2 mul16u_compare::a#5 mul16u_compare::a#1 muls16u::a#0 mul16u_error::a#0 print_word::w#10 print_word::w#8 print_word::w#9 print_word::w#5 print_word::w#6 print_word::w#7 print_word::w#17 print_word::w#18 print_word::w#1 print_word::w#2 print_word::w#21 print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_error::ms#0 mul8s_compare::ms#0 muls8s::return#2 muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 mul8u_error::ms#0 mul8u_compare::ms#0 muls8u::return#2 muls8u::return#0 muls8u::m#3 muls8u::m#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 ]
|
||||
zp ZP_WORD:4 [ mul16u_compare::b#2 mul16u_compare::b#5 mul16u_compare::b#1 muls16u::b#0 mul16u::b#0 mul16u_error::b#0 mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s::return#2 mul8s_compare::mn#0 mul8s_error::mn#0 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 mul8u_compare::mn#0 mul8u_error::mn#0 mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ]
|
||||
reg byte y [ mul16u_compare::j#2 mul16u_compare::j#1 ]
|
||||
reg byte a [ mul16u_compare::ok#2 ]
|
||||
zp ZP_WORD:6 [ line_cursor#29 line_cursor#57 line_cursor#1 line_cursor#11 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ]
|
||||
zp ZP_WORD:8 [ print_str::str#21 print_str::str#23 print_str::str#0 mul16u::a#2 mul16u::a#1 mul16u::a#0 muls16u::i#2 muls16u::i#1 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ]
|
||||
zp ZP_DWORD:10 [ print_dword::dw#2 print_dword::dw#0 print_dword::dw#1 mul16u_error::ms#0 mul16u_compare::ms#0 muls16u::return#2 muls16u::return#0 muls16u::m#3 muls16u::m#1 ]
|
||||
reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ]
|
||||
reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ]
|
||||
zp ZP_WORD:14 [ char_cursor#103 char_cursor#174 char_cursor#172 char_cursor#189 char_cursor#239 char_cursor#240 char_cursor#167 char_cursor#166 char_cursor#104 char_cursor#244 char_cursor#245 char_cursor#116 char_cursor#1 char_cursor#168 char_cursor#170 char_cursor#282 ]
|
||||
zp ZP_DWORD:16 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 mul16u_compare::mn#0 mul16u_error::mn#0 ]
|
||||
zp ZP_DWORD:20 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]
|
||||
zp ZP_BYTE:24 [ mul8s_compare::a#7 mul8s_compare::a#1 muls8s::a#0 mul8s::a#0 mul8u_compare::a#7 mul8u_compare::a#1 muls8u::a#0 mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 mulf_init::dir#2 mulf_init::dir#3 ]
|
||||
zp ZP_BYTE:25 [ mul8s_compare::b#10 mul8s_compare::b#1 mulf8s::b#0 mul8s_error::b#0 mul8u_compare::b#10 mul8u_compare::b#1 mul8u_error::b#0 ]
|
||||
zp ZP_BYTE:26 [ mul8s_compare::a#7 mul8s_compare::a#1 muls8s::a#0 mul8s::a#0 mul8u_compare::a#7 mul8u_compare::a#1 muls8u::a#0 mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 mulf_init::dir#2 mulf_init::dir#3 ]
|
||||
zp ZP_BYTE:27 [ mul8s_compare::b#10 mul8s_compare::b#1 mulf8s::b#0 mul8s_error::b#0 mul8u_compare::b#10 mul8u_compare::b#1 mul8u_error::b#0 ]
|
||||
reg byte x [ mul8s_compare::ok#3 mul8s_compare::ok#4 ]
|
||||
reg byte x [ print_sbyte::b#4 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#0 ]
|
||||
reg byte a [ mul8u::b#2 mul8u::b#3 mul8u::b#1 ]
|
||||
reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ]
|
||||
zp ZP_WORD:26 [ mulf8s::m#4 mulf8s::m#5 mulf8s::m#1 mulf8s::m#0 mulf8s::m#2 mulf8s::return#2 mul8s_compare::mf#0 mul8s_error::mf#0 mulf8u::return#2 mulf8u::return#0 mulf8u::return#3 mul8u_compare::mf#0 mul8u_error::mf#0 ]
|
||||
reg byte a [ mulf8u::a#2 mulf8u::a#1 mulf8u::a#4 ]
|
||||
reg byte x [ mulf8u::b#2 mulf8u::b#1 mulf8u::b#4 ]
|
||||
reg byte y [ muls8s::i#2 muls8s::i#1 ]
|
||||
|
@ -9,8 +9,8 @@ main: {
|
||||
sta b
|
||||
sta b+1
|
||||
b1:
|
||||
lda b
|
||||
clc
|
||||
lda b
|
||||
adc #<$28*8
|
||||
sta b
|
||||
lda b+1
|
||||
|
@ -254,9 +254,9 @@ main: {
|
||||
lda #0
|
||||
sta i
|
||||
//SEG12 [5] phi (word) main::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vwuz1=vbuc1
|
||||
lda #0
|
||||
lda #<0
|
||||
sta b
|
||||
lda #0
|
||||
lda #>0
|
||||
sta b+1
|
||||
jmp b1
|
||||
//SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1]
|
||||
@ -267,8 +267,8 @@ main: {
|
||||
//SEG16 main::@1
|
||||
b1:
|
||||
//SEG17 [6] (word) main::b#1 ← (word) main::b#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ main::i#2 main::b#1 ] ( main:2 [ main::i#2 main::b#1 ] ) -- vwuz1=vwuz1_plus_vwuc1
|
||||
lda b
|
||||
clc
|
||||
lda b
|
||||
adc #<$28*8
|
||||
sta b
|
||||
lda b+1
|
||||
@ -331,9 +331,9 @@ main: {
|
||||
//SEG11 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1
|
||||
ldx #0
|
||||
//SEG12 [5] phi (word) main::b#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vwuz1=vbuc1
|
||||
lda #0
|
||||
lda #<0
|
||||
sta b
|
||||
lda #0
|
||||
lda #>0
|
||||
sta b+1
|
||||
jmp b1
|
||||
//SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1]
|
||||
@ -344,8 +344,8 @@ main: {
|
||||
//SEG16 main::@1
|
||||
b1:
|
||||
//SEG17 [6] (word) main::b#1 ← (word) main::b#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ main::i#2 main::b#1 ] ( main:2 [ main::i#2 main::b#1 ] ) -- vwuz1=vwuz1_plus_vwuc1
|
||||
lda b
|
||||
clc
|
||||
lda b
|
||||
adc #<$28*8
|
||||
sta b
|
||||
lda b+1
|
||||
@ -369,8 +369,8 @@ Removing instruction jmp bend
|
||||
Removing instruction jmp b1
|
||||
Removing instruction jmp breturn
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Replacing instruction lda #0 with TXA
|
||||
Removing instruction lda #0
|
||||
Replacing instruction lda #<0 with TXA
|
||||
Removing instruction lda #>0
|
||||
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
||||
Replacing label b1_from_b1 with b1
|
||||
Removing instruction bbegin:
|
||||
@ -437,8 +437,8 @@ main: {
|
||||
//SEG16 main::@1
|
||||
b1:
|
||||
//SEG17 [6] (word) main::b#1 ← (word) main::b#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ main::i#2 main::b#1 ] ( main:2 [ main::i#2 main::b#1 ] ) -- vwuz1=vwuz1_plus_vwuc1
|
||||
lda b
|
||||
clc
|
||||
lda b
|
||||
adc #<$28*8
|
||||
sta b
|
||||
lda b+1
|
||||
|
Loading…
x
Reference in New Issue
Block a user