1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-11-23 08:32:39 +00:00

Now 202 t cycles through a little optimization.

This commit is contained in:
jespergravgaard 2019-06-25 00:03:53 +02:00
parent 3a919eda9d
commit 77b75cb045
5 changed files with 1957 additions and 2510 deletions

View File

@ -15,30 +15,24 @@ void main() {
*D018 = toD018(SCREEN, CHARSET); *D018 = toD018(SCREEN, CHARSET);
NUM_SQUARES = 0x30; NUM_SQUARES = 0x30;
init_squares(); init_squares();
byte* screen = SCREEN; byte* screen_topline = SCREEN;
byte *screen_bottomline = SCREEN+40*24;
for(byte y: 0..12) { for(byte y: 0..12) {
byte y2 = y*2; byte y2 = y*2;
byte yd = (y2>=24)?(y2-24):(24-y2); byte yd = (y2>=24)?(y2-24):(24-y2);
word yds = sqr(yd); word yds = sqr(yd);
for(byte x: 0..19) { for( byte x=0,xb=39; x<=19; x++, xb--) {
byte x2 = x*2; byte x2 = x*2;
byte xd = (x2>=39)?(x2-39):(39-x2); byte xd = (x2>=39)?(x2-39):(39-x2);
word xds = sqr(xd); word xds = sqr(xd);
word ds = xds+yds; word ds = xds+yds;
byte d = sqrt(ds); byte d = sqrt(ds);
*screen++ = d; screen_topline[x] = d;
} screen_bottomline[x] = d;
// Mirror x-axis screen_topline[xb] = d;
byte *screen_mirror = screen; screen_bottomline[xb] = d;
for(byte x: 0..19) {
*screen++ = *--screen_mirror;
}
}
// Mirror y-axis
byte *screen_mirror = screen-40;
for(byte y: 0..11) {
for(byte x: 0..39) {
*screen++ = *--screen_mirror;
} }
screen_topline += 40;
screen_bottomline -= 40;
} }
} }

View File

@ -12,32 +12,33 @@
.label SQUARES = malloc.return .label SQUARES = malloc.return
main: { main: {
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>CHARSET)/4&$f .const toD0181_return = (>(SCREEN&$3fff)*4)|(>CHARSET)/4&$f
.label yds = $1c .label yds = $19
.label xds = $1e .label xds = $1b
.label ds = $1e .label ds = $1b
.label screen = $b .label x = 7
.label x = 3 .label xb = 9
.label screen_mirror1 = 4 .label screen_topline = 3
.label screen_bottomline = 5
.label y = 2 .label y = 2
.label screen_mirror = 9
.label y1 = 6
jsr init_font_hex jsr init_font_hex
lda #toD0181_return lda #toD0181_return
sta D018 sta D018
jsr init_squares jsr init_squares
lda #<SCREEN+$28*$18
sta screen_bottomline
lda #>SCREEN+$28*$18
sta screen_bottomline+1
lda #<SCREEN lda #<SCREEN
sta screen sta screen_topline
lda #>SCREEN lda #>SCREEN
sta screen+1 sta screen_topline+1
lda #0 lda #0
sta y sta y
b1: b1:
lda y lda y
asl asl
cmp #$18 cmp #$18
bcc !b2+ bcs b2
jmp b2
!b2:
eor #$ff eor #$ff
clc clc
adc #$18+1 adc #$18+1
@ -47,15 +48,15 @@ main: {
sta sqr.return_2 sta sqr.return_2
lda sqr.return+1 lda sqr.return+1
sta sqr.return_2+1 sta sqr.return_2+1
lda #$27
sta xb
lda #0 lda #0
sta x sta x
b5: b5:
lda x lda x
asl asl
cmp #$27 cmp #$27
bcc !b6+ bcs b6
jmp b6
!b6:
eor #$ff eor #$ff
clc clc
adc #$27+1 adc #$27+1
@ -69,74 +70,35 @@ main: {
adc yds+1 adc yds+1
sta ds+1 sta ds+1
jsr sqrt jsr sqrt
ldy #0 ldy x
sta (screen),y sta (screen_topline),y
inc screen sta (screen_bottomline),y
bne !+ ldy xb
inc screen+1 sta (screen_topline),y
!: sta (screen_bottomline),y
inc x inc x
lda #$14 dec xb
cmp x lda x
bne b5 cmp #$13+1
lda screen bcc b5
sta screen_mirror1 lda #$28
lda screen+1 clc
sta screen_mirror1+1 adc screen_topline
ldx #0 sta screen_topline
b10: bcc !+
lda screen_mirror1 inc screen_topline+1
bne !+
dec screen_mirror1+1
!: !:
dec screen_mirror1 lda screen_bottomline
ldy #0 sec
lda (screen_mirror1),y sbc #<$28
sta (screen),y sta screen_bottomline
inc screen lda screen_bottomline+1
bne !+ sbc #>$28
inc screen+1 sta screen_bottomline+1
!:
inx
cpx #$14
bne b10
inc y inc y
lda #$d lda #$d
cmp y cmp y
beq !b1+ bne b1
jmp b1
!b1:
lda screen
sec
sbc #<$28
sta screen_mirror
lda screen+1
sbc #>$28
sta screen_mirror+1
lda #0
sta y1
b13:
ldx #0
b14:
lda screen_mirror
bne !+
dec screen_mirror+1
!:
dec screen_mirror
ldy #0
lda (screen_mirror),y
sta (screen),y
inc screen
bne !+
inc screen+1
!:
inx
cpx #$28
bne b14
inc y1
lda #$c
cmp y1
bne b13
rts rts
b6: b6:
sec sec
@ -150,12 +112,12 @@ main: {
// Find the (integer) square root of a word value // Find the (integer) square root of a word value
// If the square is not an integer then it returns the largest integer N where N*N <= val // If the square is not an integer then it returns the largest integer N where N*N <= val
// Uses a table of squares that must be initialized by calling init_squares() // Uses a table of squares that must be initialized by calling init_squares()
// sqrt(word zeropage($1e) val) // sqrt(word zeropage($1b) val)
sqrt: { sqrt: {
.label _1 = $d .label _1 = $a
.label _3 = $d .label _3 = $a
.label found = $d .label found = $a
.label val = $1e .label val = $1b
jsr bsearch16u jsr bsearch16u
lda _3 lda _3
sec sec
@ -174,14 +136,14 @@ sqrt: {
// - items - Pointer to the start of the array to search in // - items - Pointer to the start of the array to search in
// - num - The number of items in the array // - num - The number of items in the array
// Returns pointer to an entry in the array that matches the search key // Returns pointer to an entry in the array that matches the search key
// bsearch16u(word zeropage($1e) key, word* zeropage($d) items, byte register(X) num) // bsearch16u(word zeropage($1b) key, word* zeropage($a) items, byte register(X) num)
bsearch16u: { bsearch16u: {
.label _2 = $d .label _2 = $a
.label pivot = $20 .label pivot = $1d
.label result = $22 .label result = $1f
.label return = $d .label return = $a
.label items = $d .label items = $a
.label key = $1e .label key = $1b
lda #<SQUARES lda #<SQUARES
sta items sta items
lda #>SQUARES lda #>SQUARES
@ -261,8 +223,8 @@ bsearch16u: {
// Uses a table of squares that must be initialized by calling init_squares() // Uses a table of squares that must be initialized by calling init_squares()
// sqr(byte register(A) val) // sqr(byte register(A) val)
sqr: { sqr: {
.label return = $1e .label return = $1b
.label return_2 = $1c .label return_2 = $19
asl asl
tay tay
lda SQUARES,y lda SQUARES,y
@ -274,8 +236,8 @@ sqr: {
// Initialize squares table // Initialize squares table
// Uses iterative formula (x+1)^2 = x^2 + 2*x + 1 // Uses iterative formula (x+1)^2 = x^2 + 2*x + 1
init_squares: { init_squares: {
.label squares = $11 .label squares = $e
.label sqr = $f .label sqr = $c
jsr malloc jsr malloc
ldx #0 ldx #0
lda #<SQUARES lda #<SQUARES
@ -321,15 +283,15 @@ malloc: {
rts rts
} }
// Make charset from proto chars // Make charset from proto chars
// init_font_hex(byte* zeropage($16) charset) // init_font_hex(byte* zeropage($13) charset)
init_font_hex: { init_font_hex: {
.label _0 = $24 .label _0 = $21
.label idx = $1b .label idx = $18
.label proto_lo = $18 .label proto_lo = $15
.label charset = $16 .label charset = $13
.label c1 = $1a .label c1 = $17
.label proto_hi = $13 .label proto_hi = $10
.label c = $15 .label c = $12
lda #0 lda #0
sta c sta c
lda #<FONT_HEX_PROTO lda #<FONT_HEX_PROTO

View File

@ -13,15 +13,16 @@ main: scope:[main] from @1
to:main::toD0181 to:main::toD0181
main::toD0181: scope:[main] from main main::toD0181: scope:[main] from main
[6] phi() [6] phi()
to:main::@16 to:main::@10
main::@16: scope:[main] from main::toD0181 main::@10: scope:[main] from main::toD0181
[7] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [7] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0
[8] call init_squares [8] call init_squares
to:main::@1 to:main::@1
main::@1: scope:[main] from main::@11 main::@16 main::@1: scope:[main] from main::@10 main::@9
[9] (byte*) main::screen#17 ← phi( main::@11/(byte*) main::screen#10 main::@16/(const byte*) SCREEN#0 ) [9] (byte*) main::screen_bottomline#10 ← phi( main::@9/(byte*) main::screen_bottomline#1 main::@10/(const byte*) SCREEN#0+(word)(number) $28*(number) $18 )
[9] (byte) main::y#12 ← phi( main::@11/(byte) main::y#1 main::@16/(byte) 0 ) [9] (byte*) main::screen_topline#10 ← phi( main::@9/(byte*) main::screen_topline#1 main::@10/(const byte*) SCREEN#0 )
[10] (byte) main::y2#0 ← (byte) main::y#12 << (byte) 1 [9] (byte) main::y#10 ← phi( main::@9/(byte) main::y#1 main::@10/(byte) 0 )
[10] (byte) main::y2#0 ← (byte) main::y#10 << (byte) 1
[11] if((byte) main::y2#0>=(byte) $18) goto main::@2 [11] if((byte) main::y2#0>=(byte) $18) goto main::@2
to:main::@3 to:main::@3
main::@3: scope:[main] from main::@1 main::@3: scope:[main] from main::@1
@ -32,13 +33,13 @@ main::@4: scope:[main] from main::@2 main::@3
[14] (byte) sqr::val#0 ← (byte) main::yd#0 [14] (byte) sqr::val#0 ← (byte) main::yd#0
[15] call sqr [15] call sqr
[16] (word) sqr::return#2 ← (word) sqr::return#0 [16] (word) sqr::return#2 ← (word) sqr::return#0
to:main::@17 to:main::@11
main::@17: scope:[main] from main::@4 main::@11: scope:[main] from main::@4
[17] (word) main::yds#0 ← (word) sqr::return#2 [17] (word) main::yds#0 ← (word) sqr::return#2
to:main::@5 to:main::@5
main::@5: scope:[main] from main::@17 main::@19 main::@5: scope:[main] from main::@11 main::@13
[18] (byte*) main::screen#12 ← phi( main::@17/(byte*) main::screen#17 main::@19/(byte*) main::screen#1 ) [18] (byte) main::xb#2 ← phi( main::@11/(byte) $27 main::@13/(byte) main::xb#1 )
[18] (byte) main::x#2 ← phi( main::@17/(byte) 0 main::@19/(byte) main::x#1 ) [18] (byte) main::x#2 ← phi( main::@11/(byte) 0 main::@13/(byte) main::x#1 )
[19] (byte) main::x2#0 ← (byte) main::x#2 << (byte) 1 [19] (byte) main::x2#0 ← (byte) main::x#2 << (byte) 1
[20] if((byte) main::x2#0>=(byte) $27) goto main::@6 [20] if((byte) main::x2#0>=(byte) $27) goto main::@6
to:main::@7 to:main::@7
@ -50,198 +51,168 @@ main::@8: scope:[main] from main::@6 main::@7
[23] (byte) sqr::val#1 ← (byte) main::xd#0 [23] (byte) sqr::val#1 ← (byte) main::xd#0
[24] call sqr [24] call sqr
[25] (word) sqr::return#3 ← (word) sqr::return#0 [25] (word) sqr::return#3 ← (word) sqr::return#0
to:main::@18 to:main::@12
main::@18: scope:[main] from main::@8 main::@12: scope:[main] from main::@8
[26] (word) main::xds#0 ← (word) sqr::return#3 [26] (word) main::xds#0 ← (word) sqr::return#3
[27] (word) main::ds#0 ← (word) main::xds#0 + (word) main::yds#0 [27] (word) main::ds#0 ← (word) main::xds#0 + (word) main::yds#0
[28] (word) sqrt::val#0 ← (word) main::ds#0 [28] (word) sqrt::val#0 ← (word) main::ds#0
[29] call sqrt [29] call sqrt
[30] (byte) sqrt::return#2 ← (byte) sqrt::return#0 [30] (byte) sqrt::return#2 ← (byte) sqrt::return#0
to:main::@19
main::@19: scope:[main] from main::@18
[31] (byte) main::d#0 ← (byte) sqrt::return#2
[32] *((byte*) main::screen#12) ← (byte) main::d#0
[33] (byte*) main::screen#1 ← ++ (byte*) main::screen#12
[34] (byte) main::x#1 ← ++ (byte) main::x#2
[35] if((byte) main::x#1!=(byte) $14) goto main::@5
to:main::@9
main::@9: scope:[main] from main::@19
[36] (byte*~) main::screen_mirror1#3 ← (byte*) main::screen#1
to:main::@10
main::@10: scope:[main] from main::@10 main::@9
[37] (byte) main::x1#2 ← phi( main::@9/(byte) 0 main::@10/(byte) main::x1#1 )
[37] (byte*) main::screen#6 ← phi( main::@9/(byte*) main::screen#1 main::@10/(byte*) main::screen#10 )
[37] (byte*) main::screen_mirror1#2 ← phi( main::@9/(byte*~) main::screen_mirror1#3 main::@10/(byte*) main::screen_mirror1#1 )
[38] (byte*) main::screen_mirror1#1 ← -- (byte*) main::screen_mirror1#2
[39] *((byte*) main::screen#6) ← *((byte*) main::screen_mirror1#1)
[40] (byte*) main::screen#10 ← ++ (byte*) main::screen#6
[41] (byte) main::x1#1 ← ++ (byte) main::x1#2
[42] if((byte) main::x1#1!=(byte) $14) goto main::@10
to:main::@11
main::@11: scope:[main] from main::@10
[43] (byte) main::y#1 ← ++ (byte) main::y#12
[44] if((byte) main::y#1!=(byte) $d) goto main::@1
to:main::@12
main::@12: scope:[main] from main::@11
[45] (byte*) main::screen_mirror#0 ← (byte*) main::screen#10 - (byte) $28
to:main::@13 to:main::@13
main::@13: scope:[main] from main::@12 main::@15 main::@13: scope:[main] from main::@12
[46] (byte) main::y1#4 ← phi( main::@12/(byte) 0 main::@15/(byte) main::y1#1 ) [31] (byte) main::d#0 ← (byte) sqrt::return#2
[46] (byte*) main::screen#11 ← phi( main::@12/(byte*) main::screen#10 main::@15/(byte*) main::screen#13 ) [32] *((byte*) main::screen_topline#10 + (byte) main::x#2) ← (byte) main::d#0
[46] (byte*) main::screen_mirror#3 ← phi( main::@12/(byte*) main::screen_mirror#0 main::@15/(byte*) main::screen_mirror#1 ) [33] *((byte*) main::screen_bottomline#10 + (byte) main::x#2) ← (byte) main::d#0
to:main::@14 [34] *((byte*) main::screen_topline#10 + (byte) main::xb#2) ← (byte) main::d#0
main::@14: scope:[main] from main::@13 main::@14 [35] *((byte*) main::screen_bottomline#10 + (byte) main::xb#2) ← (byte) main::d#0
[47] (byte) main::x3#2 ← phi( main::@13/(byte) 0 main::@14/(byte) main::x3#1 ) [36] (byte) main::x#1 ← ++ (byte) main::x#2
[47] (byte*) main::screen#8 ← phi( main::@13/(byte*) main::screen#11 main::@14/(byte*) main::screen#13 ) [37] (byte) main::xb#1 ← -- (byte) main::xb#2
[47] (byte*) main::screen_mirror#2 ← phi( main::@13/(byte*) main::screen_mirror#3 main::@14/(byte*) main::screen_mirror#1 ) [38] if((byte) main::x#1<(byte) $13+(byte) 1) goto main::@5
[48] (byte*) main::screen_mirror#1 ← -- (byte*) main::screen_mirror#2 to:main::@9
[49] *((byte*) main::screen#8) ← *((byte*) main::screen_mirror#1) main::@9: scope:[main] from main::@13
[50] (byte*) main::screen#13 ← ++ (byte*) main::screen#8 [39] (byte*) main::screen_topline#1 ← (byte*) main::screen_topline#10 + (byte) $28
[51] (byte) main::x3#1 ← ++ (byte) main::x3#2 [40] (byte*) main::screen_bottomline#1 ← (byte*) main::screen_bottomline#10 - (byte) $28
[52] if((byte) main::x3#1!=(byte) $28) goto main::@14 [41] (byte) main::y#1 ← ++ (byte) main::y#10
to:main::@15 [42] if((byte) main::y#1!=(byte) $d) goto main::@1
main::@15: scope:[main] from main::@14
[53] (byte) main::y1#1 ← ++ (byte) main::y1#4
[54] if((byte) main::y1#1!=(byte) $c) goto main::@13
to:main::@return to:main::@return
main::@return: scope:[main] from main::@15 main::@return: scope:[main] from main::@9
[55] return [43] return
to:@return to:@return
main::@6: scope:[main] from main::@5 main::@6: scope:[main] from main::@5
[56] (byte~) main::$17 ← (byte) main::x2#0 - (byte) $27 [44] (byte~) main::$17 ← (byte) main::x2#0 - (byte) $27
to:main::@8 to:main::@8
main::@2: scope:[main] from main::@1 main::@2: scope:[main] from main::@1
[57] (byte~) main::$9 ← (byte) main::y2#0 - (byte) $18 [45] (byte~) main::$9 ← (byte) main::y2#0 - (byte) $18
to:main::@4 to:main::@4
sqrt: scope:[sqrt] from main::@18 sqrt: scope:[sqrt] from main::@12
[58] (word) bsearch16u::key#0 ← (word) sqrt::val#0 [46] (word) bsearch16u::key#0 ← (word) sqrt::val#0
[59] call bsearch16u [47] call bsearch16u
[60] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1 [48] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1
to:sqrt::@1 to:sqrt::@1
sqrt::@1: scope:[sqrt] from sqrt sqrt::@1: scope:[sqrt] from sqrt
[61] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3 [49] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3
[62] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (const word*) SQUARES#1 [50] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (const word*) SQUARES#1
[63] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1 [51] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1
[64] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1 [52] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1
to:sqrt::@return to:sqrt::@return
sqrt::@return: scope:[sqrt] from sqrt::@1 sqrt::@return: scope:[sqrt] from sqrt::@1
[65] return [53] return
to:@return to:@return
bsearch16u: scope:[bsearch16u] from sqrt bsearch16u: scope:[bsearch16u] from sqrt
[66] phi() [54] phi()
to:bsearch16u::@3 to:bsearch16u::@3
bsearch16u::@3: scope:[bsearch16u] from bsearch16u bsearch16u::@7 bsearch16u::@3: scope:[bsearch16u] from bsearch16u bsearch16u::@7
[67] (word*) bsearch16u::items#2 ← phi( bsearch16u/(const word*) SQUARES#1 bsearch16u::@7/(word*) bsearch16u::items#8 ) [55] (word*) bsearch16u::items#2 ← phi( bsearch16u/(const word*) SQUARES#1 bsearch16u::@7/(word*) bsearch16u::items#8 )
[67] (byte) bsearch16u::num#3 ← phi( bsearch16u/(const byte) NUM_SQUARES#1 bsearch16u::@7/(byte) bsearch16u::num#0 ) [55] (byte) bsearch16u::num#3 ← phi( bsearch16u/(const byte) NUM_SQUARES#1 bsearch16u::@7/(byte) bsearch16u::num#0 )
[68] if((byte) bsearch16u::num#3>(byte) 0) goto bsearch16u::@4 [56] if((byte) bsearch16u::num#3>(byte) 0) goto bsearch16u::@4
to:bsearch16u::@5 to:bsearch16u::@5
bsearch16u::@5: scope:[bsearch16u] from bsearch16u::@3 bsearch16u::@5: scope:[bsearch16u] from bsearch16u::@3
[69] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2 [57] if(*((word*) bsearch16u::items#2)<=(word) bsearch16u::key#0) goto bsearch16u::@2
to:bsearch16u::@1 to:bsearch16u::@1
bsearch16u::@1: scope:[bsearch16u] from bsearch16u::@5 bsearch16u::@1: scope:[bsearch16u] from bsearch16u::@5
[70] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD [58] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#2 - (byte) 1*(const byte) SIZEOF_WORD
to:bsearch16u::@2 to:bsearch16u::@2
bsearch16u::@2: scope:[bsearch16u] from bsearch16u::@1 bsearch16u::@5 bsearch16u::@2: scope:[bsearch16u] from bsearch16u::@1 bsearch16u::@5
[71] (word*) bsearch16u::return#2 ← phi( bsearch16u::@5/(word*) bsearch16u::items#2 bsearch16u::@1/(word*~) bsearch16u::$2 ) [59] (word*) bsearch16u::return#2 ← phi( bsearch16u::@5/(word*) bsearch16u::items#2 bsearch16u::@1/(word*~) bsearch16u::$2 )
to:bsearch16u::@return to:bsearch16u::@return
bsearch16u::@return: scope:[bsearch16u] from bsearch16u::@2 bsearch16u::@8 bsearch16u::@return: scope:[bsearch16u] from bsearch16u::@2 bsearch16u::@8
[72] (word*) bsearch16u::return#1 ← phi( bsearch16u::@8/(word*~) bsearch16u::return#6 bsearch16u::@2/(word*) bsearch16u::return#2 ) [60] (word*) bsearch16u::return#1 ← phi( bsearch16u::@8/(word*~) bsearch16u::return#6 bsearch16u::@2/(word*) bsearch16u::return#2 )
[73] return [61] return
to:@return to:@return
bsearch16u::@4: scope:[bsearch16u] from bsearch16u::@3 bsearch16u::@4: scope:[bsearch16u] from bsearch16u::@3
[74] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1 [62] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#3 >> (byte) 1
[75] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1 [63] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1
[76] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16 [64] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#2 + (byte~) bsearch16u::$16
[77] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0) [65] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0)
[78] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6 [66] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6
to:bsearch16u::@8 to:bsearch16u::@8
bsearch16u::@8: scope:[bsearch16u] from bsearch16u::@4 bsearch16u::@8: scope:[bsearch16u] from bsearch16u::@4
[79] (word*~) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0 [67] (word*~) bsearch16u::return#6 ← (word*) bsearch16u::pivot#0
to:bsearch16u::@return to:bsearch16u::@return
bsearch16u::@6: scope:[bsearch16u] from bsearch16u::@4 bsearch16u::@6: scope:[bsearch16u] from bsearch16u::@4
[80] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7 [68] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@7
to:bsearch16u::@9 to:bsearch16u::@9
bsearch16u::@9: scope:[bsearch16u] from bsearch16u::@6 bsearch16u::@9: scope:[bsearch16u] from bsearch16u::@6
[81] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD [69] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD
[82] (byte) bsearch16u::num#1 ← -- (byte) bsearch16u::num#3 [70] (byte) bsearch16u::num#1 ← -- (byte) bsearch16u::num#3
to:bsearch16u::@7 to:bsearch16u::@7
bsearch16u::@7: scope:[bsearch16u] from bsearch16u::@6 bsearch16u::@9 bsearch16u::@7: scope:[bsearch16u] from bsearch16u::@6 bsearch16u::@9
[83] (word*) bsearch16u::items#8 ← phi( bsearch16u::@9/(word*) bsearch16u::items#0 bsearch16u::@6/(word*) bsearch16u::items#2 ) [71] (word*) bsearch16u::items#8 ← phi( bsearch16u::@9/(word*) bsearch16u::items#0 bsearch16u::@6/(word*) bsearch16u::items#2 )
[83] (byte) bsearch16u::num#5 ← phi( bsearch16u::@9/(byte) bsearch16u::num#1 bsearch16u::@6/(byte) bsearch16u::num#3 ) [71] (byte) bsearch16u::num#5 ← phi( bsearch16u::@9/(byte) bsearch16u::num#1 bsearch16u::@6/(byte) bsearch16u::num#3 )
[84] (byte) bsearch16u::num#0 ← (byte) bsearch16u::num#5 >> (byte) 1 [72] (byte) bsearch16u::num#0 ← (byte) bsearch16u::num#5 >> (byte) 1
to:bsearch16u::@3 to:bsearch16u::@3
sqr: scope:[sqr] from main::@4 main::@8 sqr: scope:[sqr] from main::@4 main::@8
[85] (byte) sqr::val#2 ← phi( main::@4/(byte) sqr::val#0 main::@8/(byte) sqr::val#1 ) [73] (byte) sqr::val#2 ← phi( main::@4/(byte) sqr::val#0 main::@8/(byte) sqr::val#1 )
[86] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1 [74] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1
[87] (word) sqr::return#0 ← *((const word*) SQUARES#1 + (byte~) sqr::$0) [75] (word) sqr::return#0 ← *((const word*) SQUARES#1 + (byte~) sqr::$0)
to:sqr::@return to:sqr::@return
sqr::@return: scope:[sqr] from sqr sqr::@return: scope:[sqr] from sqr
[88] return [76] return
to:@return to:@return
init_squares: scope:[init_squares] from main::@16 init_squares: scope:[init_squares] from main::@10
[89] phi() [77] phi()
[90] call malloc [78] call malloc
to:init_squares::@1 to:init_squares::@1
init_squares::@1: scope:[init_squares] from init_squares init_squares::@1 init_squares::@1: scope:[init_squares] from init_squares init_squares::@1
[91] (byte) init_squares::i#2 ← phi( init_squares::@1/(byte) init_squares::i#1 init_squares/(byte) 0 ) [79] (byte) init_squares::i#2 ← phi( init_squares::@1/(byte) init_squares::i#1 init_squares/(byte) 0 )
[91] (word*) init_squares::squares#2 ← phi( init_squares::@1/(word*) init_squares::squares#1 init_squares/(const word*) SQUARES#1 ) [79] (word*) init_squares::squares#2 ← phi( init_squares::@1/(word*) init_squares::squares#1 init_squares/(const word*) SQUARES#1 )
[91] (word) init_squares::sqr#2 ← phi( init_squares::@1/(word) init_squares::sqr#1 init_squares/(byte) 0 ) [79] (word) init_squares::sqr#2 ← phi( init_squares::@1/(word) init_squares::sqr#1 init_squares/(byte) 0 )
[92] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2 [80] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2
[93] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD [81] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD
[94] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1 [82] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1
[95] (byte~) init_squares::$4 ← (byte~) init_squares::$3 + (byte) 1 [83] (byte~) init_squares::$4 ← (byte~) init_squares::$3 + (byte) 1
[96] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4 [84] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4
[97] (byte) init_squares::i#1 ← ++ (byte) init_squares::i#2 [85] (byte) init_squares::i#1 ← ++ (byte) init_squares::i#2
[98] if((byte) init_squares::i#1!=(const byte) NUM_SQUARES#1-(byte) 1+(byte) 1) goto init_squares::@1 [86] if((byte) init_squares::i#1!=(const byte) NUM_SQUARES#1-(byte) 1+(byte) 1) goto init_squares::@1
to:init_squares::@return to:init_squares::@return
init_squares::@return: scope:[init_squares] from init_squares::@1 init_squares::@return: scope:[init_squares] from init_squares::@1
[99] return [87] return
to:@return to:@return
malloc: scope:[malloc] from init_squares malloc: scope:[malloc] from init_squares
[100] phi() [88] phi()
to:malloc::@return to:malloc::@return
malloc::@return: scope:[malloc] from malloc malloc::@return: scope:[malloc] from malloc
[101] return [89] return
to:@return to:@return
init_font_hex: scope:[init_font_hex] from main init_font_hex: scope:[init_font_hex] from main
[102] phi() [90] phi()
to:init_font_hex::@1 to:init_font_hex::@1
init_font_hex::@1: scope:[init_font_hex] from init_font_hex init_font_hex::@5 init_font_hex::@1: scope:[init_font_hex] from init_font_hex init_font_hex::@5
[103] (byte) init_font_hex::c#6 ← phi( init_font_hex/(byte) 0 init_font_hex::@5/(byte) init_font_hex::c#1 ) [91] (byte) init_font_hex::c#6 ← phi( init_font_hex/(byte) 0 init_font_hex::@5/(byte) init_font_hex::c#1 )
[103] (byte*) init_font_hex::proto_hi#6 ← phi( init_font_hex/(const byte[]) FONT_HEX_PROTO#0 init_font_hex::@5/(byte*) init_font_hex::proto_hi#1 ) [91] (byte*) init_font_hex::proto_hi#6 ← phi( init_font_hex/(const byte[]) FONT_HEX_PROTO#0 init_font_hex::@5/(byte*) init_font_hex::proto_hi#1 )
[103] (byte*) init_font_hex::charset#5 ← phi( init_font_hex/(const byte*) CHARSET#0 init_font_hex::@5/(byte*) init_font_hex::charset#0 ) [91] (byte*) init_font_hex::charset#5 ← phi( init_font_hex/(const byte*) CHARSET#0 init_font_hex::@5/(byte*) init_font_hex::charset#0 )
to:init_font_hex::@2 to:init_font_hex::@2
init_font_hex::@2: scope:[init_font_hex] from init_font_hex::@1 init_font_hex::@4 init_font_hex::@2: scope:[init_font_hex] from init_font_hex::@1 init_font_hex::@4
[104] (byte) init_font_hex::c1#4 ← phi( init_font_hex::@1/(byte) 0 init_font_hex::@4/(byte) init_font_hex::c1#1 ) [92] (byte) init_font_hex::c1#4 ← phi( init_font_hex::@1/(byte) 0 init_font_hex::@4/(byte) init_font_hex::c1#1 )
[104] (byte*) init_font_hex::proto_lo#4 ← phi( init_font_hex::@1/(const byte[]) FONT_HEX_PROTO#0 init_font_hex::@4/(byte*) init_font_hex::proto_lo#1 ) [92] (byte*) init_font_hex::proto_lo#4 ← phi( init_font_hex::@1/(const byte[]) FONT_HEX_PROTO#0 init_font_hex::@4/(byte*) init_font_hex::proto_lo#1 )
[104] (byte*) init_font_hex::charset#2 ← phi( init_font_hex::@1/(byte*) init_font_hex::charset#5 init_font_hex::@4/(byte*) init_font_hex::charset#0 ) [92] (byte*) init_font_hex::charset#2 ← phi( init_font_hex::@1/(byte*) init_font_hex::charset#5 init_font_hex::@4/(byte*) init_font_hex::charset#0 )
[105] *((byte*) init_font_hex::charset#2) ← (byte) 0 [93] *((byte*) init_font_hex::charset#2) ← (byte) 0
to:init_font_hex::@3 to:init_font_hex::@3
init_font_hex::@3: scope:[init_font_hex] from init_font_hex::@2 init_font_hex::@3 init_font_hex::@3: scope:[init_font_hex] from init_font_hex::@2 init_font_hex::@3
[106] (byte) init_font_hex::idx#5 ← phi( init_font_hex::@2/(byte) 1 init_font_hex::@3/(byte) init_font_hex::idx#2 ) [94] (byte) init_font_hex::idx#5 ← phi( init_font_hex::@2/(byte) 1 init_font_hex::@3/(byte) init_font_hex::idx#2 )
[106] (byte) init_font_hex::i#2 ← phi( init_font_hex::@2/(byte) 0 init_font_hex::@3/(byte) init_font_hex::i#1 ) [94] (byte) init_font_hex::i#2 ← phi( init_font_hex::@2/(byte) 0 init_font_hex::@3/(byte) init_font_hex::i#1 )
[107] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4 [95] (byte~) init_font_hex::$0 ← *((byte*) init_font_hex::proto_hi#6 + (byte) init_font_hex::i#2) << (byte) 4
[108] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1 [96] (byte~) init_font_hex::$1 ← *((byte*) init_font_hex::proto_lo#4 + (byte) init_font_hex::i#2) << (byte) 1
[109] (byte~) init_font_hex::$2 ← (byte~) init_font_hex::$0 | (byte~) init_font_hex::$1 [97] (byte~) init_font_hex::$2 ← (byte~) init_font_hex::$0 | (byte~) init_font_hex::$1
[110] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#5) ← (byte~) init_font_hex::$2 [98] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#5) ← (byte~) init_font_hex::$2
[111] (byte) init_font_hex::idx#2 ← ++ (byte) init_font_hex::idx#5 [99] (byte) init_font_hex::idx#2 ← ++ (byte) init_font_hex::idx#5
[112] (byte) init_font_hex::i#1 ← ++ (byte) init_font_hex::i#2 [100] (byte) init_font_hex::i#1 ← ++ (byte) init_font_hex::i#2
[113] if((byte) init_font_hex::i#1!=(byte) 5) goto init_font_hex::@3 [101] if((byte) init_font_hex::i#1!=(byte) 5) goto init_font_hex::@3
to:init_font_hex::@4 to:init_font_hex::@4
init_font_hex::@4: scope:[init_font_hex] from init_font_hex::@3 init_font_hex::@4: scope:[init_font_hex] from init_font_hex::@3
[114] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0 [102] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#2) ← (byte) 0
[115] (byte) init_font_hex::idx#3 ← ++ (byte) init_font_hex::idx#2 [103] (byte) init_font_hex::idx#3 ← ++ (byte) init_font_hex::idx#2
[116] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0 [104] *((byte*) init_font_hex::charset#2 + (byte) init_font_hex::idx#3) ← (byte) 0
[117] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5 [105] (byte*) init_font_hex::proto_lo#1 ← (byte*) init_font_hex::proto_lo#4 + (byte) 5
[118] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8 [106] (byte*) init_font_hex::charset#0 ← (byte*) init_font_hex::charset#2 + (byte) 8
[119] (byte) init_font_hex::c1#1 ← ++ (byte) init_font_hex::c1#4 [107] (byte) init_font_hex::c1#1 ← ++ (byte) init_font_hex::c1#4
[120] if((byte) init_font_hex::c1#1!=(byte) $10) goto init_font_hex::@2 [108] if((byte) init_font_hex::c1#1!=(byte) $10) goto init_font_hex::@2
to:init_font_hex::@5 to:init_font_hex::@5
init_font_hex::@5: scope:[init_font_hex] from init_font_hex::@4 init_font_hex::@5: scope:[init_font_hex] from init_font_hex::@4
[121] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5 [109] (byte*) init_font_hex::proto_hi#1 ← (byte*) init_font_hex::proto_hi#6 + (byte) 5
[122] (byte) init_font_hex::c#1 ← ++ (byte) init_font_hex::c#6 [110] (byte) init_font_hex::c#1 ← ++ (byte) init_font_hex::c#6
[123] if((byte) init_font_hex::c#1!=(byte) $10) goto init_font_hex::@1 [111] if((byte) init_font_hex::c#1!=(byte) $10) goto init_font_hex::@1
to:init_font_hex::@return to:init_font_hex::@return
init_font_hex::@return: scope:[init_font_hex] from init_font_hex::@5 init_font_hex::@return: scope:[init_font_hex] from init_font_hex::@5
[124] return [112] return
to:@return to:@return

File diff suppressed because it is too large Load Diff

View File

@ -18,7 +18,7 @@
(const word*) SQUARES#1 SQUARES = (word*)(const void*) malloc::return#0 (const word*) SQUARES#1 SQUARES = (word*)(const void*) malloc::return#0
(word*()) bsearch16u((word) bsearch16u::key , (word*) bsearch16u::items , (byte) bsearch16u::num) (word*()) bsearch16u((word) bsearch16u::key , (word*) bsearch16u::items , (byte) bsearch16u::num)
(byte~) bsearch16u::$16 reg byte a 2002.0 (byte~) bsearch16u::$16 reg byte a 2002.0
(word*~) bsearch16u::$2 $2 zp ZP_WORD:13 4.0 (word*~) bsearch16u::$2 $2 zp ZP_WORD:10 4.0
(byte~) bsearch16u::$6 reg byte a 2002.0 (byte~) bsearch16u::$6 reg byte a 2002.0
(label) bsearch16u::@1 (label) bsearch16u::@1
(label) bsearch16u::@2 (label) bsearch16u::@2
@ -31,28 +31,28 @@
(label) bsearch16u::@9 (label) bsearch16u::@9
(label) bsearch16u::@return (label) bsearch16u::@return
(word*) bsearch16u::items (word*) bsearch16u::items
(word*) bsearch16u::items#0 items zp ZP_WORD:13 1001.0 (word*) bsearch16u::items#0 items zp ZP_WORD:10 1001.0
(word*) bsearch16u::items#2 items zp ZP_WORD:13 334.33333333333337 (word*) bsearch16u::items#2 items zp ZP_WORD:10 334.33333333333337
(word*) bsearch16u::items#8 items zp ZP_WORD:13 1501.5 (word*) bsearch16u::items#8 items zp ZP_WORD:10 1501.5
(word) bsearch16u::key (word) bsearch16u::key
(word) bsearch16u::key#0 key zp ZP_WORD:30 0.2857142857142857 (word) bsearch16u::key#0 key zp ZP_WORD:27 0.2857142857142857
(byte) bsearch16u::num (byte) bsearch16u::num
(byte) bsearch16u::num#0 reg byte x 2002.0 (byte) bsearch16u::num#0 reg byte x 2002.0
(byte) bsearch16u::num#1 reg byte x 2002.0 (byte) bsearch16u::num#1 reg byte x 2002.0
(byte) bsearch16u::num#3 reg byte x 556.1111111111111 (byte) bsearch16u::num#3 reg byte x 556.1111111111111
(byte) bsearch16u::num#5 reg byte x 3003.0 (byte) bsearch16u::num#5 reg byte x 3003.0
(word*) bsearch16u::pivot (word*) bsearch16u::pivot
(word*) bsearch16u::pivot#0 pivot zp ZP_WORD:32 501.0 (word*) bsearch16u::pivot#0 pivot zp ZP_WORD:29 501.0
(signed word) bsearch16u::result (signed word) bsearch16u::result
(signed word) bsearch16u::result#0 result zp ZP_WORD:34 1501.5 (signed word) bsearch16u::result#0 result zp ZP_WORD:31 1501.5
(word*) bsearch16u::return (word*) bsearch16u::return
(word*) bsearch16u::return#1 return zp ZP_WORD:13 2.0 (word*) bsearch16u::return#1 return zp ZP_WORD:10 2.0
(word*) bsearch16u::return#2 return zp ZP_WORD:13 6.0 (word*) bsearch16u::return#2 return zp ZP_WORD:10 6.0
(word*) bsearch16u::return#3 return zp ZP_WORD:13 4.0 (word*) bsearch16u::return#3 return zp ZP_WORD:10 4.0
(word*~) bsearch16u::return#6 return zp ZP_WORD:13 4.0 (word*~) bsearch16u::return#6 return zp ZP_WORD:10 4.0
(byte*) heap_head (byte*) heap_head
(void()) init_font_hex((byte*) init_font_hex::charset) (void()) init_font_hex((byte*) init_font_hex::charset)
(byte~) init_font_hex::$0 $0 zp ZP_BYTE:36 1001.0 (byte~) init_font_hex::$0 $0 zp ZP_BYTE:33 1001.0
(byte~) init_font_hex::$1 reg byte a 2002.0 (byte~) init_font_hex::$1 reg byte a 2002.0
(byte~) init_font_hex::$2 reg byte a 2002.0 (byte~) init_font_hex::$2 reg byte a 2002.0
(label) init_font_hex::@1 (label) init_font_hex::@1
@ -62,28 +62,28 @@
(label) init_font_hex::@5 (label) init_font_hex::@5
(label) init_font_hex::@return (label) init_font_hex::@return
(byte) init_font_hex::c (byte) init_font_hex::c
(byte) init_font_hex::c#1 c zp ZP_BYTE:21 16.5 (byte) init_font_hex::c#1 c zp ZP_BYTE:18 16.5
(byte) init_font_hex::c#6 c zp ZP_BYTE:21 1.1578947368421053 (byte) init_font_hex::c#6 c zp ZP_BYTE:18 1.1578947368421053
(byte) init_font_hex::c1 (byte) init_font_hex::c1
(byte) init_font_hex::c1#1 c1 zp ZP_BYTE:26 151.5 (byte) init_font_hex::c1#1 c1 zp ZP_BYTE:23 151.5
(byte) init_font_hex::c1#4 c1 zp ZP_BYTE:26 13.466666666666667 (byte) init_font_hex::c1#4 c1 zp ZP_BYTE:23 13.466666666666667
(byte*) init_font_hex::charset (byte*) init_font_hex::charset
(byte*) init_font_hex::charset#0 charset zp ZP_WORD:22 35.5 (byte*) init_font_hex::charset#0 charset zp ZP_WORD:19 35.5
(byte*) init_font_hex::charset#2 charset zp ZP_WORD:22 108.35714285714285 (byte*) init_font_hex::charset#2 charset zp ZP_WORD:19 108.35714285714285
(byte*) init_font_hex::charset#5 charset zp ZP_WORD:22 22.0 (byte*) init_font_hex::charset#5 charset zp ZP_WORD:19 22.0
(byte) init_font_hex::i (byte) init_font_hex::i
(byte) init_font_hex::i#1 reg byte x 1501.5 (byte) init_font_hex::i#1 reg byte x 1501.5
(byte) init_font_hex::i#2 reg byte x 667.3333333333334 (byte) init_font_hex::i#2 reg byte x 667.3333333333334
(byte) init_font_hex::idx (byte) init_font_hex::idx
(byte) init_font_hex::idx#2 idx zp ZP_BYTE:27 551.0 (byte) init_font_hex::idx#2 idx zp ZP_BYTE:24 551.0
(byte) init_font_hex::idx#3 reg byte y 202.0 (byte) init_font_hex::idx#3 reg byte y 202.0
(byte) init_font_hex::idx#5 idx zp ZP_BYTE:27 600.5999999999999 (byte) init_font_hex::idx#5 idx zp ZP_BYTE:24 600.5999999999999
(byte*) init_font_hex::proto_hi (byte*) init_font_hex::proto_hi
(byte*) init_font_hex::proto_hi#1 proto_hi zp ZP_WORD:19 7.333333333333333 (byte*) init_font_hex::proto_hi#1 proto_hi zp ZP_WORD:16 7.333333333333333
(byte*) init_font_hex::proto_hi#6 proto_hi zp ZP_WORD:19 56.83333333333334 (byte*) init_font_hex::proto_hi#6 proto_hi zp ZP_WORD:16 56.83333333333334
(byte*) init_font_hex::proto_lo (byte*) init_font_hex::proto_lo
(byte*) init_font_hex::proto_lo#1 proto_lo zp ZP_WORD:24 50.5 (byte*) init_font_hex::proto_lo#1 proto_lo zp ZP_WORD:21 50.5
(byte*) init_font_hex::proto_lo#4 proto_lo zp ZP_WORD:24 92.53846153846155 (byte*) init_font_hex::proto_lo#4 proto_lo zp ZP_WORD:21 92.53846153846155
(void()) init_squares() (void()) init_squares()
(byte~) init_squares::$3 reg byte a 22.0 (byte~) init_squares::$3 reg byte a 22.0
(byte~) init_squares::$4 reg byte a 22.0 (byte~) init_squares::$4 reg byte a 22.0
@ -93,11 +93,11 @@
(byte) init_squares::i#1 reg byte x 16.5 (byte) init_squares::i#1 reg byte x 16.5
(byte) init_squares::i#2 reg byte x 5.5 (byte) init_squares::i#2 reg byte x 5.5
(word) init_squares::sqr (word) init_squares::sqr
(word) init_squares::sqr#1 sqr zp ZP_WORD:15 7.333333333333333 (word) init_squares::sqr#1 sqr zp ZP_WORD:12 7.333333333333333
(word) init_squares::sqr#2 sqr zp ZP_WORD:15 6.6000000000000005 (word) init_squares::sqr#2 sqr zp ZP_WORD:12 6.6000000000000005
(word*) init_squares::squares (word*) init_squares::squares
(word*) init_squares::squares#1 squares zp ZP_WORD:17 3.6666666666666665 (word*) init_squares::squares#1 squares zp ZP_WORD:14 3.6666666666666665
(word*) init_squares::squares#2 squares zp ZP_WORD:17 16.5 (word*) init_squares::squares#2 squares zp ZP_WORD:14 16.5
(void()) main() (void()) main()
(byte~) main::$15 reg byte a 202.0 (byte~) main::$15 reg byte a 202.0
(byte~) main::$17 reg byte a 202.0 (byte~) main::$17 reg byte a 202.0
@ -108,12 +108,6 @@
(label) main::@11 (label) main::@11
(label) main::@12 (label) main::@12
(label) main::@13 (label) main::@13
(label) main::@14
(label) main::@15
(label) main::@16
(label) main::@17
(label) main::@18
(label) main::@19
(label) main::@2 (label) main::@2
(label) main::@3 (label) main::@3
(label) main::@4 (label) main::@4
@ -124,27 +118,15 @@
(label) main::@9 (label) main::@9
(label) main::@return (label) main::@return
(byte) main::d (byte) main::d
(byte) main::d#0 reg byte a 202.0 (byte) main::d#0 reg byte a 126.25
(word) main::ds (word) main::ds
(word) main::ds#0 ds zp ZP_WORD:30 202.0 (word) main::ds#0 ds zp ZP_WORD:27 202.0
(byte*) main::screen (byte*) main::screen_bottomline
(byte*) main::screen#1 screen zp ZP_WORD:11 56.0 (byte*) main::screen_bottomline#1 screen_bottomline zp ZP_WORD:5 7.333333333333333
(byte*) main::screen#10 screen zp ZP_WORD:11 36.16666666666667 (byte*) main::screen_bottomline#10 screen_bottomline zp ZP_WORD:5 6.787878787878788
(byte*) main::screen#11 screen zp ZP_WORD:11 24.0 (byte*) main::screen_topline
(byte*) main::screen#12 screen zp ZP_WORD:11 19.625 (byte*) main::screen_topline#1 screen_topline zp ZP_WORD:3 5.5
(byte*) main::screen#13 screen zp ZP_WORD:11 42.599999999999994 (byte*) main::screen_topline#10 screen_topline zp ZP_WORD:3 7.0
(byte*) main::screen#17 screen zp ZP_WORD:11 2.2
(byte*) main::screen#6 screen zp ZP_WORD:11 104.66666666666666
(byte*) main::screen#8 screen zp ZP_WORD:11 104.66666666666666
(byte*) main::screen_mirror
(byte*) main::screen_mirror#0 screen_mirror zp ZP_WORD:9 4.0
(byte*) main::screen_mirror#1 screen_mirror zp ZP_WORD:9 44.85714285714286
(byte*) main::screen_mirror#2 screen_mirror zp ZP_WORD:9 213.0
(byte*) main::screen_mirror#3 screen_mirror zp ZP_WORD:9 24.0
(byte*) main::screen_mirror1
(byte*) main::screen_mirror1#1 screen_mirror1 zp ZP_WORD:4 60.599999999999994
(byte*) main::screen_mirror1#2 screen_mirror1 zp ZP_WORD:4 213.0
(byte*~) main::screen_mirror1#3 screen_mirror1 zp ZP_WORD:4 22.0
(label) main::toD0181 (label) main::toD0181
(word~) main::toD0181_$0 (word~) main::toD0181_$0
(number~) main::toD0181_$1 (number~) main::toD0181_$1
@ -160,32 +142,26 @@
(const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) SCREEN#0&(word) $3fff*(byte) 4|>(word)(const byte*) CHARSET#0/(byte) 4&(byte) $f (const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) SCREEN#0&(word) $3fff*(byte) 4|>(word)(const byte*) CHARSET#0/(byte) 4&(byte) $f
(byte*) main::toD0181_screen (byte*) main::toD0181_screen
(byte) main::x (byte) main::x
(byte) main::x#1 x zp ZP_BYTE:3 151.5 (byte) main::x#1 x zp ZP_BYTE:7 101.0
(byte) main::x#2 x zp ZP_BYTE:3 17.823529411764707 (byte) main::x#2 x zp ZP_BYTE:7 26.578947368421055
(byte) main::x1
(byte) main::x1#1 reg byte x 151.5
(byte) main::x1#2 reg byte x 50.5
(byte) main::x2 (byte) main::x2
(byte) main::x2#0 reg byte a 202.0 (byte) main::x2#0 reg byte a 202.0
(byte) main::x3 (byte) main::xb
(byte) main::x3#1 reg byte x 151.5 (byte) main::xb#1 xb zp ZP_BYTE:9 101.0
(byte) main::x3#2 reg byte x 50.5 (byte) main::xb#2 xb zp ZP_BYTE:9 20.2
(byte) main::xd (byte) main::xd
(byte) main::xd#0 reg byte a 303.0 (byte) main::xd#0 reg byte a 303.0
(word) main::xds (word) main::xds
(word) main::xds#0 xds zp ZP_WORD:30 202.0 (word) main::xds#0 xds zp ZP_WORD:27 202.0
(byte) main::y (byte) main::y
(byte) main::y#1 y zp ZP_BYTE:2 16.5 (byte) main::y#1 y zp ZP_BYTE:2 16.5
(byte) main::y#12 y zp ZP_BYTE:2 0.9166666666666667 (byte) main::y#10 y zp ZP_BYTE:2 0.9705882352941178
(byte) main::y1
(byte) main::y1#1 y1 zp ZP_BYTE:6 16.5
(byte) main::y1#4 y1 zp ZP_BYTE:6 3.142857142857143
(byte) main::y2 (byte) main::y2
(byte) main::y2#0 reg byte a 22.0 (byte) main::y2#0 reg byte a 22.0
(byte) main::yd (byte) main::yd
(byte) main::yd#0 reg byte a 33.0 (byte) main::yd#0 reg byte a 33.0
(word) main::yds (word) main::yds
(word) main::yds#0 yds zp ZP_WORD:28 5.6 (word) main::yds#0 yds zp ZP_WORD:25 4.869565217391305
(void*()) malloc((word) malloc::size) (void*()) malloc((word) malloc::size)
(label) malloc::@return (label) malloc::@return
(byte*) malloc::mem (byte*) malloc::mem
@ -196,65 +172,62 @@
(byte~) sqr::$0 reg byte a 4.0 (byte~) sqr::$0 reg byte a 4.0
(label) sqr::@return (label) sqr::@return
(word) sqr::return (word) sqr::return
(word) sqr::return#0 return zp ZP_WORD:30 28.5 (word) sqr::return#0 return zp ZP_WORD:27 28.5
(word) sqr::return#2 return#2 zp ZP_WORD:28 22.0 (word) sqr::return#2 return#2 zp ZP_WORD:25 22.0
(word) sqr::return#3 return zp ZP_WORD:30 202.0 (word) sqr::return#3 return zp ZP_WORD:27 202.0
(byte) sqr::val (byte) sqr::val
(byte) sqr::val#0 reg byte a 22.0 (byte) sqr::val#0 reg byte a 22.0
(byte) sqr::val#1 reg byte a 202.0 (byte) sqr::val#1 reg byte a 202.0
(byte) sqr::val#2 reg byte a 114.0 (byte) sqr::val#2 reg byte a 114.0
(byte()) sqrt((word) sqrt::val) (byte()) sqrt((word) sqrt::val)
(word~) sqrt::$1 $1 zp ZP_WORD:13 2.0 (word~) sqrt::$1 $1 zp ZP_WORD:10 2.0
(word~) sqrt::$3 $3 zp ZP_WORD:13 4.0 (word~) sqrt::$3 $3 zp ZP_WORD:10 4.0
(label) sqrt::@1 (label) sqrt::@1
(label) sqrt::@return (label) sqrt::@return
(word*) sqrt::found (word*) sqrt::found
(word*) sqrt::found#0 found zp ZP_WORD:13 4.0 (word*) sqrt::found#0 found zp ZP_WORD:10 4.0
(byte) sqrt::return (byte) sqrt::return
(byte) sqrt::return#0 reg byte a 34.33333333333333 (byte) sqrt::return#0 reg byte a 34.33333333333333
(byte) sqrt::return#2 reg byte a 202.0 (byte) sqrt::return#2 reg byte a 202.0
(byte) sqrt::sq (byte) sqrt::sq
(word) sqrt::val (word) sqrt::val
(word) sqrt::val#0 val zp ZP_WORD:30 103.0 (word) sqrt::val#0 val zp ZP_WORD:27 103.0
zp ZP_BYTE:2 [ main::y#12 main::y#1 ] zp ZP_BYTE:2 [ main::y#10 main::y#1 ]
zp ZP_WORD:3 [ main::screen_topline#10 main::screen_topline#1 ]
zp ZP_WORD:5 [ main::screen_bottomline#10 main::screen_bottomline#1 ]
reg byte a [ main::yd#0 main::$9 main::$7 ] reg byte a [ main::yd#0 main::$9 main::$7 ]
zp ZP_BYTE:3 [ main::x#2 main::x#1 ] zp ZP_BYTE:7 [ main::x#2 main::x#1 ]
zp ZP_BYTE:9 [ main::xb#2 main::xb#1 ]
reg byte a [ main::xd#0 main::$17 main::$15 ] reg byte a [ main::xd#0 main::$17 main::$15 ]
zp ZP_WORD:4 [ main::screen_mirror1#2 main::screen_mirror1#3 main::screen_mirror1#1 ] zp ZP_WORD:10 [ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$3 sqrt::$1 ]
reg byte x [ main::x1#2 main::x1#1 ]
zp ZP_BYTE:6 [ main::y1#4 main::y1#1 ]
zp ZP_WORD:9 [ main::screen_mirror#2 main::screen_mirror#3 main::screen_mirror#0 main::screen_mirror#1 ]
zp ZP_WORD:11 [ main::screen#8 main::screen#11 main::screen#6 main::screen#12 main::screen#17 main::screen#10 main::screen#1 main::screen#13 ]
reg byte x [ main::x3#2 main::x3#1 ]
zp ZP_WORD:13 [ bsearch16u::return#1 bsearch16u::return#6 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#8 bsearch16u::$2 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$3 sqrt::$1 ]
reg byte x [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] reg byte x [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
reg byte a [ sqr::val#2 sqr::val#0 sqr::val#1 ] reg byte a [ sqr::val#2 sqr::val#0 sqr::val#1 ]
zp ZP_WORD:15 [ init_squares::sqr#2 init_squares::sqr#1 ] zp ZP_WORD:12 [ init_squares::sqr#2 init_squares::sqr#1 ]
zp ZP_WORD:17 [ init_squares::squares#2 init_squares::squares#1 ] zp ZP_WORD:14 [ init_squares::squares#2 init_squares::squares#1 ]
reg byte x [ init_squares::i#2 init_squares::i#1 ] reg byte x [ init_squares::i#2 init_squares::i#1 ]
zp ZP_WORD:19 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] zp ZP_WORD:16 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ]
zp ZP_BYTE:21 [ init_font_hex::c#6 init_font_hex::c#1 ] zp ZP_BYTE:18 [ init_font_hex::c#6 init_font_hex::c#1 ]
zp ZP_WORD:22 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] zp ZP_WORD:19 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ]
zp ZP_WORD:24 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] zp ZP_WORD:21 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ]
zp ZP_BYTE:26 [ init_font_hex::c1#4 init_font_hex::c1#1 ] zp ZP_BYTE:23 [ init_font_hex::c1#4 init_font_hex::c1#1 ]
reg byte x [ init_font_hex::i#2 init_font_hex::i#1 ] reg byte x [ init_font_hex::i#2 init_font_hex::i#1 ]
zp ZP_BYTE:27 [ init_font_hex::idx#5 init_font_hex::idx#2 ] zp ZP_BYTE:24 [ init_font_hex::idx#5 init_font_hex::idx#2 ]
reg byte a [ main::y2#0 ] reg byte a [ main::y2#0 ]
zp ZP_WORD:28 [ sqr::return#2 main::yds#0 ] zp ZP_WORD:25 [ sqr::return#2 main::yds#0 ]
reg byte a [ main::x2#0 ] reg byte a [ main::x2#0 ]
zp ZP_WORD:30 [ sqr::return#3 main::xds#0 sqr::return#0 main::ds#0 sqrt::val#0 bsearch16u::key#0 ] zp ZP_WORD:27 [ sqr::return#3 main::xds#0 sqr::return#0 main::ds#0 sqrt::val#0 bsearch16u::key#0 ]
reg byte a [ sqrt::return#2 ] reg byte a [ sqrt::return#2 ]
reg byte a [ main::d#0 ] reg byte a [ main::d#0 ]
reg byte a [ sqrt::return#0 ] reg byte a [ sqrt::return#0 ]
reg byte a [ bsearch16u::$6 ] reg byte a [ bsearch16u::$6 ]
reg byte a [ bsearch16u::$16 ] reg byte a [ bsearch16u::$16 ]
zp ZP_WORD:32 [ bsearch16u::pivot#0 ] zp ZP_WORD:29 [ bsearch16u::pivot#0 ]
zp ZP_WORD:34 [ bsearch16u::result#0 ] zp ZP_WORD:31 [ bsearch16u::result#0 ]
reg byte a [ sqr::$0 ] reg byte a [ sqr::$0 ]
reg byte a [ init_squares::$3 ] reg byte a [ init_squares::$3 ]
reg byte a [ init_squares::$4 ] reg byte a [ init_squares::$4 ]
zp ZP_BYTE:36 [ init_font_hex::$0 ] zp ZP_BYTE:33 [ init_font_hex::$0 ]
reg byte a [ init_font_hex::$1 ] reg byte a [ init_font_hex::$1 ]
reg byte a [ init_font_hex::$2 ] reg byte a [ init_font_hex::$2 ]
reg byte y [ init_font_hex::idx#3 ] reg byte y [ init_font_hex::idx#3 ]