1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2025-01-13 18:30:21 +00:00

Added more fragments and optimized others.

This commit is contained in:
jespergravgaard 2020-08-01 03:01:00 +02:00
parent e8084a4d27
commit 9ae695ba60
34 changed files with 18547 additions and 1033 deletions

View File

@ -1,4 +1,4 @@
//KICKC FRAGMENT CACHE 15196e00e6
//KICKC FRAGMENT CACHE 15e646b5c5
//FRAGMENT vbuzz=vbuc1
ldz #{c1}
//FRAGMENT vbuzz_lt_vbuc1_then_la1

View File

@ -1,4 +1,4 @@
//KICKC FRAGMENT CACHE 15196e00e6
//KICKC FRAGMENT CACHE 15e646b5c5
//FRAGMENT vduz1=vduc1
lda #<{c1}
sta {z1}

View File

@ -1,4 +1,4 @@
//KICKC FRAGMENT CACHE 15196e00e6
//KICKC FRAGMENT CACHE 15e646b5c5
//FRAGMENT vbuz1=vbuc1
lda #{c1}
sta {z1}

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
//KICKC FRAGMENT CACHE 15196e00e6
//KICKC FRAGMENT CACHE 15e646b5c5
//FRAGMENT vbuz1=_deref_pbuc1
lda {c1}
sta {z1}

View File

@ -0,0 +1 @@
ldz {m1}

View File

@ -0,0 +1,3 @@
stz $ff
sec
sbc $ff

View File

@ -0,0 +1,3 @@
stz $ff
clc
adc $ff

View File

@ -0,0 +1 @@
ldx {m1}

View File

@ -0,0 +1 @@
ldy {m1}

View File

@ -36,7 +36,7 @@ public class AsmFragmentClobber implements Comparable<AsmFragmentClobber> {
}
public boolean isClobberZ() {
return clobberY;
return clobberZ;
}
@Override

View File

@ -67,6 +67,11 @@ public class TestPrograms {
compileAndCompare("cpu-45gs02.c");
}
@Test
public void testCpu65CE02EightQueens() throws IOException, URISyntaxException {
compileAndCompare("cpu-65ce02-eightqueens.c");
}
@Test
public void testCpu65CE02b() throws IOException, URISyntaxException {
compileAndCompare("cpu-65ce02-b.c");

View File

@ -0,0 +1,108 @@
// N Queens Problem in C Using Backtracking
//
// N Queens Problem is a famous puzzle in which n-queens are to be placed on a nxn chess board such that no two queens are in the same row, column or diagonal.
//
// This is an iterative solution.
#pragma cpu(csg65ce02)
#include<stdio.h>
#define QUEENS 8
#define PRINT_SOLUTIONS
// The board. board[i] holds the column position of the queen on row i.
char board[20];
// The number of found solutions
unsigned long count = 0;
void main() {
clrscr();
printf(" - n queens problem using backtracking -");
printf("\nnumber of queens:%u",QUEENS);
queens();
printf("\n\nsolutions: %lu\n",count);
}
// Generates all valid placements of queens on a NxN board without recursion
// Works exactly like the recursive solution by generating all legal placements af a queen for a specific row taking into consideration the queens already placed on the rows below
// and then moving on to generating all legal placements on the rows above.
// In practice this works like a depth first tree search where the level in the tree is the row on the board and each branch in the tree is the legal placement of a queen on that row.
// The solution uses the board itself as a "cursor" moving through all possibilities
// When all columns on a row is exhausted move back down to the lower level and move forward one position until we are done with the last position on the first row
void queens() {
// The current row where the queen is moving
char row = 1;
while(1) {
// Move the queen forward on the current row
board[row]++;
if(board[row]==QUEENS+1) {
// We moved past the end of the row - reset position and go down to the lower row
board[row] = 0;
if(row==1)
// We are done - exit the search loop!
break;
else
// Move down one row
row--;
} else {
// check if the current position on row 1-row is legal
if(legal(row, board[row])) {
// position is legal - move up to the next row
if(row==QUEENS) {
// We have a complete legal board - print it - and move forward on top row!
++count;
#ifdef PRINT_SOLUTIONS
print();
#endif
} else {
// Move up to the next row
row++;
}
}
}
}
}
// Checks is a placement of the queen on the board is legal.
// Checks the passed (row, column) against all queens placed on the board on lower rows.
// If no conflict for desired position returns 1 otherwise returns 0
char legal(char row,char column) {
for(char i=1;i<=row-1;++i) {
if(board[i]==column)
// The same column is a conflict.
return 0;
else
if(diff(board[i],column)==diff(i,row))
// The same diagonal is a conflict.
return 0;
}
// Placement is legal
return 1;
}
// Find the absolute difference between two unsigned chars
inline char diff(char a, char b) {
if(a<b)
return b-a;
else
return a-b;
}
// Print the board with a legal placement.
void print() {
gotoxy(0,5);
printf("\n#%lu:\n ",count);
for(char i=1;i<=QUEENS;++i)
printf("%x",i);
for(char i=1;i<=QUEENS;++i) {
printf("\n%x",i);
for(char j=1;j<=QUEENS;++j) {
if(board[i]==j)
printf("Q");
else
printf("-");
}
}
}

View File

@ -5108,11 +5108,9 @@ Statement [9] (word) main::y_pos_coarse_old#0 ← (word) y_pos_coarse#16 [ scree
Statement [11] (word~) main::$5 ← (word) main::y_pos_coarse_old#0 - (word) y_pos_coarse#16 [ screen_buffer#12 main::x_pos_coarse_old#0 x_pos_coarse#17 y_pos_coarse#16 main::$5 y_pos_fine#12 x_pos_fine#12 x_sin_idx#14 y_sin_idx#13 ] ( [ screen_buffer#12 main::x_pos_coarse_old#0 x_pos_coarse#17 y_pos_coarse#16 main::$5 y_pos_fine#12 x_pos_fine#12 x_sin_idx#14 y_sin_idx#13 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:83 [ y_pos_fine#12 ]
Removing always clobbered register reg byte a as potential for zp[1]:75 [ x_pos_fine#12 ]
Statement [12] (signed byte) main::y_movement#0 ← (signed byte)(word~) main::$5 [ screen_buffer#12 main::x_pos_coarse_old#0 x_pos_coarse#17 y_pos_coarse#16 main::y_movement#0 y_pos_fine#12 x_pos_fine#12 x_sin_idx#14 y_sin_idx#13 ] ( [ screen_buffer#12 main::x_pos_coarse_old#0 x_pos_coarse#17 y_pos_coarse#16 main::y_movement#0 y_pos_fine#12 x_pos_fine#12 x_sin_idx#14 y_sin_idx#13 ] { } ) always clobbers reg byte a
Statement [17] (word~) main::$9 ← (word) main::x_pos_coarse_old#0 - (word) x_pos_coarse#17 [ screen_buffer#12 x_pos_coarse#17 y_pos_coarse#16 main::y_movement#0 main::movement#4 main::$9 y_pos_fine#12 x_pos_fine#12 x_sin_idx#14 y_sin_idx#13 ] ( [ screen_buffer#12 x_pos_coarse#17 y_pos_coarse#16 main::y_movement#0 main::movement#4 main::$9 y_pos_fine#12 x_pos_fine#12 x_sin_idx#14 y_sin_idx#13 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:33 [ main::y_movement#0 ]
Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::movement#4 ]
Statement [18] (signed byte) main::x_movement#0 ← (signed byte)(word~) main::$9 [ screen_buffer#12 x_pos_coarse#17 y_pos_coarse#16 main::y_movement#0 main::movement#4 main::x_movement#0 y_pos_fine#12 x_pos_fine#12 x_sin_idx#14 y_sin_idx#13 ] ( [ screen_buffer#12 x_pos_coarse#17 y_pos_coarse#16 main::y_movement#0 main::movement#4 main::x_movement#0 y_pos_fine#12 x_pos_fine#12 x_sin_idx#14 y_sin_idx#13 ] { } ) always clobbers reg byte a
Statement [19] (signed byte) main::movement#3 ← (signed byte) main::movement#4 - (signed byte) main::x_movement#0 [ screen_buffer#12 x_pos_coarse#17 y_pos_coarse#16 main::y_movement#0 main::x_movement#0 main::movement#3 y_pos_fine#12 x_pos_fine#12 x_sin_idx#14 y_sin_idx#13 ] ( [ screen_buffer#12 x_pos_coarse#17 y_pos_coarse#16 main::y_movement#0 main::x_movement#0 main::movement#3 y_pos_fine#12 x_pos_fine#12 x_sin_idx#14 y_sin_idx#13 ] { } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:36 [ main::x_movement#0 ]
Statement [24] (byte*) main::screen_active#0 ← (byte*~) main::$13 + (signed byte) main::movement#3 [ screen_buffer#12 x_pos_coarse#17 y_pos_coarse#16 main::y_movement#0 main::x_movement#0 main::screen_active#0 y_pos_fine#12 x_pos_fine#12 x_sin_idx#14 y_sin_idx#13 ] ( [ screen_buffer#12 x_pos_coarse#17 y_pos_coarse#16 main::y_movement#0 main::x_movement#0 main::screen_active#0 y_pos_fine#12 x_pos_fine#12 x_sin_idx#14 y_sin_idx#13 ] { } ) always clobbers reg byte a
@ -5202,9 +5200,7 @@ Statement [5] *((byte*)(const nomodify struct MOS6569_VICII*) VICII+(const byte)
Statement [8] (word) main::x_pos_coarse_old#0 ← (word) x_pos_coarse#17 [ screen_buffer#12 main::x_pos_coarse_old#0 y_pos_coarse#16 x_sin_idx#14 y_sin_idx#13 ] ( [ screen_buffer#12 main::x_pos_coarse_old#0 y_pos_coarse#16 x_sin_idx#14 y_sin_idx#13 ] { { x_sin_idx#12 = x_sin_idx#14 } { y_sin_idx#12 = y_sin_idx#13 } } ) always clobbers reg byte a
Statement [9] (word) main::y_pos_coarse_old#0 ← (word) y_pos_coarse#16 [ screen_buffer#12 main::x_pos_coarse_old#0 main::y_pos_coarse_old#0 x_sin_idx#14 y_sin_idx#13 ] ( [ screen_buffer#12 main::x_pos_coarse_old#0 main::y_pos_coarse_old#0 x_sin_idx#14 y_sin_idx#13 ] { { x_sin_idx#12 = x_sin_idx#14 } { y_sin_idx#12 = y_sin_idx#13 } } ) always clobbers reg byte a
Statement [11] (word~) main::$5 ← (word) main::y_pos_coarse_old#0 - (word) y_pos_coarse#16 [ screen_buffer#12 main::x_pos_coarse_old#0 x_pos_coarse#17 y_pos_coarse#16 main::$5 y_pos_fine#12 x_pos_fine#12 x_sin_idx#14 y_sin_idx#13 ] ( [ screen_buffer#12 main::x_pos_coarse_old#0 x_pos_coarse#17 y_pos_coarse#16 main::$5 y_pos_fine#12 x_pos_fine#12 x_sin_idx#14 y_sin_idx#13 ] { } ) always clobbers reg byte a
Statement [12] (signed byte) main::y_movement#0 ← (signed byte)(word~) main::$5 [ screen_buffer#12 main::x_pos_coarse_old#0 x_pos_coarse#17 y_pos_coarse#16 main::y_movement#0 y_pos_fine#12 x_pos_fine#12 x_sin_idx#14 y_sin_idx#13 ] ( [ screen_buffer#12 main::x_pos_coarse_old#0 x_pos_coarse#17 y_pos_coarse#16 main::y_movement#0 y_pos_fine#12 x_pos_fine#12 x_sin_idx#14 y_sin_idx#13 ] { } ) always clobbers reg byte a
Statement [17] (word~) main::$9 ← (word) main::x_pos_coarse_old#0 - (word) x_pos_coarse#17 [ screen_buffer#12 x_pos_coarse#17 y_pos_coarse#16 main::y_movement#0 main::movement#4 main::$9 y_pos_fine#12 x_pos_fine#12 x_sin_idx#14 y_sin_idx#13 ] ( [ screen_buffer#12 x_pos_coarse#17 y_pos_coarse#16 main::y_movement#0 main::movement#4 main::$9 y_pos_fine#12 x_pos_fine#12 x_sin_idx#14 y_sin_idx#13 ] { } ) always clobbers reg byte a
Statement [18] (signed byte) main::x_movement#0 ← (signed byte)(word~) main::$9 [ screen_buffer#12 x_pos_coarse#17 y_pos_coarse#16 main::y_movement#0 main::movement#4 main::x_movement#0 y_pos_fine#12 x_pos_fine#12 x_sin_idx#14 y_sin_idx#13 ] ( [ screen_buffer#12 x_pos_coarse#17 y_pos_coarse#16 main::y_movement#0 main::movement#4 main::x_movement#0 y_pos_fine#12 x_pos_fine#12 x_sin_idx#14 y_sin_idx#13 ] { } ) always clobbers reg byte a
Statement [19] (signed byte) main::movement#3 ← (signed byte) main::movement#4 - (signed byte) main::x_movement#0 [ screen_buffer#12 x_pos_coarse#17 y_pos_coarse#16 main::y_movement#0 main::x_movement#0 main::movement#3 y_pos_fine#12 x_pos_fine#12 x_sin_idx#14 y_sin_idx#13 ] ( [ screen_buffer#12 x_pos_coarse#17 y_pos_coarse#16 main::y_movement#0 main::x_movement#0 main::movement#3 y_pos_fine#12 x_pos_fine#12 x_sin_idx#14 y_sin_idx#13 ] { } ) always clobbers reg byte a
Statement [24] (byte*) main::screen_active#0 ← (byte*~) main::$13 + (signed byte) main::movement#3 [ screen_buffer#12 x_pos_coarse#17 y_pos_coarse#16 main::y_movement#0 main::x_movement#0 main::screen_active#0 y_pos_fine#12 x_pos_fine#12 x_sin_idx#14 y_sin_idx#13 ] ( [ screen_buffer#12 x_pos_coarse#17 y_pos_coarse#16 main::y_movement#0 main::x_movement#0 main::screen_active#0 y_pos_fine#12 x_pos_fine#12 x_sin_idx#14 y_sin_idx#13 ] { } ) always clobbers reg byte a
Statement [28] (byte*) screencpy::dst#0 ← (byte*) main::screen_hidden#0 [ screen_buffer#12 x_pos_coarse#17 y_pos_coarse#16 main::y_movement#0 main::x_movement#0 main::screen_active#0 main::screen_hidden#0 screencpy::dst#0 y_pos_fine#12 x_pos_fine#12 x_sin_idx#14 y_sin_idx#13 ] ( [ screen_buffer#12 x_pos_coarse#17 y_pos_coarse#16 main::y_movement#0 main::x_movement#0 main::screen_active#0 main::screen_hidden#0 screencpy::dst#0 y_pos_fine#12 x_pos_fine#12 x_sin_idx#14 y_sin_idx#13 ] { { screencpy::dst#0 = main::screen_hidden#0 } { screencpy::src#0 = main::screen_active#0 } } ) always clobbers reg byte a

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,796 @@
(void()) __start()
__start: scope:[__start] from
[0] phi()
to:__start::__init1
__start::__init1: scope:[__start] from __start
[1] (byte) conio_cursor_x ← (byte) 0
[2] (byte) conio_cursor_y ← (byte) 0
[3] (byte*) conio_line_text ← (const nomodify byte*) DEFAULT_SCREEN
[4] (byte*) conio_line_color ← (const nomodify byte*) COLORRAM
to:__start::@1
__start::@1: scope:[__start] from __start::__init1
[5] phi()
[6] call main
to:__start::@return
__start::@return: scope:[__start] from __start::@1
[7] return
to:@return
(void()) main()
main: scope:[main] from __start::@1
[8] phi()
[9] call clrscr
to:main::@1
main::@1: scope:[main] from main
[10] phi()
[11] call cputs
to:main::@2
main::@2: scope:[main] from main::@1
[12] phi()
[13] call cputs
to:main::@3
main::@3: scope:[main] from main::@2
[14] phi()
[15] call printf_uint
to:main::@4
main::@4: scope:[main] from main::@3
[16] phi()
[17] call queens
to:main::@5
main::@5: scope:[main] from main::@4
[18] phi()
[19] call cputs
to:main::@6
main::@6: scope:[main] from main::@5
[20] (dword) printf_ulong::uvalue#0 ← (dword) count#10
[21] call printf_ulong
to:main::@7
main::@7: scope:[main] from main::@6
[22] phi()
[23] call cputs
to:main::@return
main::@return: scope:[main] from main::@7
[24] return
to:@return
(void()) clrscr()
clrscr: scope:[clrscr] from main
[25] phi()
to:clrscr::@1
clrscr::@1: scope:[clrscr] from clrscr clrscr::@5
[26] (byte*) clrscr::line_cols#5 ← phi( clrscr/(const nomodify byte*) COLORRAM clrscr::@5/(byte*) clrscr::line_cols#1 )
[26] (byte*) clrscr::line_text#5 ← phi( clrscr/(const nomodify byte*) DEFAULT_SCREEN clrscr::@5/(byte*) clrscr::line_text#1 )
[26] (byte) clrscr::l#2 ← phi( clrscr/(byte) 0 clrscr::@5/(byte) clrscr::l#1 )
[27] if((byte) clrscr::l#2<(byte) $19) goto clrscr::@3
to:clrscr::@2
clrscr::@2: scope:[clrscr] from clrscr::@1
[28] (byte) conio_cursor_x ← (byte) 0
[29] (byte) conio_cursor_y ← (byte) 0
[30] (byte*) conio_line_text ← (const nomodify byte*) DEFAULT_SCREEN
[31] (byte*) conio_line_color ← (const nomodify byte*) COLORRAM
to:clrscr::@return
clrscr::@return: scope:[clrscr] from clrscr::@2
[32] return
to:@return
clrscr::@3: scope:[clrscr] from clrscr::@1 clrscr::@4
[33] (byte) clrscr::c#2 ← phi( clrscr::@1/(byte) 0 clrscr::@4/(byte) clrscr::c#1 )
[34] if((byte) clrscr::c#2<(byte) $28) goto clrscr::@4
to:clrscr::@5
clrscr::@5: scope:[clrscr] from clrscr::@3
[35] (byte*) clrscr::line_text#1 ← (byte*) clrscr::line_text#5 + (byte) $28
[36] (byte*) clrscr::line_cols#1 ← (byte*) clrscr::line_cols#5 + (byte) $28
[37] (byte) clrscr::l#1 ← ++ (byte) clrscr::l#2
to:clrscr::@1
clrscr::@4: scope:[clrscr] from clrscr::@3
[38] *((byte*) clrscr::line_text#5 + (byte) clrscr::c#2) ← (byte) ' '
[39] *((byte*) clrscr::line_cols#5 + (byte) clrscr::c#2) ← (const nomodify byte) LIGHT_BLUE
[40] (byte) clrscr::c#1 ← ++ (byte) clrscr::c#2
to:clrscr::@3
(void()) cputs((to_nomodify byte*) cputs::s)
cputs: scope:[cputs] from main::@1 main::@2 main::@5 main::@7 print::@10 print::@11 print::@13 print::@4 print::@8 printf_number_buffer::@5
[41] (to_nomodify byte*) cputs::s#12 ← phi( main::@1/(const byte*) main::s main::@2/(const byte*) main::s1 main::@5/(const byte*) main::s2 main::@7/(const byte*) s3 print::@10/(const byte*) print::s4 print::@11/(const byte*) print::s print::@13/(const byte*) print::s1 print::@4/(const byte*) s3 print::@8/(const byte*) print::s3 printf_number_buffer::@5/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS )
to:cputs::@1
cputs::@1: scope:[cputs] from cputs cputs::@2
[42] (to_nomodify byte*) cputs::s#11 ← phi( cputs/(to_nomodify byte*) cputs::s#12 cputs::@2/(to_nomodify byte*) cputs::s#0 )
[43] (byte) cputs::c#1 ← *((to_nomodify byte*) cputs::s#11)
[44] (to_nomodify byte*) cputs::s#0 ← ++ (to_nomodify byte*) cputs::s#11
[45] if((byte) 0!=(byte) cputs::c#1) goto cputs::@2
to:cputs::@return
cputs::@return: scope:[cputs] from cputs::@1
[46] return
to:@return
cputs::@2: scope:[cputs] from cputs::@1
[47] (byte) cputc::c#0 ← (byte) cputs::c#1
[48] call cputc
to:cputs::@1
(void()) printf_uint((word) printf_uint::uvalue , (byte) printf_uint::format_min_length , (byte) printf_uint::format_justify_left , (byte) printf_uint::format_sign_always , (byte) printf_uint::format_zero_padding , (byte) printf_uint::format_upper_case , (byte) printf_uint::format_radix)
printf_uint: scope:[printf_uint] from main::@3
[49] phi()
to:printf_uint::@1
printf_uint::@1: scope:[printf_uint] from printf_uint
[50] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0
[51] call utoa
to:printf_uint::@2
printf_uint::@2: scope:[printf_uint] from printf_uint::@1
[52] (byte) printf_number_buffer::buffer_sign#1 ← *((byte*)&(struct printf_buffer_number) printf_buffer)
[53] call printf_number_buffer
to:printf_uint::@return
printf_uint::@return: scope:[printf_uint] from printf_uint::@2
[54] return
to:@return
(void()) queens()
queens: scope:[queens] from main::@4
[55] phi()
to:queens::@1
queens::@1: scope:[queens] from queens queens::@4 queens::@7 queens::@8 queens::@9
[56] (dword) count#10 ← phi( queens/(dword) 0 queens::@4/(dword) count#2 queens::@7/(dword) count#10 queens::@8/(dword) count#10 queens::@9/(dword) count#10 )
[56] (byte) queens::row#10 ← phi( queens/(byte) 1 queens::@4/(byte) queens::row#10 queens::@7/(byte) queens::row#1 queens::@8/(byte) queens::row#2 queens::@9/(byte) queens::row#10 )
to:queens::@2
queens::@2: scope:[queens] from queens::@1
[57] *((const byte*) board + (byte) queens::row#10) ← ++ *((const byte*) board + (byte) queens::row#10)
[58] if(*((const byte*) board + (byte) queens::row#10)==(byte)(number) 8+(number) 1) goto queens::@3
to:queens::@5
queens::@5: scope:[queens] from queens::@2
[59] (byte) legal::row#0 ← (byte) queens::row#10
[60] (byte) legal::column#0 ← *((const byte*) board + (byte) queens::row#10)
[61] call legal
[62] (byte) legal::return#0 ← (byte) legal::return#4
to:queens::@9
queens::@9: scope:[queens] from queens::@5
[63] (byte~) queens::$2 ← (byte) legal::return#0
[64] if((byte) 0==(byte~) queens::$2) goto queens::@1
to:queens::@6
queens::@6: scope:[queens] from queens::@9
[65] if((byte) queens::row#10==(byte) 8) goto queens::@4
to:queens::@7
queens::@7: scope:[queens] from queens::@6
[66] (byte) queens::row#1 ← ++ (byte) queens::row#10
to:queens::@1
queens::@4: scope:[queens] from queens::@6
[67] (dword) count#2 ← ++ (dword) count#10
[68] call print
to:queens::@1
queens::@3: scope:[queens] from queens::@2
[69] *((const byte*) board + (byte) queens::row#10) ← (byte) 0
[70] if((byte) queens::row#10==(byte) 1) goto queens::@return
to:queens::@8
queens::@8: scope:[queens] from queens::@3
[71] (byte) queens::row#2 ← -- (byte) queens::row#10
to:queens::@1
queens::@return: scope:[queens] from queens::@3
[72] return
to:@return
(void()) printf_ulong((dword) printf_ulong::uvalue , (byte) printf_ulong::format_min_length , (byte) printf_ulong::format_justify_left , (byte) printf_ulong::format_sign_always , (byte) printf_ulong::format_zero_padding , (byte) printf_ulong::format_upper_case , (byte) printf_ulong::format_radix)
printf_ulong: scope:[printf_ulong] from main::@6 print::@12
[73] (dword) printf_ulong::uvalue#2 ← phi( main::@6/(dword) printf_ulong::uvalue#0 print::@12/(dword) printf_ulong::uvalue#1 )
to:printf_ulong::@1
printf_ulong::@1: scope:[printf_ulong] from printf_ulong
[74] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0
[75] (dword) ultoa::value#1 ← (dword) printf_ulong::uvalue#2
[76] call ultoa
to:printf_ulong::@2
printf_ulong::@2: scope:[printf_ulong] from printf_ulong::@1
[77] (byte) printf_number_buffer::buffer_sign#0 ← *((byte*)&(struct printf_buffer_number) printf_buffer)
[78] call printf_number_buffer
to:printf_ulong::@return
printf_ulong::@return: scope:[printf_ulong] from printf_ulong::@2
[79] return
to:@return
(void()) cputc((byte) cputc::c)
cputc: scope:[cputc] from cputs::@2 printf_number_buffer::@9 printf_padding::@2
[80] (byte) cputc::c#3 ← phi( cputs::@2/(byte) cputc::c#0 printf_number_buffer::@9/(byte) cputc::c#2 printf_padding::@2/(byte) cputc::c#1 )
[81] if((byte) cputc::c#3==(byte) '
') goto cputc::@1
to:cputc::@2
cputc::@2: scope:[cputc] from cputc
[82] *((byte*) conio_line_text + (byte) conio_cursor_x) ← (byte) cputc::c#3
[83] *((byte*) conio_line_color + (byte) conio_cursor_x) ← (const nomodify byte) LIGHT_BLUE
[84] (byte) conio_cursor_x ← ++ (byte) conio_cursor_x
[85] if((byte) conio_cursor_x!=(byte) $28) goto cputc::@return
to:cputc::@3
cputc::@3: scope:[cputc] from cputc::@2
[86] phi()
[87] call cputln
to:cputc::@return
cputc::@return: scope:[cputc] from cputc::@1 cputc::@2 cputc::@3
[88] return
to:@return
cputc::@1: scope:[cputc] from cputc
[89] phi()
[90] call cputln
to:cputc::@return
(void()) utoa((word) utoa::value , (byte*) utoa::buffer , (byte) utoa::radix)
utoa: scope:[utoa] from printf_uint::@1
[91] phi()
to:utoa::@1
utoa::@1: scope:[utoa] from utoa utoa::@4
[92] (byte*) utoa::buffer#11 ← phi( utoa::@4/(byte*) utoa::buffer#14 utoa/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS )
[92] (byte) utoa::started#2 ← phi( utoa::@4/(byte) utoa::started#4 utoa/(byte) 0 )
[92] (word) utoa::value#2 ← phi( utoa::@4/(word) utoa::value#6 utoa/(const word) printf_uint::uvalue#0 )
[92] (byte) utoa::digit#2 ← phi( utoa::@4/(byte) utoa::digit#1 utoa/(byte) 0 )
[93] if((byte) utoa::digit#2<(const byte) utoa::max_digits#1-(byte) 1) goto utoa::@2
to:utoa::@3
utoa::@3: scope:[utoa] from utoa::@1
[94] (byte~) utoa::$11 ← (byte)(word) utoa::value#2
[95] *((byte*) utoa::buffer#11) ← *((const byte*) DIGITS + (byte~) utoa::$11)
[96] (byte*) utoa::buffer#3 ← ++ (byte*) utoa::buffer#11
[97] *((byte*) utoa::buffer#3) ← (byte) 0
to:utoa::@return
utoa::@return: scope:[utoa] from utoa::@3
[98] return
to:@return
utoa::@2: scope:[utoa] from utoa::@1
[99] (byte~) utoa::$10 ← (byte) utoa::digit#2 << (byte) 1
[100] (word) utoa::digit_value#0 ← *((const word*) RADIX_DECIMAL_VALUES + (byte~) utoa::$10)
[101] if((byte) 0!=(byte) utoa::started#2) goto utoa::@5
to:utoa::@7
utoa::@7: scope:[utoa] from utoa::@2
[102] if((word) utoa::value#2>=(word) utoa::digit_value#0) goto utoa::@5
to:utoa::@4
utoa::@4: scope:[utoa] from utoa::@6 utoa::@7
[103] (byte*) utoa::buffer#14 ← phi( utoa::@7/(byte*) utoa::buffer#11 utoa::@6/(byte*) utoa::buffer#4 )
[103] (byte) utoa::started#4 ← phi( utoa::@7/(byte) utoa::started#2 utoa::@6/(byte) 1 )
[103] (word) utoa::value#6 ← phi( utoa::@7/(word) utoa::value#2 utoa::@6/(word) utoa::value#0 )
[104] (byte) utoa::digit#1 ← ++ (byte) utoa::digit#2
to:utoa::@1
utoa::@5: scope:[utoa] from utoa::@2 utoa::@7
[105] (byte*) utoa_append::buffer#0 ← (byte*) utoa::buffer#11
[106] (word) utoa_append::value#0 ← (word) utoa::value#2
[107] (word) utoa_append::sub#0 ← (word) utoa::digit_value#0
[108] call utoa_append
[109] (word) utoa_append::return#0 ← (word) utoa_append::value#2
to:utoa::@6
utoa::@6: scope:[utoa] from utoa::@5
[110] (word) utoa::value#0 ← (word) utoa_append::return#0
[111] (byte*) utoa::buffer#4 ← ++ (byte*) utoa::buffer#11
to:utoa::@4
(void()) printf_number_buffer((byte) printf_number_buffer::buffer_sign , (byte*) printf_number_buffer::buffer_digits , (byte) printf_number_buffer::format_min_length , (byte) printf_number_buffer::format_justify_left , (byte) printf_number_buffer::format_sign_always , (byte) printf_number_buffer::format_zero_padding , (byte) printf_number_buffer::format_upper_case , (byte) printf_number_buffer::format_radix)
printf_number_buffer: scope:[printf_number_buffer] from printf_uchar::@2 printf_uint::@2 printf_ulong::@2
[112] (byte) printf_number_buffer::format_upper_case#10 ← phi( printf_uchar::@2/(byte) 0 printf_uint::@2/(const byte) printf_uint::format_upper_case#0 printf_ulong::@2/(byte) 0 )
[112] (byte) printf_number_buffer::buffer_sign#10 ← phi( printf_uchar::@2/(byte) printf_number_buffer::buffer_sign#2 printf_uint::@2/(byte) printf_number_buffer::buffer_sign#1 printf_ulong::@2/(byte) printf_number_buffer::buffer_sign#0 )
[112] (byte) printf_number_buffer::format_zero_padding#10 ← phi( printf_uchar::@2/(byte) 0 printf_uint::@2/(const byte) printf_uint::format_zero_padding#0 printf_ulong::@2/(byte) 0 )
[112] (byte) printf_number_buffer::format_justify_left#10 ← phi( printf_uchar::@2/(byte) 0 printf_uint::@2/(const byte) printf_uint::format_justify_left#0 printf_ulong::@2/(byte) 0 )
[112] (byte) printf_number_buffer::format_min_length#3 ← phi( printf_uchar::@2/(byte) 0 printf_uint::@2/(const byte) printf_uint::format_min_length#0 printf_ulong::@2/(byte) 0 )
[113] if((byte) 0==(byte) printf_number_buffer::format_min_length#3) goto printf_number_buffer::@1
to:printf_number_buffer::@6
printf_number_buffer::@6: scope:[printf_number_buffer] from printf_number_buffer
[114] phi()
[115] call strlen
[116] (word) strlen::return#2 ← (word) strlen::len#2
to:printf_number_buffer::@14
printf_number_buffer::@14: scope:[printf_number_buffer] from printf_number_buffer::@6
[117] (word~) printf_number_buffer::$19 ← (word) strlen::return#2
[118] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19
[119] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@13
to:printf_number_buffer::@7
printf_number_buffer::@7: scope:[printf_number_buffer] from printf_number_buffer::@14
[120] (signed byte) printf_number_buffer::len#1 ← ++ (signed byte) printf_number_buffer::len#0
to:printf_number_buffer::@13
printf_number_buffer::@13: scope:[printf_number_buffer] from printf_number_buffer::@14 printf_number_buffer::@7
[121] (signed byte) printf_number_buffer::len#2 ← phi( printf_number_buffer::@14/(signed byte) printf_number_buffer::len#0 printf_number_buffer::@7/(signed byte) printf_number_buffer::len#1 )
[122] (signed byte) printf_number_buffer::padding#1 ← (signed byte)(byte) printf_number_buffer::format_min_length#3 - (signed byte) printf_number_buffer::len#2
[123] if((signed byte) printf_number_buffer::padding#1>=(signed byte) 0) goto printf_number_buffer::@21
to:printf_number_buffer::@1
printf_number_buffer::@21: scope:[printf_number_buffer] from printf_number_buffer::@13
[124] phi()
to:printf_number_buffer::@1
printf_number_buffer::@1: scope:[printf_number_buffer] from printf_number_buffer printf_number_buffer::@13 printf_number_buffer::@21
[125] (signed byte) printf_number_buffer::padding#10 ← phi( printf_number_buffer/(signed byte) 0 printf_number_buffer::@21/(signed byte) printf_number_buffer::padding#1 printf_number_buffer::@13/(signed byte) 0 )
[126] if((byte) 0!=(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@2
to:printf_number_buffer::@17
printf_number_buffer::@17: scope:[printf_number_buffer] from printf_number_buffer::@1
[127] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@2
to:printf_number_buffer::@16
printf_number_buffer::@16: scope:[printf_number_buffer] from printf_number_buffer::@17
[128] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@8
to:printf_number_buffer::@2
printf_number_buffer::@8: scope:[printf_number_buffer] from printf_number_buffer::@16
[129] (byte) printf_padding::length#0 ← (byte)(signed byte) printf_number_buffer::padding#10
[130] call printf_padding
to:printf_number_buffer::@2
printf_number_buffer::@2: scope:[printf_number_buffer] from printf_number_buffer::@1 printf_number_buffer::@16 printf_number_buffer::@17 printf_number_buffer::@8
[131] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@3
to:printf_number_buffer::@9
printf_number_buffer::@9: scope:[printf_number_buffer] from printf_number_buffer::@2
[132] (byte) cputc::c#2 ← (byte) printf_number_buffer::buffer_sign#10
[133] call cputc
to:printf_number_buffer::@3
printf_number_buffer::@3: scope:[printf_number_buffer] from printf_number_buffer::@2 printf_number_buffer::@9
[134] if((byte) 0==(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@4
to:printf_number_buffer::@18
printf_number_buffer::@18: scope:[printf_number_buffer] from printf_number_buffer::@3
[135] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@10
to:printf_number_buffer::@4
printf_number_buffer::@10: scope:[printf_number_buffer] from printf_number_buffer::@18
[136] (byte) printf_padding::length#1 ← (byte)(signed byte) printf_number_buffer::padding#10
[137] call printf_padding
to:printf_number_buffer::@4
printf_number_buffer::@4: scope:[printf_number_buffer] from printf_number_buffer::@10 printf_number_buffer::@18 printf_number_buffer::@3
[138] if((byte) 0==(byte) printf_number_buffer::format_upper_case#10) goto printf_number_buffer::@5
to:printf_number_buffer::@11
printf_number_buffer::@11: scope:[printf_number_buffer] from printf_number_buffer::@4
[139] phi()
[140] call strupr
to:printf_number_buffer::@5
printf_number_buffer::@5: scope:[printf_number_buffer] from printf_number_buffer::@11 printf_number_buffer::@4
[141] phi()
[142] call cputs
to:printf_number_buffer::@15
printf_number_buffer::@15: scope:[printf_number_buffer] from printf_number_buffer::@5
[143] if((byte) 0==(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@return
to:printf_number_buffer::@20
printf_number_buffer::@20: scope:[printf_number_buffer] from printf_number_buffer::@15
[144] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@return
to:printf_number_buffer::@19
printf_number_buffer::@19: scope:[printf_number_buffer] from printf_number_buffer::@20
[145] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@12
to:printf_number_buffer::@return
printf_number_buffer::@12: scope:[printf_number_buffer] from printf_number_buffer::@19
[146] (byte) printf_padding::length#2 ← (byte)(signed byte) printf_number_buffer::padding#10
[147] call printf_padding
to:printf_number_buffer::@return
printf_number_buffer::@return: scope:[printf_number_buffer] from printf_number_buffer::@12 printf_number_buffer::@15 printf_number_buffer::@19 printf_number_buffer::@20
[148] return
to:@return
(byte()) legal((byte) legal::row , (byte) legal::column)
legal: scope:[legal] from queens::@5
[149] phi()
to:legal::@1
legal::@1: scope:[legal] from legal legal::@3
[150] (byte) legal::i#10 ← phi( legal/(byte) 1 legal::@3/(byte) legal::i#1 )
[151] (byte~) legal::$0 ← (byte) legal::row#0 - (byte) 1
[152] if((byte) legal::i#10<=(byte~) legal::$0) goto legal::@2
to:legal::@return
legal::@return: scope:[legal] from legal::@1 legal::@2 legal::@5
[153] (byte) legal::return#4 ← phi( legal::@1/(byte) 1 legal::@2/(byte) 0 legal::@5/(byte) 0 )
[154] return
to:@return
legal::@2: scope:[legal] from legal::@1
[155] if(*((const byte*) board + (byte) legal::i#10)==(byte) legal::column#0) goto legal::@return
to:legal::@4
legal::@4: scope:[legal] from legal::@2
[156] (byte) legal::diff1_a#0 ← *((const byte*) board + (byte) legal::i#10)
to:legal::diff1
legal::diff1: scope:[legal] from legal::@4
[157] if((byte) legal::diff1_a#0<(byte) legal::column#0) goto legal::diff1_@1
to:legal::diff1_@3
legal::diff1_@3: scope:[legal] from legal::diff1
[158] (byte) legal::diff1_return#1 ← (byte) legal::diff1_a#0 - (byte) legal::column#0
to:legal::diff1_@return
legal::diff1_@return: scope:[legal] from legal::diff1_@1 legal::diff1_@3
[159] (byte) legal::diff1_return#2 ← phi( legal::diff1_@1/(byte) legal::diff1_return#0 legal::diff1_@3/(byte) legal::diff1_return#1 )
to:legal::diff2
legal::diff2: scope:[legal] from legal::diff1_@return
[160] if((byte) legal::i#10<(byte) legal::row#0) goto legal::diff2_@1
to:legal::diff2_@3
legal::diff2_@3: scope:[legal] from legal::diff2
[161] (byte) legal::diff2_return#1 ← (byte) legal::i#10 - (byte) legal::row#0
to:legal::diff2_@return
legal::diff2_@return: scope:[legal] from legal::diff2_@1 legal::diff2_@3
[162] (byte) legal::diff2_return#2 ← phi( legal::diff2_@1/(byte) legal::diff2_return#0 legal::diff2_@3/(byte) legal::diff2_return#1 )
to:legal::@5
legal::@5: scope:[legal] from legal::diff2_@return
[163] if((byte) legal::diff1_return#2!=(byte) legal::diff2_return#2) goto legal::@3
to:legal::@return
legal::@3: scope:[legal] from legal::@5
[164] (byte) legal::i#1 ← ++ (byte) legal::i#10
to:legal::@1
legal::diff2_@1: scope:[legal] from legal::diff2
[165] (byte) legal::diff2_return#0 ← (byte) legal::row#0 - (byte) legal::i#10
to:legal::diff2_@return
legal::diff1_@1: scope:[legal] from legal::diff1
[166] (byte) legal::diff1_return#0 ← (byte) legal::column#0 - (byte) legal::diff1_a#0
to:legal::diff1_@return
(void()) print()
print: scope:[print] from queens::@4
[167] phi()
[168] call gotoxy
to:print::@11
print::@11: scope:[print] from print
[169] phi()
[170] call cputs
to:print::@12
print::@12: scope:[print] from print::@11
[171] (dword) printf_ulong::uvalue#1 ← (dword) count#2
[172] call printf_ulong
to:print::@13
print::@13: scope:[print] from print::@12
[173] phi()
[174] call cputs
to:print::@1
print::@1: scope:[print] from print::@13 print::@14
[175] (byte) print::i#2 ← phi( print::@13/(byte) 1 print::@14/(byte) print::i#1 )
[176] if((byte) print::i#2<(byte) 8+(byte) 1) goto print::@2
to:print::@3
print::@3: scope:[print] from print::@1 print::@7
[177] (byte) print::i1#2 ← phi( print::@1/(byte) 1 print::@7/(byte) print::i1#1 )
[178] if((byte) print::i1#2<(byte) 8+(byte) 1) goto print::@4
to:print::@return
print::@return: scope:[print] from print::@3
[179] return
to:@return
print::@4: scope:[print] from print::@3
[180] phi()
[181] call cputs
to:print::@15
print::@15: scope:[print] from print::@4
[182] (byte) printf_uchar::uvalue#1 ← (byte) print::i1#2
[183] call printf_uchar
to:print::@5
print::@5: scope:[print] from print::@15 print::@9
[184] (byte) print::j#2 ← phi( print::@9/(byte) print::j#1 print::@15/(byte) 1 )
[185] if((byte) print::j#2<(byte) 8+(byte) 1) goto print::@6
to:print::@7
print::@7: scope:[print] from print::@5
[186] (byte) print::i1#1 ← ++ (byte) print::i1#2
to:print::@3
print::@6: scope:[print] from print::@5
[187] if(*((const byte*) board + (byte) print::i1#2)==(byte) print::j#2) goto print::@8
to:print::@10
print::@10: scope:[print] from print::@6
[188] phi()
[189] call cputs
to:print::@9
print::@9: scope:[print] from print::@10 print::@8
[190] (byte) print::j#1 ← ++ (byte) print::j#2
to:print::@5
print::@8: scope:[print] from print::@6
[191] phi()
[192] call cputs
to:print::@9
print::@2: scope:[print] from print::@1
[193] (byte) printf_uchar::uvalue#0 ← (byte) print::i#2
[194] call printf_uchar
to:print::@14
print::@14: scope:[print] from print::@2
[195] (byte) print::i#1 ← ++ (byte) print::i#2
to:print::@1
(void()) ultoa((dword) ultoa::value , (byte*) ultoa::buffer , (byte) ultoa::radix)
ultoa: scope:[ultoa] from printf_ulong::@1
[196] phi()
to:ultoa::@1
ultoa::@1: scope:[ultoa] from ultoa ultoa::@4
[197] (byte*) ultoa::buffer#11 ← phi( ultoa::@4/(byte*) ultoa::buffer#14 ultoa/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS )
[197] (byte) ultoa::started#2 ← phi( ultoa::@4/(byte) ultoa::started#4 ultoa/(byte) 0 )
[197] (dword) ultoa::value#2 ← phi( ultoa::@4/(dword) ultoa::value#6 ultoa/(dword) ultoa::value#1 )
[197] (byte) ultoa::digit#2 ← phi( ultoa::@4/(byte) ultoa::digit#1 ultoa/(byte) 0 )
[198] if((byte) ultoa::digit#2<(byte) $a-(byte) 1) goto ultoa::@2
to:ultoa::@3
ultoa::@3: scope:[ultoa] from ultoa::@1
[199] (byte~) ultoa::$11 ← (byte)(dword) ultoa::value#2
[200] *((byte*) ultoa::buffer#11) ← *((const byte*) DIGITS + (byte~) ultoa::$11)
[201] (byte*) ultoa::buffer#3 ← ++ (byte*) ultoa::buffer#11
[202] *((byte*) ultoa::buffer#3) ← (byte) 0
to:ultoa::@return
ultoa::@return: scope:[ultoa] from ultoa::@3
[203] return
to:@return
ultoa::@2: scope:[ultoa] from ultoa::@1
[204] (byte~) ultoa::$10 ← (byte) ultoa::digit#2 << (byte) 2
[205] (dword) ultoa::digit_value#0 ← *((const dword*) RADIX_DECIMAL_VALUES_LONG + (byte~) ultoa::$10)
[206] if((byte) 0!=(byte) ultoa::started#2) goto ultoa::@5
to:ultoa::@7
ultoa::@7: scope:[ultoa] from ultoa::@2
[207] if((dword) ultoa::value#2>=(dword) ultoa::digit_value#0) goto ultoa::@5
to:ultoa::@4
ultoa::@4: scope:[ultoa] from ultoa::@6 ultoa::@7
[208] (byte*) ultoa::buffer#14 ← phi( ultoa::@7/(byte*) ultoa::buffer#11 ultoa::@6/(byte*) ultoa::buffer#4 )
[208] (byte) ultoa::started#4 ← phi( ultoa::@7/(byte) ultoa::started#2 ultoa::@6/(byte) 1 )
[208] (dword) ultoa::value#6 ← phi( ultoa::@7/(dword) ultoa::value#2 ultoa::@6/(dword) ultoa::value#0 )
[209] (byte) ultoa::digit#1 ← ++ (byte) ultoa::digit#2
to:ultoa::@1
ultoa::@5: scope:[ultoa] from ultoa::@2 ultoa::@7
[210] (byte*) ultoa_append::buffer#0 ← (byte*) ultoa::buffer#11
[211] (dword) ultoa_append::value#0 ← (dword) ultoa::value#2
[212] (dword) ultoa_append::sub#0 ← (dword) ultoa::digit_value#0
[213] call ultoa_append
[214] (dword) ultoa_append::return#0 ← (dword) ultoa_append::value#2
to:ultoa::@6
ultoa::@6: scope:[ultoa] from ultoa::@5
[215] (dword) ultoa::value#0 ← (dword) ultoa_append::return#0
[216] (byte*) ultoa::buffer#4 ← ++ (byte*) ultoa::buffer#11
to:ultoa::@4
(void()) cputln()
cputln: scope:[cputln] from cputc::@1 cputc::@3
[217] (byte*) conio_line_text ← (byte*) conio_line_text + (byte) $28
[218] (byte*) conio_line_color ← (byte*) conio_line_color + (byte) $28
[219] (byte) conio_cursor_x ← (byte) 0
[220] (byte) conio_cursor_y ← ++ (byte) conio_cursor_y
[221] call cscroll
to:cputln::@return
cputln::@return: scope:[cputln] from cputln
[222] return
to:@return
(word()) utoa_append((byte*) utoa_append::buffer , (word) utoa_append::value , (word) utoa_append::sub)
utoa_append: scope:[utoa_append] from utoa::@5
[223] phi()
to:utoa_append::@1
utoa_append::@1: scope:[utoa_append] from utoa_append utoa_append::@2
[224] (byte) utoa_append::digit#2 ← phi( utoa_append/(byte) 0 utoa_append::@2/(byte) utoa_append::digit#1 )
[224] (word) utoa_append::value#2 ← phi( utoa_append/(word) utoa_append::value#0 utoa_append::@2/(word) utoa_append::value#1 )
[225] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2
to:utoa_append::@3
utoa_append::@3: scope:[utoa_append] from utoa_append::@1
[226] *((byte*) utoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) utoa_append::digit#2)
to:utoa_append::@return
utoa_append::@return: scope:[utoa_append] from utoa_append::@3
[227] return
to:@return
utoa_append::@2: scope:[utoa_append] from utoa_append::@1
[228] (byte) utoa_append::digit#1 ← ++ (byte) utoa_append::digit#2
[229] (word) utoa_append::value#1 ← (word) utoa_append::value#2 - (word) utoa_append::sub#0
to:utoa_append::@1
(word()) strlen((byte*) strlen::str)
strlen: scope:[strlen] from printf_number_buffer::@6
[230] phi()
to:strlen::@1
strlen::@1: scope:[strlen] from strlen strlen::@2
[231] (word) strlen::len#2 ← phi( strlen/(word) 0 strlen::@2/(word) strlen::len#1 )
[231] (byte*) strlen::str#2 ← phi( strlen/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS strlen::@2/(byte*) strlen::str#0 )
[232] if((byte) 0!=*((byte*) strlen::str#2)) goto strlen::@2
to:strlen::@return
strlen::@return: scope:[strlen] from strlen::@1
[233] return
to:@return
strlen::@2: scope:[strlen] from strlen::@1
[234] (word) strlen::len#1 ← ++ (word) strlen::len#2
[235] (byte*) strlen::str#0 ← ++ (byte*) strlen::str#2
to:strlen::@1
(void()) printf_padding((byte) printf_padding::pad , (byte) printf_padding::length)
printf_padding: scope:[printf_padding] from printf_number_buffer::@10 printf_number_buffer::@12 printf_number_buffer::@8
[236] (byte) printf_padding::pad#5 ← phi( printf_number_buffer::@10/(byte) '0' printf_number_buffer::@12/(byte) ' ' printf_number_buffer::@8/(byte) ' ' )
[236] (byte) printf_padding::length#4 ← phi( printf_number_buffer::@10/(byte) printf_padding::length#1 printf_number_buffer::@12/(byte) printf_padding::length#2 printf_number_buffer::@8/(byte) printf_padding::length#0 )
to:printf_padding::@1
printf_padding::@1: scope:[printf_padding] from printf_padding printf_padding::@3
[237] (byte) printf_padding::i#2 ← phi( printf_padding/(byte) 0 printf_padding::@3/(byte) printf_padding::i#1 )
[238] if((byte) printf_padding::i#2<(byte) printf_padding::length#4) goto printf_padding::@2
to:printf_padding::@return
printf_padding::@return: scope:[printf_padding] from printf_padding::@1
[239] return
to:@return
printf_padding::@2: scope:[printf_padding] from printf_padding::@1
[240] (byte) cputc::c#1 ← (byte) printf_padding::pad#5
[241] call cputc
to:printf_padding::@3
printf_padding::@3: scope:[printf_padding] from printf_padding::@2
[242] (byte) printf_padding::i#1 ← ++ (byte) printf_padding::i#2
to:printf_padding::@1
(byte*()) strupr((byte*) strupr::str)
strupr: scope:[strupr] from printf_number_buffer::@11
[243] phi()
to:strupr::@1
strupr::@1: scope:[strupr] from strupr strupr::@3
[244] (byte*) strupr::src#2 ← phi( strupr/(const byte*) strupr::str#0 strupr::@3/(byte*) strupr::src#1 )
[245] if((byte) 0!=*((byte*) strupr::src#2)) goto strupr::@2
to:strupr::@return
strupr::@return: scope:[strupr] from strupr::@1
[246] return
to:@return
strupr::@2: scope:[strupr] from strupr::@1
[247] (byte) toupper::ch#0 ← *((byte*) strupr::src#2)
[248] call toupper
[249] (byte) toupper::return#3 ← (byte) toupper::return#2
to:strupr::@3
strupr::@3: scope:[strupr] from strupr::@2
[250] (byte~) strupr::$0 ← (byte) toupper::return#3
[251] *((byte*) strupr::src#2) ← (byte~) strupr::$0
[252] (byte*) strupr::src#1 ← ++ (byte*) strupr::src#2
to:strupr::@1
(void()) gotoxy((byte) gotoxy::x , (byte) gotoxy::y)
gotoxy: scope:[gotoxy] from print
[253] phi()
to:gotoxy::@1
gotoxy::@1: scope:[gotoxy] from gotoxy
[254] (byte) conio_cursor_x ← (const byte) gotoxy::x#2
[255] (byte) conio_cursor_y ← (const byte) gotoxy::y#2
[256] (byte*) conio_line_text ← (const nomodify byte*) DEFAULT_SCREEN+(const word) gotoxy::line_offset#0
[257] (byte*) conio_line_color ← (const nomodify byte*) COLORRAM+(const word) gotoxy::line_offset#0
to:gotoxy::@return
gotoxy::@return: scope:[gotoxy] from gotoxy::@1
[258] return
to:@return
(void()) printf_uchar((byte) printf_uchar::uvalue , (byte) printf_uchar::format_min_length , (byte) printf_uchar::format_justify_left , (byte) printf_uchar::format_sign_always , (byte) printf_uchar::format_zero_padding , (byte) printf_uchar::format_upper_case , (byte) printf_uchar::format_radix)
printf_uchar: scope:[printf_uchar] from print::@15 print::@2
[259] (byte) printf_uchar::uvalue#2 ← phi( print::@15/(byte) printf_uchar::uvalue#1 print::@2/(byte) printf_uchar::uvalue#0 )
to:printf_uchar::@1
printf_uchar::@1: scope:[printf_uchar] from printf_uchar
[260] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0
[261] (byte) uctoa::value#1 ← (byte) printf_uchar::uvalue#2
[262] call uctoa
to:printf_uchar::@2
printf_uchar::@2: scope:[printf_uchar] from printf_uchar::@1
[263] (byte) printf_number_buffer::buffer_sign#2 ← *((byte*)&(struct printf_buffer_number) printf_buffer)
[264] call printf_number_buffer
to:printf_uchar::@return
printf_uchar::@return: scope:[printf_uchar] from printf_uchar::@2
[265] return
to:@return
(dword()) ultoa_append((byte*) ultoa_append::buffer , (dword) ultoa_append::value , (dword) ultoa_append::sub)
ultoa_append: scope:[ultoa_append] from ultoa::@5
[266] phi()
to:ultoa_append::@1
ultoa_append::@1: scope:[ultoa_append] from ultoa_append ultoa_append::@2
[267] (byte) ultoa_append::digit#2 ← phi( ultoa_append/(byte) 0 ultoa_append::@2/(byte) ultoa_append::digit#1 )
[267] (dword) ultoa_append::value#2 ← phi( ultoa_append/(dword) ultoa_append::value#0 ultoa_append::@2/(dword) ultoa_append::value#1 )
[268] if((dword) ultoa_append::value#2>=(dword) ultoa_append::sub#0) goto ultoa_append::@2
to:ultoa_append::@3
ultoa_append::@3: scope:[ultoa_append] from ultoa_append::@1
[269] *((byte*) ultoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) ultoa_append::digit#2)
to:ultoa_append::@return
ultoa_append::@return: scope:[ultoa_append] from ultoa_append::@3
[270] return
to:@return
ultoa_append::@2: scope:[ultoa_append] from ultoa_append::@1
[271] (byte) ultoa_append::digit#1 ← ++ (byte) ultoa_append::digit#2
[272] (dword) ultoa_append::value#1 ← (dword) ultoa_append::value#2 - (dword) ultoa_append::sub#0
to:ultoa_append::@1
(void()) cscroll()
cscroll: scope:[cscroll] from cputln
[273] if((byte) conio_cursor_y!=(byte) $19) goto cscroll::@return
to:cscroll::@1
cscroll::@1: scope:[cscroll] from cscroll
[274] phi()
[275] call memcpy
to:cscroll::@2
cscroll::@2: scope:[cscroll] from cscroll::@1
[276] phi()
[277] call memcpy
to:cscroll::@3
cscroll::@3: scope:[cscroll] from cscroll::@2
[278] phi()
[279] call memset
to:cscroll::@4
cscroll::@4: scope:[cscroll] from cscroll::@3
[280] phi()
[281] call memset
to:cscroll::@5
cscroll::@5: scope:[cscroll] from cscroll::@4
[282] (byte*) conio_line_text ← (byte*) conio_line_text - (byte) $28
[283] (byte*) conio_line_color ← (byte*) conio_line_color - (byte) $28
[284] (byte) conio_cursor_y ← -- (byte) conio_cursor_y
to:cscroll::@return
cscroll::@return: scope:[cscroll] from cscroll cscroll::@5
[285] return
to:@return
(byte()) toupper((byte) toupper::ch)
toupper: scope:[toupper] from strupr::@2
[286] if((byte) toupper::ch#0<(byte) 'a') goto toupper::@return
to:toupper::@2
toupper::@2: scope:[toupper] from toupper
[287] if((byte) toupper::ch#0<=(byte) 'z') goto toupper::@1
to:toupper::@return
toupper::@1: scope:[toupper] from toupper::@2
[288] (byte) toupper::return#0 ← (byte) toupper::ch#0 + (byte) 'A'-(byte) 'a'
to:toupper::@return
toupper::@return: scope:[toupper] from toupper toupper::@1 toupper::@2
[289] (byte) toupper::return#2 ← phi( toupper::@1/(byte) toupper::return#0 toupper/(byte) toupper::ch#0 toupper::@2/(byte) toupper::ch#0 )
[290] return
to:@return
(void()) uctoa((byte) uctoa::value , (byte*) uctoa::buffer , (byte) uctoa::radix)
uctoa: scope:[uctoa] from printf_uchar::@1
[291] phi()
to:uctoa::@1
uctoa::@1: scope:[uctoa] from uctoa uctoa::@4
[292] (byte*) uctoa::buffer#11 ← phi( uctoa::@4/(byte*) uctoa::buffer#14 uctoa/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS )
[292] (byte) uctoa::started#2 ← phi( uctoa::@4/(byte) uctoa::started#4 uctoa/(byte) 0 )
[292] (byte) uctoa::value#2 ← phi( uctoa::@4/(byte) uctoa::value#6 uctoa/(byte) uctoa::value#1 )
[292] (byte) uctoa::digit#2 ← phi( uctoa::@4/(byte) uctoa::digit#1 uctoa/(byte) 0 )
[293] if((byte) uctoa::digit#2<(byte) 2-(byte) 1) goto uctoa::@2
to:uctoa::@3
uctoa::@3: scope:[uctoa] from uctoa::@1
[294] *((byte*) uctoa::buffer#11) ← *((const byte*) DIGITS + (byte) uctoa::value#2)
[295] (byte*) uctoa::buffer#3 ← ++ (byte*) uctoa::buffer#11
[296] *((byte*) uctoa::buffer#3) ← (byte) 0
to:uctoa::@return
uctoa::@return: scope:[uctoa] from uctoa::@3
[297] return
to:@return
uctoa::@2: scope:[uctoa] from uctoa::@1
[298] (byte) uctoa::digit_value#0 ← *((const byte*) RADIX_HEXADECIMAL_VALUES_CHAR + (byte) uctoa::digit#2)
[299] if((byte) 0!=(byte) uctoa::started#2) goto uctoa::@5
to:uctoa::@7
uctoa::@7: scope:[uctoa] from uctoa::@2
[300] if((byte) uctoa::value#2>=(byte) uctoa::digit_value#0) goto uctoa::@5
to:uctoa::@4
uctoa::@4: scope:[uctoa] from uctoa::@6 uctoa::@7
[301] (byte*) uctoa::buffer#14 ← phi( uctoa::@7/(byte*) uctoa::buffer#11 uctoa::@6/(byte*) uctoa::buffer#4 )
[301] (byte) uctoa::started#4 ← phi( uctoa::@7/(byte) uctoa::started#2 uctoa::@6/(byte) 1 )
[301] (byte) uctoa::value#6 ← phi( uctoa::@7/(byte) uctoa::value#2 uctoa::@6/(byte) uctoa::value#0 )
[302] (byte) uctoa::digit#1 ← ++ (byte) uctoa::digit#2
to:uctoa::@1
uctoa::@5: scope:[uctoa] from uctoa::@2 uctoa::@7
[303] (byte*) uctoa_append::buffer#0 ← (byte*) uctoa::buffer#11
[304] (byte) uctoa_append::value#0 ← (byte) uctoa::value#2
[305] (byte) uctoa_append::sub#0 ← (byte) uctoa::digit_value#0
[306] call uctoa_append
[307] (byte) uctoa_append::return#0 ← (byte) uctoa_append::value#2
to:uctoa::@6
uctoa::@6: scope:[uctoa] from uctoa::@5
[308] (byte) uctoa::value#0 ← (byte) uctoa_append::return#0
[309] (byte*) uctoa::buffer#4 ← ++ (byte*) uctoa::buffer#11
to:uctoa::@4
(void*()) memcpy((void*) memcpy::destination , (void*) memcpy::source , (word) memcpy::num)
memcpy: scope:[memcpy] from cscroll::@1 cscroll::@2
[310] (void*) memcpy::destination#2 ← phi( cscroll::@1/(void*)(const nomodify byte*) DEFAULT_SCREEN cscroll::@2/(void*)(const nomodify byte*) COLORRAM )
[310] (void*) memcpy::source#2 ← phi( cscroll::@1/(void*)(const nomodify byte*) DEFAULT_SCREEN+(byte) $28 cscroll::@2/(void*)(const nomodify byte*) COLORRAM+(byte) $28 )
[311] (byte*) memcpy::src_end#0 ← (byte*)(void*) memcpy::source#2 + (word)(number) $19*(number) $28-(number) $28
[312] (byte*) memcpy::src#4 ← (byte*)(void*) memcpy::source#2
[313] (byte*) memcpy::dst#4 ← (byte*)(void*) memcpy::destination#2
to:memcpy::@1
memcpy::@1: scope:[memcpy] from memcpy memcpy::@2
[314] (byte*) memcpy::dst#2 ← phi( memcpy/(byte*) memcpy::dst#4 memcpy::@2/(byte*) memcpy::dst#1 )
[314] (byte*) memcpy::src#2 ← phi( memcpy/(byte*) memcpy::src#4 memcpy::@2/(byte*) memcpy::src#1 )
[315] if((byte*) memcpy::src#2!=(byte*) memcpy::src_end#0) goto memcpy::@2
to:memcpy::@return
memcpy::@return: scope:[memcpy] from memcpy::@1
[316] return
to:@return
memcpy::@2: scope:[memcpy] from memcpy::@1
[317] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2)
[318] (byte*) memcpy::dst#1 ← ++ (byte*) memcpy::dst#2
[319] (byte*) memcpy::src#1 ← ++ (byte*) memcpy::src#2
to:memcpy::@1
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
memset: scope:[memset] from cscroll::@3 cscroll::@4
[320] (byte) memset::c#4 ← phi( cscroll::@3/(byte) ' ' cscroll::@4/(const nomodify byte) LIGHT_BLUE )
[320] (void*) memset::str#3 ← phi( cscroll::@3/(void*)(const nomodify byte*) DEFAULT_SCREEN+(word)(number) $19*(number) $28-(byte) $28 cscroll::@4/(void*)(const nomodify byte*) COLORRAM+(word)(number) $19*(number) $28-(byte) $28 )
to:memset::@1
memset::@1: scope:[memset] from memset
[321] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (byte) $28
[322] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3
to:memset::@2
memset::@2: scope:[memset] from memset::@1 memset::@3
[323] (byte*) memset::dst#2 ← phi( memset::@1/(byte*) memset::dst#4 memset::@3/(byte*) memset::dst#1 )
[324] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3
to:memset::@return
memset::@return: scope:[memset] from memset::@2
[325] return
to:@return
memset::@3: scope:[memset] from memset::@2
[326] *((byte*) memset::dst#2) ← (byte) memset::c#4
[327] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
to:memset::@2
(byte()) uctoa_append((byte*) uctoa_append::buffer , (byte) uctoa_append::value , (byte) uctoa_append::sub)
uctoa_append: scope:[uctoa_append] from uctoa::@5
[328] phi()
to:uctoa_append::@1
uctoa_append::@1: scope:[uctoa_append] from uctoa_append uctoa_append::@2
[329] (byte) uctoa_append::digit#2 ← phi( uctoa_append/(byte) 0 uctoa_append::@2/(byte) uctoa_append::digit#1 )
[329] (byte) uctoa_append::value#2 ← phi( uctoa_append/(byte) uctoa_append::value#0 uctoa_append::@2/(byte) uctoa_append::value#1 )
[330] if((byte) uctoa_append::value#2>=(byte) uctoa_append::sub#0) goto uctoa_append::@2
to:uctoa_append::@3
uctoa_append::@3: scope:[uctoa_append] from uctoa_append::@1
[331] *((byte*) uctoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) uctoa_append::digit#2)
to:uctoa_append::@return
uctoa_append::@return: scope:[uctoa_append] from uctoa_append::@3
[332] return
to:@return
uctoa_append::@2: scope:[uctoa_append] from uctoa_append::@1
[333] (byte) uctoa_append::digit#1 ← ++ (byte) uctoa_append::digit#2
[334] (byte) uctoa_append::value#1 ← (byte) uctoa_append::value#2 - (byte) uctoa_append::sub#0
to:uctoa_append::@1

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,669 @@
(const nomodify byte*) COLORRAM = (byte*) 55296
(const nomodify byte*) DEFAULT_SCREEN = (byte*) 1024
(const byte*) DIGITS[] = (byte*) "0123456789abcdef"z
(const nomodify byte) LIGHT_BLUE = (byte) $e
(byte) MOS6526_CIA::INTERRUPT
(byte) MOS6526_CIA::PORT_A
(byte) MOS6526_CIA::PORT_A_DDR
(byte) MOS6526_CIA::PORT_B
(byte) MOS6526_CIA::PORT_B_DDR
(byte) MOS6526_CIA::SERIAL_DATA
(word) MOS6526_CIA::TIMER_A
(byte) MOS6526_CIA::TIMER_A_CONTROL
(word) MOS6526_CIA::TIMER_B
(byte) MOS6526_CIA::TIMER_B_CONTROL
(byte) MOS6526_CIA::TOD_10THS
(byte) MOS6526_CIA::TOD_HOURS
(byte) MOS6526_CIA::TOD_MIN
(byte) MOS6526_CIA::TOD_SEC
(byte) MOS6569_VICII::BG_COLOR
(byte) MOS6569_VICII::BG_COLOR1
(byte) MOS6569_VICII::BG_COLOR2
(byte) MOS6569_VICII::BG_COLOR3
(byte) MOS6569_VICII::BORDER_COLOR
(byte) MOS6569_VICII::CONTROL1
(byte) MOS6569_VICII::CONTROL2
(byte) MOS6569_VICII::IRQ_ENABLE
(byte) MOS6569_VICII::IRQ_STATUS
(byte) MOS6569_VICII::LIGHTPEN_X
(byte) MOS6569_VICII::LIGHTPEN_Y
(byte) MOS6569_VICII::MEMORY
(byte) MOS6569_VICII::RASTER
(byte) MOS6569_VICII::SPRITE0_COLOR
(byte) MOS6569_VICII::SPRITE0_X
(byte) MOS6569_VICII::SPRITE0_Y
(byte) MOS6569_VICII::SPRITE1_COLOR
(byte) MOS6569_VICII::SPRITE1_X
(byte) MOS6569_VICII::SPRITE1_Y
(byte) MOS6569_VICII::SPRITE2_COLOR
(byte) MOS6569_VICII::SPRITE2_X
(byte) MOS6569_VICII::SPRITE2_Y
(byte) MOS6569_VICII::SPRITE3_COLOR
(byte) MOS6569_VICII::SPRITE3_X
(byte) MOS6569_VICII::SPRITE3_Y
(byte) MOS6569_VICII::SPRITE4_COLOR
(byte) MOS6569_VICII::SPRITE4_X
(byte) MOS6569_VICII::SPRITE4_Y
(byte) MOS6569_VICII::SPRITE5_COLOR
(byte) MOS6569_VICII::SPRITE5_X
(byte) MOS6569_VICII::SPRITE5_Y
(byte) MOS6569_VICII::SPRITE6_COLOR
(byte) MOS6569_VICII::SPRITE6_X
(byte) MOS6569_VICII::SPRITE6_Y
(byte) MOS6569_VICII::SPRITE7_COLOR
(byte) MOS6569_VICII::SPRITE7_X
(byte) MOS6569_VICII::SPRITE7_Y
(byte) MOS6569_VICII::SPRITES_BG_COLLISION
(byte) MOS6569_VICII::SPRITES_COLLISION
(byte) MOS6569_VICII::SPRITES_ENABLE
(byte) MOS6569_VICII::SPRITES_EXPAND_X
(byte) MOS6569_VICII::SPRITES_EXPAND_Y
(byte) MOS6569_VICII::SPRITES_MC
(byte) MOS6569_VICII::SPRITES_MCOLOR1
(byte) MOS6569_VICII::SPRITES_MCOLOR2
(byte) MOS6569_VICII::SPRITES_PRIORITY
(byte) MOS6569_VICII::SPRITES_XMSB
(byte) MOS6581_SID::CH1_ATTACK_DECAY
(byte) MOS6581_SID::CH1_CONTROL
(word) MOS6581_SID::CH1_FREQ
(word) MOS6581_SID::CH1_PULSE_WIDTH
(byte) MOS6581_SID::CH1_SUSTAIN_RELEASE
(byte) MOS6581_SID::CH2_ATTACK_DECAY
(byte) MOS6581_SID::CH2_CONTROL
(word) MOS6581_SID::CH2_FREQ
(word) MOS6581_SID::CH2_PULSE_WIDTH
(byte) MOS6581_SID::CH2_SUSTAIN_RELEASE
(byte) MOS6581_SID::CH3_ATTACK_DECAY
(byte) MOS6581_SID::CH3_CONTROL
(byte) MOS6581_SID::CH3_ENV
(word) MOS6581_SID::CH3_FREQ
(byte) MOS6581_SID::CH3_OSC
(word) MOS6581_SID::CH3_PULSE_WIDTH
(byte) MOS6581_SID::CH3_SUSTAIN_RELEASE
(byte) MOS6581_SID::FILTER_CUTOFF_HIGH
(byte) MOS6581_SID::FILTER_CUTOFF_LOW
(byte) MOS6581_SID::FILTER_SETUP
(byte) MOS6581_SID::POT_X
(byte) MOS6581_SID::POT_Y
(byte) MOS6581_SID::VOLUME_FILTER_MODE
(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS = (byte) 1
(const byte) RADIX::BINARY = (number) 2
(const byte) RADIX::DECIMAL = (number) $a
(const byte) RADIX::HEXADECIMAL = (number) $10
(const byte) RADIX::OCTAL = (number) 8
(const word*) RADIX_DECIMAL_VALUES[] = { (word) $2710, (word) $3e8, (word) $64, (word) $a }
(const dword*) RADIX_DECIMAL_VALUES_LONG[] = { (dword) $3b9aca00, (dword) $5f5e100, (dword) $989680, (dword) $f4240, (dword) $186a0, (dword) $2710, (dword) $3e8, (dword) $64, (dword) $a }
(const byte*) RADIX_HEXADECIMAL_VALUES_CHAR[] = { (byte) $10 }
(const byte) SIZEOF_STRUCT_PRINTF_BUFFER_NUMBER = (byte) $c
(void()) __start()
(label) __start::@1
(label) __start::@return
(label) __start::__init1
(const byte*) board[(number) $14] = { fill( $14, 0) }
(void()) clrscr()
(label) clrscr::@1
(label) clrscr::@2
(label) clrscr::@3
(label) clrscr::@4
(label) clrscr::@5
(label) clrscr::@return
(byte) clrscr::c
(byte) clrscr::c#1 reg byte y 20002.0
(byte) clrscr::c#2 reg byte y 12501.25
(byte) clrscr::l
(byte) clrscr::l#1 reg byte z 2002.0
(byte) clrscr::l#2 reg byte z 333.6666666666667
(byte*) clrscr::line_cols
(byte*) clrscr::line_cols#1 line_cols zp[2]:20 1001.0
(byte*) clrscr::line_cols#5 line_cols zp[2]:20 1500.375
(byte*) clrscr::line_text
(byte*) clrscr::line_text#1 line_text zp[2]:18 667.3333333333334
(byte*) clrscr::line_text#5 line_text zp[2]:18 1714.7142857142858
(byte) conio_cursor_x loadstore zp[1]:22 9.740259746760391E11
(byte) conio_cursor_y loadstore zp[1]:23 1.8934911243195914E13
(byte*) conio_line_color loadstore zp[2]:26 1.3393939394546113E13
(byte*) conio_line_text loadstore zp[2]:24 1.3233532934731191E13
(dword) count
(dword) count#10 count zp[4]:3 445.5
(dword) count#2 count zp[4]:3 387.19354838709677
(void()) cputc((byte) cputc::c)
(label) cputc::@1
(label) cputc::@2
(label) cputc::@3
(label) cputc::@return
(byte) cputc::c
(byte) cputc::c#0 reg byte a 2.0000000002E10
(byte) cputc::c#1 reg byte a 2.000000000002E12
(byte) cputc::c#2 reg byte a 2.00000002E8
(byte) cputc::c#3 reg byte a 1.05050500000025E13
(void()) cputln()
(label) cputln::@return
(void()) cputs((to_nomodify byte*) cputs::s)
(label) cputs::@1
(label) cputs::@2
(label) cputs::@return
(byte) cputs::c
(byte) cputs::c#1 reg byte a 1.0000000001E10
(to_nomodify byte*) cputs::s
(to_nomodify byte*) cputs::s#0 s zp[2]:18 5.0000000005E9
(to_nomodify byte*) cputs::s#11 s zp[2]:18 1.5500000002E10
(to_nomodify byte*) cputs::s#12 s zp[2]:18 1.000000001E9
(void()) cscroll()
(label) cscroll::@1
(label) cscroll::@2
(label) cscroll::@3
(label) cscroll::@4
(label) cscroll::@5
(label) cscroll::@return
(void()) gotoxy((byte) gotoxy::x , (byte) gotoxy::y)
(label) gotoxy::@1
(label) gotoxy::@return
(word) gotoxy::line_offset
(const word) gotoxy::line_offset#0 line_offset = (word)(const byte) gotoxy::y#2*(byte) $28
(byte) gotoxy::x
(const byte) gotoxy::x#2 x = (byte) 0
(byte) gotoxy::y
(const byte) gotoxy::y#2 y = (byte) 5
(byte()) legal((byte) legal::row , (byte) legal::column)
(byte~) legal::$0 reg byte x 2000002.0
(label) legal::@1
(label) legal::@2
(label) legal::@3
(label) legal::@4
(label) legal::@5
(label) legal::@return
(byte) legal::column
(byte) legal::column#0 column zp[1]:28 235353.23529411765
(label) legal::diff1
(label) legal::diff1_@1
(label) legal::diff1_@3
(label) legal::diff1_@return
(byte) legal::diff1_a
(byte) legal::diff1_a#0 reg byte a 2000002.0
(byte) legal::diff1_b
(byte) legal::diff1_return
(byte) legal::diff1_return#0 diff1_return zp[1]:8 2000002.0
(byte) legal::diff1_return#1 diff1_return zp[1]:8 2000002.0
(byte) legal::diff1_return#2 diff1_return zp[1]:8 600000.6000000001
(label) legal::diff2
(label) legal::diff2_@1
(label) legal::diff2_@3
(label) legal::diff2_@return
(byte) legal::diff2_a
(byte) legal::diff2_b
(byte) legal::diff2_return
(byte) legal::diff2_return#0 reg byte a 2000002.0
(byte) legal::diff2_return#1 reg byte a 2000002.0
(byte) legal::diff2_return#2 reg byte a 3000003.0
(byte) legal::i
(byte) legal::i#1 reg byte y 2000002.0
(byte) legal::i#10 reg byte y 571429.1428571428
(byte) legal::return
(byte) legal::return#0 reg byte a 2002.0
(byte) legal::return#4 reg byte a 333.6666666666667
(byte) legal::row
(byte) legal::row#0 row zp[1]:2 222278.05555555556
(void()) main()
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@4
(label) main::@5
(label) main::@6
(label) main::@7
(label) main::@return
(const byte*) main::s[(byte) $29] = (byte*) " - n queens problem using backtracking -"
(const byte*) main::s1[(byte) $13] = (byte*) "
number of queens:"
(const byte*) main::s2[(byte) $e] = (byte*) "
solutions: "
(void*()) memcpy((void*) memcpy::destination , (void*) memcpy::source , (word) memcpy::num)
(label) memcpy::@1
(label) memcpy::@2
(label) memcpy::@return
(void*) memcpy::destination
(void*) memcpy::destination#2 destination zp[2]:29
(byte*) memcpy::dst
(byte*) memcpy::dst#1 dst zp[2]:29 1.0E20
(byte*) memcpy::dst#2 dst zp[2]:29 1.0000333333333333E20
(byte*) memcpy::dst#4 dst zp[2]:29 2.0E16
(word) memcpy::num
(void*) memcpy::return
(void*) memcpy::source
(void*) memcpy::source#2 source zp[2]:20
(byte*) memcpy::src
(byte*) memcpy::src#1 src zp[2]:20 2.0E20
(byte*) memcpy::src#2 src zp[2]:20 1.000025E20
(byte*) memcpy::src#4 src zp[2]:20 1.0E16
(byte*) memcpy::src_end
(byte*) memcpy::src_end#0 src_end zp[2]:36 1.250125E19
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(label) memset::@1
(label) memset::@2
(label) memset::@3
(label) memset::@return
(byte) memset::c
(byte) memset::c#4 reg byte z 1.4285714285714287E19
(byte*) memset::dst
(byte*) memset::dst#1 dst zp[2]:20 2.0E20
(byte*) memset::dst#2 dst zp[2]:20 1.3333666666666666E20
(byte*) memset::dst#4 dst zp[2]:20 2.0E16
(byte*) memset::end
(byte*) memset::end#0 end zp[2]:36 1.6668333333333332E19
(word) memset::num
(void*) memset::return
(void*) memset::str
(void*) memset::str#3 str zp[2]:20
(void()) print()
(label) print::@1
(label) print::@10
(label) print::@11
(label) print::@12
(label) print::@13
(label) print::@14
(label) print::@15
(label) print::@2
(label) print::@3
(label) print::@4
(label) print::@5
(label) print::@6
(label) print::@7
(label) print::@8
(label) print::@9
(label) print::@return
(byte) print::i
(byte) print::i#1 i zp[1]:9 2000002.0
(byte) print::i#2 i zp[1]:9 1000001.0
(byte) print::i1
(byte) print::i1#1 i1 zp[1]:10 2000002.0
(byte) print::i1#2 i1 zp[1]:10 1000000.357142857
(byte) print::j
(byte) print::j#1 reg byte x 2.0000002E7
(byte) print::j#2 reg byte x 5714286.285714285
(const byte*) print::s[(byte) 3] = (byte*) "
#"
(const byte*) print::s1[(byte) 4] = (byte*) ":
"
(const byte*) print::s3[(byte) 2] = (byte*) "Q"
(const byte*) print::s4[(byte) 2] = (byte*) "-"
(struct printf_buffer_number) printf_buffer loadstore mem[12] = {}
(const byte*) printf_buffer_number::digits[(number) $b] = { fill( $b, 0) }
(byte) printf_buffer_number::sign
(byte) printf_format_number::justify_left
(byte) printf_format_number::min_length
(byte) printf_format_number::radix
(byte) printf_format_number::sign_always
(byte) printf_format_number::upper_case
(byte) printf_format_number::zero_padding
(byte) printf_format_string::justify_left
(byte) printf_format_string::min_length
(void()) printf_number_buffer((byte) printf_number_buffer::buffer_sign , (byte*) printf_number_buffer::buffer_digits , (byte) printf_number_buffer::format_min_length , (byte) printf_number_buffer::format_justify_left , (byte) printf_number_buffer::format_sign_always , (byte) printf_number_buffer::format_zero_padding , (byte) printf_number_buffer::format_upper_case , (byte) printf_number_buffer::format_radix)
(word~) printf_number_buffer::$19 zp[2]:18 1.00000001E8
(label) printf_number_buffer::@1
(label) printf_number_buffer::@10
(label) printf_number_buffer::@11
(label) printf_number_buffer::@12
(label) printf_number_buffer::@13
(label) printf_number_buffer::@14
(label) printf_number_buffer::@15
(label) printf_number_buffer::@16
(label) printf_number_buffer::@17
(label) printf_number_buffer::@18
(label) printf_number_buffer::@19
(label) printf_number_buffer::@2
(label) printf_number_buffer::@20
(label) printf_number_buffer::@21
(label) printf_number_buffer::@3
(label) printf_number_buffer::@4
(label) printf_number_buffer::@5
(label) printf_number_buffer::@6
(label) printf_number_buffer::@7
(label) printf_number_buffer::@8
(label) printf_number_buffer::@9
(label) printf_number_buffer::@return
(struct printf_buffer_number) printf_number_buffer::buffer
(byte*) printf_number_buffer::buffer_digits
(byte) printf_number_buffer::buffer_sign
(byte) printf_number_buffer::buffer_sign#0 buffer_sign zp[1]:28 200002.0
(byte) printf_number_buffer::buffer_sign#1 buffer_sign zp[1]:28 202.0
(byte) printf_number_buffer::buffer_sign#10 buffer_sign zp[1]:28 1.55050053E7
(byte) printf_number_buffer::buffer_sign#2 buffer_sign zp[1]:28 2.0000002E7
(struct printf_format_number) printf_number_buffer::format
(byte) printf_number_buffer::format_justify_left
(byte) printf_number_buffer::format_justify_left#10 format_justify_left zp[1]:8 6451612.9677419355
(byte) printf_number_buffer::format_min_length
(byte) printf_number_buffer::format_min_length#3 reg byte z 1.00000001E7
(byte) printf_number_buffer::format_radix
(byte) printf_number_buffer::format_sign_always
(byte) printf_number_buffer::format_upper_case
(byte) printf_number_buffer::format_upper_case#10 format_upper_case zp[1]:35 3846153.8846153845
(byte) printf_number_buffer::format_zero_padding
(byte) printf_number_buffer::format_zero_padding#10 format_zero_padding zp[1]:17 9375000.09375
(signed byte) printf_number_buffer::len
(signed byte) printf_number_buffer::len#0 reg byte x 1.500000015E8
(signed byte) printf_number_buffer::len#1 reg byte x 2.00000002E8
(signed byte) printf_number_buffer::len#2 reg byte x 3.00000003E8
(signed byte) printf_number_buffer::padding
(signed byte) printf_number_buffer::padding#1 padding zp[1]:7 1.00000001E8
(signed byte) printf_number_buffer::padding#10 padding zp[1]:7 1.904761923809524E7
(void()) printf_padding((byte) printf_padding::pad , (byte) printf_padding::length)
(label) printf_padding::@1
(label) printf_padding::@2
(label) printf_padding::@3
(label) printf_padding::@return
(byte) printf_padding::i
(byte) printf_padding::i#1 reg byte x 2.000000000002E12
(byte) printf_padding::i#2 reg byte x 7.5000000000075E11
(byte) printf_padding::length
(byte) printf_padding::length#0 length zp[1]:15 2.00000002E8
(byte) printf_padding::length#1 length zp[1]:15 2.00000002E8
(byte) printf_padding::length#2 length zp[1]:15 2.00000002E8
(byte) printf_padding::length#4 length zp[1]:15 1.6671666666733334E11
(byte) printf_padding::pad
(byte) printf_padding::pad#5 pad zp[1]:16 1.6666666666683334E11
(void()) printf_uchar((byte) printf_uchar::uvalue , (byte) printf_uchar::format_min_length , (byte) printf_uchar::format_justify_left , (byte) printf_uchar::format_sign_always , (byte) printf_uchar::format_zero_padding , (byte) printf_uchar::format_upper_case , (byte) printf_uchar::format_radix)
(label) printf_uchar::@1
(label) printf_uchar::@2
(label) printf_uchar::@return
(struct printf_format_number) printf_uchar::format
(byte) printf_uchar::format_justify_left
(byte) printf_uchar::format_min_length
(byte) printf_uchar::format_radix
(byte) printf_uchar::format_sign_always
(byte) printf_uchar::format_upper_case
(byte) printf_uchar::format_zero_padding
(byte) printf_uchar::uvalue
(byte) printf_uchar::uvalue#0 reg byte x 2000002.0
(byte) printf_uchar::uvalue#1 reg byte x 2000002.0
(byte) printf_uchar::uvalue#2 reg byte x 6000001.5
(void()) printf_uint((word) printf_uint::uvalue , (byte) printf_uint::format_min_length , (byte) printf_uint::format_justify_left , (byte) printf_uint::format_sign_always , (byte) printf_uint::format_zero_padding , (byte) printf_uint::format_upper_case , (byte) printf_uint::format_radix)
(label) printf_uint::@1
(label) printf_uint::@2
(label) printf_uint::@return
(struct printf_format_number) printf_uint::format
(byte) printf_uint::format_justify_left
(const byte) printf_uint::format_justify_left#0 format_justify_left = (byte) 0
(byte) printf_uint::format_min_length
(const byte) printf_uint::format_min_length#0 format_min_length = (byte) 0
(byte) printf_uint::format_radix
(byte) printf_uint::format_sign_always
(byte) printf_uint::format_upper_case
(const byte) printf_uint::format_upper_case#0 format_upper_case = (byte) 0
(byte) printf_uint::format_zero_padding
(const byte) printf_uint::format_zero_padding#0 format_zero_padding = (byte) 0
(word) printf_uint::uvalue
(const word) printf_uint::uvalue#0 uvalue = (byte) 8
(void()) printf_ulong((dword) printf_ulong::uvalue , (byte) printf_ulong::format_min_length , (byte) printf_ulong::format_justify_left , (byte) printf_ulong::format_sign_always , (byte) printf_ulong::format_zero_padding , (byte) printf_ulong::format_upper_case , (byte) printf_ulong::format_radix)
(label) printf_ulong::@1
(label) printf_ulong::@2
(label) printf_ulong::@return
(struct printf_format_number) printf_ulong::format
(byte) printf_ulong::format_justify_left
(byte) printf_ulong::format_min_length
(byte) printf_ulong::format_radix
(byte) printf_ulong::format_sign_always
(byte) printf_ulong::format_upper_case
(byte) printf_ulong::format_zero_padding
(dword) printf_ulong::uvalue
(dword) printf_ulong::uvalue#0 uvalue zp[4]:3 22.0
(dword) printf_ulong::uvalue#1 uvalue zp[4]:3 20002.0
(dword) printf_ulong::uvalue#2 uvalue zp[4]:3 55006.5
(void()) queens()
(byte~) queens::$2 reg byte a 2002.0
(label) queens::@1
(label) queens::@2
(label) queens::@3
(label) queens::@4
(label) queens::@5
(label) queens::@6
(label) queens::@7
(label) queens::@8
(label) queens::@9
(label) queens::@return
(byte) queens::row
(byte) queens::row#1 row zp[1]:2 2002.0
(byte) queens::row#10 row zp[1]:2 1144.0
(byte) queens::row#2 row zp[1]:2 2002.0
(const byte*) s3[(byte) 2] = (byte*) "
"
(word()) strlen((byte*) strlen::str)
(label) strlen::@1
(label) strlen::@2
(label) strlen::@return
(word) strlen::len
(word) strlen::len#1 len zp[2]:18 1.000000000001E12
(word) strlen::len#2 len zp[2]:18 5.0002500000075E11
(word) strlen::return
(word) strlen::return#2 return zp[2]:18 2.00000002E8
(byte*) strlen::str
(byte*) strlen::str#0 str zp[2]:20 2.000000000002E12
(byte*) strlen::str#2 str zp[2]:20 1.000000000001E12
(byte*()) strupr((byte*) strupr::str)
(byte~) strupr::$0 reg byte a 2.000000000002E12
(label) strupr::@1
(label) strupr::@2
(label) strupr::@3
(label) strupr::@return
(byte*) strupr::return
(byte*) strupr::src
(byte*) strupr::src#1 src zp[2]:20 2.000000000002E12
(byte*) strupr::src#2 src zp[2]:20 7.142857142864285E11
(byte*) strupr::str
(const byte*) strupr::str#0 str = (byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
(byte()) toupper((byte) toupper::ch)
(label) toupper::@1
(label) toupper::@2
(label) toupper::@return
(byte) toupper::ch
(byte) toupper::ch#0 reg byte a 1.7000000000001998E13
(byte) toupper::return
(byte) toupper::return#0 reg byte a 2.0000000000002E13
(byte) toupper::return#2 reg byte a 1.0333333333334666E13
(byte) toupper::return#3 reg byte a 2.000000000002E12
(void()) uctoa((byte) uctoa::value , (byte*) uctoa::buffer , (byte) uctoa::radix)
(label) uctoa::@1
(label) uctoa::@2
(label) uctoa::@3
(label) uctoa::@4
(label) uctoa::@5
(label) uctoa::@6
(label) uctoa::@7
(label) uctoa::@return
(byte*) uctoa::buffer
(byte*) uctoa::buffer#11 buffer zp[2]:18 3.3350000000500004E10
(byte*) uctoa::buffer#14 buffer zp[2]:18 1.500000000015E11
(byte*) uctoa::buffer#3 buffer zp[2]:18 2.00000002E8
(byte*) uctoa::buffer#4 buffer zp[2]:18 2.00000000002E11
(byte) uctoa::digit
(byte) uctoa::digit#1 digit zp[1]:17 2.00000000002E11
(byte) uctoa::digit#2 digit zp[1]:17 3.076923076953846E10
(byte) uctoa::digit_value
(byte) uctoa::digit_value#0 digit_value zp[1]:35 6.0000000000600006E10
(byte*) uctoa::digit_values
(byte) uctoa::max_digits
(byte) uctoa::radix
(byte) uctoa::started
(byte) uctoa::started#2 reg byte x 6.0000000000600006E10
(byte) uctoa::started#4 reg byte x 1.00000000001E11
(byte) uctoa::value
(byte) uctoa::value#0 reg byte z 1.00000000001E11
(byte) uctoa::value#1 reg byte z 5.5000001E7
(byte) uctoa::value#2 reg byte z 6.670000000100001E10
(byte) uctoa::value#6 reg byte z 1.500000000015E11
(byte()) uctoa_append((byte*) uctoa_append::buffer , (byte) uctoa_append::value , (byte) uctoa_append::sub)
(label) uctoa_append::@1
(label) uctoa_append::@2
(label) uctoa_append::@3
(label) uctoa_append::@return
(byte*) uctoa_append::buffer
(byte*) uctoa_append::buffer#0 buffer zp[2]:18 1.3750000000025E11
(byte) uctoa_append::digit
(byte) uctoa_append::digit#1 reg byte x 1.0E16
(byte) uctoa_append::digit#2 reg byte x 1.00005E16
(byte) uctoa_append::return
(byte) uctoa_append::return#0 reg byte a 2.00000000002E11
(byte) uctoa_append::sub
(byte) uctoa_append::sub#0 sub zp[1]:35 3.33335E15
(byte) uctoa_append::value
(byte) uctoa_append::value#0 reg byte z 3.666666666673334E11
(byte) uctoa_append::value#1 reg byte z 2.0E16
(byte) uctoa_append::value#2 reg byte z 5.000183333333334E15
(void()) ultoa((dword) ultoa::value , (byte*) ultoa::buffer , (byte) ultoa::radix)
(byte~) ultoa::$10 reg byte a 2.00000002E8
(byte~) ultoa::$11 reg byte a 2000002.0
(label) ultoa::@1
(label) ultoa::@2
(label) ultoa::@3
(label) ultoa::@4
(label) ultoa::@5
(label) ultoa::@6
(label) ultoa::@7
(label) ultoa::@return
(byte*) ultoa::buffer
(byte*) ultoa::buffer#11 buffer zp[2]:18 2.871428614285714E7
(byte*) ultoa::buffer#14 buffer zp[2]:18 1.500000015E8
(byte*) ultoa::buffer#3 buffer zp[2]:18 2000002.0
(byte*) ultoa::buffer#4 buffer zp[2]:18 2.00000002E8
(byte) ultoa::digit
(byte) ultoa::digit#1 reg byte x 2.00000002E8
(byte) ultoa::digit#2 reg byte x 2.857142885714286E7
(dword) ultoa::digit_value
(dword) ultoa::digit_value#0 digit_value zp[4]:31 6.0000000599999994E7
(dword*) ultoa::digit_values
(byte) ultoa::max_digits
(byte) ultoa::radix
(byte) ultoa::started
(byte) ultoa::started#2 reg byte z 5.00000005E7
(byte) ultoa::started#4 reg byte z 1.00000001E8
(dword) ultoa::value
(dword) ultoa::value#0 value zp[4]:11 1.00000001E8
(dword) ultoa::value#1 value zp[4]:11 550001.0
(dword) ultoa::value#2 value zp[4]:11 5.7285715E7
(dword) ultoa::value#6 value zp[4]:11 1.500000015E8
(dword()) ultoa_append((byte*) ultoa_append::buffer , (dword) ultoa_append::value , (dword) ultoa_append::sub)
(label) ultoa_append::@1
(label) ultoa_append::@2
(label) ultoa_append::@3
(label) ultoa_append::@return
(byte*) ultoa_append::buffer
(byte*) ultoa_append::buffer#0 buffer zp[2]:18 1.3750000025E8
(byte) ultoa_append::digit
(byte) ultoa_append::digit#1 reg byte z 1.000000000001E12
(byte) ultoa_append::digit#2 reg byte z 1.0005000000015E12
(dword) ultoa_append::return
(dword) ultoa_append::return#0 return zp[4]:11 2.00000002E8
(dword) ultoa_append::sub
(dword) ultoa_append::sub#0 sub zp[4]:31 3.333500000005E11
(dword) ultoa_append::value
(dword) ultoa_append::value#0 value zp[4]:11 3.666666673333334E8
(dword) ultoa_append::value#1 value zp[4]:11 2.000000000002E12
(dword) ultoa_append::value#2 value zp[4]:11 5.0018333333416675E11
(void()) utoa((word) utoa::value , (byte*) utoa::buffer , (byte) utoa::radix)
(byte~) utoa::$10 reg byte a 20002.0
(byte~) utoa::$11 reg byte a 2002.0
(label) utoa::@1
(label) utoa::@2
(label) utoa::@3
(label) utoa::@4
(label) utoa::@5
(label) utoa::@6
(label) utoa::@7
(label) utoa::@return
(byte*) utoa::buffer
(byte*) utoa::buffer#11 buffer zp[2]:18 3000.4285714285716
(byte*) utoa::buffer#14 buffer zp[2]:18 15001.5
(byte*) utoa::buffer#3 buffer zp[2]:18 2002.0
(byte*) utoa::buffer#4 buffer zp[2]:18 20002.0
(byte) utoa::digit
(byte) utoa::digit#1 reg byte x 20002.0
(byte) utoa::digit#2 reg byte x 2857.4285714285716
(word) utoa::digit_value
(word) utoa::digit_value#0 digit_value zp[2]:29 6000.6
(word*) utoa::digit_values
(byte) utoa::max_digits
(const byte) utoa::max_digits#1 max_digits = (byte) 5
(byte) utoa::radix
(byte) utoa::started
(byte) utoa::started#2 reg byte z 5000.5
(byte) utoa::started#4 reg byte z 10001.0
(word) utoa::value
(word) utoa::value#0 value zp[2]:20 10001.0
(word) utoa::value#2 value zp[2]:20 5714.857142857143
(word) utoa::value#6 value zp[2]:20 15001.5
(word()) utoa_append((byte*) utoa_append::buffer , (word) utoa_append::value , (word) utoa_append::sub)
(label) utoa_append::@1
(label) utoa_append::@2
(label) utoa_append::@3
(label) utoa_append::@return
(byte*) utoa_append::buffer
(byte*) utoa_append::buffer#0 buffer zp[2]:18 13750.25
(byte) utoa_append::digit
(byte) utoa_append::digit#1 reg byte z 1.0000001E7
(byte) utoa_append::digit#2 reg byte z 1.00500015E7
(word) utoa_append::return
(word) utoa_append::return#0 return zp[2]:20 20002.0
(word) utoa_append::sub
(word) utoa_append::sub#0 sub zp[2]:29 3335000.5
(word) utoa_append::value
(word) utoa_append::value#0 value zp[2]:20 36667.33333333333
(word) utoa_append::value#1 value zp[2]:20 2.0000002E7
(word) utoa_append::value#2 value zp[2]:20 5018334.166666666
reg byte z [ clrscr::l#2 clrscr::l#1 ]
reg byte y [ clrscr::c#2 clrscr::c#1 ]
zp[1]:2 [ queens::row#10 queens::row#1 queens::row#2 legal::row#0 ]
zp[4]:3 [ count#10 count#2 printf_ulong::uvalue#2 printf_ulong::uvalue#0 printf_ulong::uvalue#1 ]
reg byte a [ cputc::c#3 cputc::c#0 cputc::c#2 cputc::c#1 ]
reg byte x [ utoa::digit#2 utoa::digit#1 ]
reg byte z [ utoa::started#2 utoa::started#4 ]
reg byte z [ printf_number_buffer::format_min_length#3 ]
reg byte x [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ]
zp[1]:7 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ]
reg byte y [ legal::i#10 legal::i#1 ]
reg byte a [ legal::return#4 ]
zp[1]:8 [ legal::diff1_return#2 legal::diff1_return#0 legal::diff1_return#1 printf_number_buffer::format_justify_left#10 ]
reg byte a [ legal::diff2_return#2 legal::diff2_return#0 legal::diff2_return#1 ]
zp[1]:9 [ print::i#2 print::i#1 ]
zp[1]:10 [ print::i1#2 print::i1#1 ]
reg byte x [ print::j#2 print::j#1 ]
reg byte x [ ultoa::digit#2 ultoa::digit#1 ]
zp[4]:11 [ ultoa::value#2 ultoa::value#6 ultoa::value#1 ultoa::value#0 ultoa_append::value#2 ultoa_append::value#0 ultoa_append::value#1 ultoa_append::return#0 ]
reg byte z [ ultoa::started#2 ultoa::started#4 ]
reg byte z [ utoa_append::digit#2 utoa_append::digit#1 ]
zp[1]:15 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ]
zp[1]:16 [ printf_padding::pad#5 ]
reg byte x [ printf_padding::i#2 printf_padding::i#1 ]
reg byte x [ printf_uchar::uvalue#2 printf_uchar::uvalue#1 printf_uchar::uvalue#0 ]
reg byte z [ ultoa_append::digit#2 ultoa_append::digit#1 ]
reg byte a [ toupper::return#2 toupper::return#0 toupper::ch#0 ]
zp[1]:17 [ uctoa::digit#2 uctoa::digit#1 printf_number_buffer::format_zero_padding#10 ]
reg byte z [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ]
reg byte x [ uctoa::started#2 uctoa::started#4 ]
zp[2]:18 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 uctoa::buffer#3 uctoa_append::buffer#0 strlen::len#2 strlen::len#1 strlen::return#2 printf_number_buffer::$19 ultoa::buffer#11 ultoa::buffer#14 ultoa::buffer#4 ultoa::buffer#3 ultoa_append::buffer#0 utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 utoa::buffer#3 utoa_append::buffer#0 cputs::s#11 cputs::s#12 cputs::s#0 clrscr::line_text#5 clrscr::line_text#1 ]
zp[2]:20 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 memcpy::source#2 memcpy::src#2 memcpy::src#4 memcpy::src#1 strupr::src#2 strupr::src#1 strlen::str#2 strlen::str#0 utoa::value#2 utoa::value#6 utoa::value#0 utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 utoa_append::return#0 clrscr::line_cols#5 clrscr::line_cols#1 ]
reg byte z [ memset::c#4 ]
reg byte z [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ]
reg byte x [ uctoa_append::digit#2 uctoa_append::digit#1 ]
zp[1]:22 [ conio_cursor_x ]
zp[1]:23 [ conio_cursor_y ]
zp[2]:24 [ conio_line_text ]
zp[2]:26 [ conio_line_color ]
reg byte a [ cputs::c#1 ]
zp[1]:28 [ legal::column#0 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ]
reg byte a [ legal::return#0 ]
reg byte a [ queens::$2 ]
reg byte a [ utoa::$11 ]
reg byte a [ utoa::$10 ]
zp[2]:29 [ utoa::digit_value#0 utoa_append::sub#0 memcpy::destination#2 memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ]
reg byte x [ legal::$0 ]
reg byte a [ legal::diff1_a#0 ]
reg byte a [ ultoa::$11 ]
reg byte a [ ultoa::$10 ]
zp[4]:31 [ ultoa::digit_value#0 ultoa_append::sub#0 ]
reg byte a [ toupper::return#3 ]
reg byte a [ strupr::$0 ]
zp[1]:35 [ uctoa::digit_value#0 uctoa_append::sub#0 printf_number_buffer::format_upper_case#10 ]
reg byte a [ uctoa_append::return#0 ]
zp[2]:36 [ memset::end#0 memcpy::src_end#0 ]
mem[12] [ printf_buffer ]

View File

@ -10426,7 +10426,6 @@ Statement [243] (word) utoa::value#0 ← (word) utoa_append::return#0 [ printf_b
Statement [249] (word) strlen::return#2 ← (word) strlen::len#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] ( main:7::printf_uint:38::printf_number_buffer:144 [ count TOD_ZERO conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::return#2 = strlen::len#2 } } main:7::printf_ulong:60::printf_number_buffer:188 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_ulong::uvalue#0 = printf_ulong::uvalue#2 count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::return#2 = strlen::len#2 } } main:7::queen:45::print:30::printf_ulong:92::printf_number_buffer:188 [ queen::r queen::column count conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_ulong::uvalue#1 = printf_ulong::uvalue#2 count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::return#2 = strlen::len#2 } } main:7::queen:45::print:30::printf_uchar:103::printf_number_buffer:211 [ queen::r queen::column count print::i1#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::return#2 = strlen::len#2 } } main:7::queen:45::print:30::printf_uchar:114::printf_number_buffer:211 [ queen::r queen::column count print::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:30 [ printf_number_buffer::format_min_length#3 ]
Statement [250] (word~) printf_number_buffer::$19 ← (word) strlen::return#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] ( main:7::printf_uint:38::printf_number_buffer:144 [ count TOD_ZERO conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:7::printf_ulong:60::printf_number_buffer:188 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_ulong::uvalue#0 = printf_ulong::uvalue#2 count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:7::queen:45::print:30::printf_ulong:92::printf_number_buffer:188 [ queen::r queen::column count conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_ulong::uvalue#1 = printf_ulong::uvalue#2 count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:7::queen:45::print:30::printf_uchar:103::printf_number_buffer:211 [ queen::r queen::column count print::i1#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:7::queen:45::print:30::printf_uchar:114::printf_number_buffer:211 [ queen::r queen::column count print::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } ) always clobbers reg byte a
Statement [251] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] ( main:7::printf_uint:38::printf_number_buffer:144 [ count TOD_ZERO conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:7::printf_ulong:60::printf_number_buffer:188 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_ulong::uvalue#0 = printf_ulong::uvalue#2 count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:7::queen:45::print:30::printf_ulong:92::printf_number_buffer:188 [ queen::r queen::column count conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_ulong::uvalue#1 = printf_ulong::uvalue#2 count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:7::queen:45::print:30::printf_uchar:103::printf_number_buffer:211 [ queen::r queen::column count print::i1#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:7::queen:45::print:30::printf_uchar:114::printf_number_buffer:211 [ queen::r queen::column count print::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } ) always clobbers reg byte a
Statement [255] (signed byte) printf_number_buffer::padding#1 ← (signed byte)(byte) printf_number_buffer::format_min_length#3 - (signed byte) printf_number_buffer::len#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] ( main:7::printf_uint:38::printf_number_buffer:144 [ count TOD_ZERO conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:7::printf_ulong:60::printf_number_buffer:188 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_ulong::uvalue#0 = printf_ulong::uvalue#2 count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:7::queen:45::print:30::printf_ulong:92::printf_number_buffer:188 [ queen::r queen::column count conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_ulong::uvalue#1 = printf_ulong::uvalue#2 count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:7::queen:45::print:30::printf_uchar:103::printf_number_buffer:211 [ queen::r queen::column count print::i1#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:7::queen:45::print:30::printf_uchar:114::printf_number_buffer:211 [ queen::r queen::column count print::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } ) always clobbers reg byte a
Statement [285] (byte~) ultoa::$11 ← (byte)(dword) ultoa::value#2 [ printf_buffer ultoa::buffer#11 ultoa::$11 ] ( main:7::printf_ulong:60::ultoa:186 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer ultoa::buffer#11 ultoa::$11 ] { { printf_ulong::uvalue#0 = printf_ulong::uvalue#2 count ultoa::value#1 } } main:7::queen:45::print:30::printf_ulong:92::ultoa:186 [ queen::r queen::column count conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer ultoa::buffer#11 ultoa::$11 ] { { printf_ulong::uvalue#1 = printf_ulong::uvalue#2 count ultoa::value#1 } } ) always clobbers reg byte a
Statement [286] *((byte*) ultoa::buffer#11) ← *((const byte*) DIGITS + (byte~) ultoa::$11) [ printf_buffer ultoa::buffer#11 ] ( main:7::printf_ulong:60::ultoa:186 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer ultoa::buffer#11 ] { { printf_ulong::uvalue#0 = printf_ulong::uvalue#2 count ultoa::value#1 } } main:7::queen:45::print:30::printf_ulong:92::ultoa:186 [ queen::r queen::column count conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer ultoa::buffer#11 ] { { printf_ulong::uvalue#1 = printf_ulong::uvalue#2 count ultoa::value#1 } } ) always clobbers reg byte a reg byte y
@ -10554,7 +10553,6 @@ Statement [242] (word) utoa_append::return#0 ← (word) utoa_append::value#2 [ p
Statement [243] (word) utoa::value#0 ← (word) utoa_append::return#0 [ printf_buffer utoa::digit#2 utoa::buffer#11 utoa::value#0 ] ( main:7::printf_uint:38::utoa:142 [ count TOD_ZERO conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer utoa::digit#2 utoa::buffer#11 utoa::value#0 ] { } ) always clobbers reg byte a
Statement [249] (word) strlen::return#2 ← (word) strlen::len#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] ( main:7::printf_uint:38::printf_number_buffer:144 [ count TOD_ZERO conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::return#2 = strlen::len#2 } } main:7::printf_ulong:60::printf_number_buffer:188 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_ulong::uvalue#0 = printf_ulong::uvalue#2 count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::return#2 = strlen::len#2 } } main:7::queen:45::print:30::printf_ulong:92::printf_number_buffer:188 [ queen::r queen::column count conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_ulong::uvalue#1 = printf_ulong::uvalue#2 count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::return#2 = strlen::len#2 } } main:7::queen:45::print:30::printf_uchar:103::printf_number_buffer:211 [ queen::r queen::column count print::i1#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::return#2 = strlen::len#2 } } main:7::queen:45::print:30::printf_uchar:114::printf_number_buffer:211 [ queen::r queen::column count print::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a
Statement [250] (word~) printf_number_buffer::$19 ← (word) strlen::return#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] ( main:7::printf_uint:38::printf_number_buffer:144 [ count TOD_ZERO conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:7::printf_ulong:60::printf_number_buffer:188 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_ulong::uvalue#0 = printf_ulong::uvalue#2 count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:7::queen:45::print:30::printf_ulong:92::printf_number_buffer:188 [ queen::r queen::column count conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_ulong::uvalue#1 = printf_ulong::uvalue#2 count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:7::queen:45::print:30::printf_uchar:103::printf_number_buffer:211 [ queen::r queen::column count print::i1#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:7::queen:45::print:30::printf_uchar:114::printf_number_buffer:211 [ queen::r queen::column count print::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } ) always clobbers reg byte a
Statement [251] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] ( main:7::printf_uint:38::printf_number_buffer:144 [ count TOD_ZERO conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:7::printf_ulong:60::printf_number_buffer:188 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_ulong::uvalue#0 = printf_ulong::uvalue#2 count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:7::queen:45::print:30::printf_ulong:92::printf_number_buffer:188 [ queen::r queen::column count conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_ulong::uvalue#1 = printf_ulong::uvalue#2 count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:7::queen:45::print:30::printf_uchar:103::printf_number_buffer:211 [ queen::r queen::column count print::i1#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:7::queen:45::print:30::printf_uchar:114::printf_number_buffer:211 [ queen::r queen::column count print::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } ) always clobbers reg byte a
Statement [255] (signed byte) printf_number_buffer::padding#1 ← (signed byte)(byte) printf_number_buffer::format_min_length#3 - (signed byte) printf_number_buffer::len#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] ( main:7::printf_uint:38::printf_number_buffer:144 [ count TOD_ZERO conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:7::printf_ulong:60::printf_number_buffer:188 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_ulong::uvalue#0 = printf_ulong::uvalue#2 count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:7::queen:45::print:30::printf_ulong:92::printf_number_buffer:188 [ queen::r queen::column count conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_ulong::uvalue#1 = printf_ulong::uvalue#2 count } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:7::queen:45::print:30::printf_uchar:103::printf_number_buffer:211 [ queen::r queen::column count print::i1#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:7::queen:45::print:30::printf_uchar:114::printf_number_buffer:211 [ queen::r queen::column count print::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } ) always clobbers reg byte a
Statement [285] (byte~) ultoa::$11 ← (byte)(dword) ultoa::value#2 [ printf_buffer ultoa::buffer#11 ultoa::$11 ] ( main:7::printf_ulong:60::ultoa:186 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer ultoa::buffer#11 ultoa::$11 ] { { printf_ulong::uvalue#0 = printf_ulong::uvalue#2 count ultoa::value#1 } } main:7::queen:45::print:30::printf_ulong:92::ultoa:186 [ queen::r queen::column count conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer ultoa::buffer#11 ultoa::$11 ] { { printf_ulong::uvalue#1 = printf_ulong::uvalue#2 count ultoa::value#1 } } ) always clobbers reg byte a
Statement [286] *((byte*) ultoa::buffer#11) ← *((const byte*) DIGITS + (byte~) ultoa::$11) [ printf_buffer ultoa::buffer#11 ] ( main:7::printf_ulong:60::ultoa:186 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer ultoa::buffer#11 ] { { printf_ulong::uvalue#0 = printf_ulong::uvalue#2 count ultoa::value#1 } } main:7::queen:45::print:30::printf_ulong:92::ultoa:186 [ queen::r queen::column count conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer ultoa::buffer#11 ] { { printf_ulong::uvalue#1 = printf_ulong::uvalue#2 count ultoa::value#1 } } ) always clobbers reg byte a reg byte y

View File

@ -437,8 +437,7 @@ printf_number_buffer: {
// strlen(buffer.digits)
// len = (signed char)strlen(buffer.digits)
// There is a minimum length - work out the padding
lda.z __19
tay
ldy.z __19
// if(buffer.sign)
lda #0
cmp.z buffer_sign

View File

@ -9324,7 +9324,6 @@ Statement [110] (word) utoa::value#0 ← (word) utoa_append::return#0 [ printf_b
Statement [116] (word) strlen::return#2 ← (word) strlen::len#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] ( main:6::printf_uint:15::printf_number_buffer:53 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::return#2 = strlen::len#2 } } main:6::printf_ulong:21::printf_number_buffer:78 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_ulong::uvalue#0 = printf_ulong::uvalue#2 count#10 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::return#2 = strlen::len#2 } } main:6::queens:17::print:68::printf_ulong:172::printf_number_buffer:78 [ queens::row#10 count#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_ulong::uvalue#1 = printf_ulong::uvalue#2 count#2 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::return#2 = strlen::len#2 } } main:6::queens:17::print:68::printf_uchar:183::printf_number_buffer:264 [ queens::row#10 count#2 print::i1#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::return#2 = strlen::len#2 } } main:6::queens:17::print:68::printf_uchar:194::printf_number_buffer:264 [ queens::row#10 count#2 print::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:26 [ printf_number_buffer::format_min_length#3 ]
Statement [117] (word~) printf_number_buffer::$19 ← (word) strlen::return#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] ( main:6::printf_uint:15::printf_number_buffer:53 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:6::printf_ulong:21::printf_number_buffer:78 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_ulong::uvalue#0 = printf_ulong::uvalue#2 count#10 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:6::queens:17::print:68::printf_ulong:172::printf_number_buffer:78 [ queens::row#10 count#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_ulong::uvalue#1 = printf_ulong::uvalue#2 count#2 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:6::queens:17::print:68::printf_uchar:183::printf_number_buffer:264 [ queens::row#10 count#2 print::i1#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:6::queens:17::print:68::printf_uchar:194::printf_number_buffer:264 [ queens::row#10 count#2 print::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } ) always clobbers reg byte a
Statement [118] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] ( main:6::printf_uint:15::printf_number_buffer:53 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:6::printf_ulong:21::printf_number_buffer:78 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_ulong::uvalue#0 = printf_ulong::uvalue#2 count#10 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:6::queens:17::print:68::printf_ulong:172::printf_number_buffer:78 [ queens::row#10 count#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_ulong::uvalue#1 = printf_ulong::uvalue#2 count#2 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:6::queens:17::print:68::printf_uchar:183::printf_number_buffer:264 [ queens::row#10 count#2 print::i1#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:6::queens:17::print:68::printf_uchar:194::printf_number_buffer:264 [ queens::row#10 count#2 print::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } ) always clobbers reg byte a
Statement [122] (signed byte) printf_number_buffer::padding#1 ← (signed byte)(byte) printf_number_buffer::format_min_length#3 - (signed byte) printf_number_buffer::len#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] ( main:6::printf_uint:15::printf_number_buffer:53 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:6::printf_ulong:21::printf_number_buffer:78 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_ulong::uvalue#0 = printf_ulong::uvalue#2 count#10 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:6::queens:17::print:68::printf_ulong:172::printf_number_buffer:78 [ queens::row#10 count#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_ulong::uvalue#1 = printf_ulong::uvalue#2 count#2 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:6::queens:17::print:68::printf_uchar:183::printf_number_buffer:264 [ queens::row#10 count#2 print::i1#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:6::queens:17::print:68::printf_uchar:194::printf_number_buffer:264 [ queens::row#10 count#2 print::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } ) always clobbers reg byte a
Statement [155] if(*((const byte*) board + (byte) legal::i#10)==(byte) legal::column#0) goto legal::@return [ legal::row#0 legal::column#0 legal::i#10 ] ( main:6::queens:17::legal:61 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color count#10 printf_buffer queens::row#10 legal::row#0 legal::column#0 legal::i#10 ] { { legal::row#0 = queens::row#10 } { legal::return#0 = legal::return#4 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:94 [ legal::row#0 ]
@ -9440,7 +9439,6 @@ Statement [109] (word) utoa_append::return#0 ← (word) utoa_append::value#2 [ p
Statement [110] (word) utoa::value#0 ← (word) utoa_append::return#0 [ printf_buffer utoa::digit#2 utoa::buffer#11 utoa::value#0 ] ( main:6::printf_uint:15::utoa:51 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer utoa::digit#2 utoa::buffer#11 utoa::value#0 ] { } ) always clobbers reg byte a
Statement [116] (word) strlen::return#2 ← (word) strlen::len#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] ( main:6::printf_uint:15::printf_number_buffer:53 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::return#2 = strlen::len#2 } } main:6::printf_ulong:21::printf_number_buffer:78 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_ulong::uvalue#0 = printf_ulong::uvalue#2 count#10 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::return#2 = strlen::len#2 } } main:6::queens:17::print:68::printf_ulong:172::printf_number_buffer:78 [ queens::row#10 count#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_ulong::uvalue#1 = printf_ulong::uvalue#2 count#2 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::return#2 = strlen::len#2 } } main:6::queens:17::print:68::printf_uchar:183::printf_number_buffer:264 [ queens::row#10 count#2 print::i1#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::return#2 = strlen::len#2 } } main:6::queens:17::print:68::printf_uchar:194::printf_number_buffer:264 [ queens::row#10 count#2 print::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a
Statement [117] (word~) printf_number_buffer::$19 ← (word) strlen::return#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] ( main:6::printf_uint:15::printf_number_buffer:53 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:6::printf_ulong:21::printf_number_buffer:78 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_ulong::uvalue#0 = printf_ulong::uvalue#2 count#10 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:6::queens:17::print:68::printf_ulong:172::printf_number_buffer:78 [ queens::row#10 count#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_ulong::uvalue#1 = printf_ulong::uvalue#2 count#2 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:6::queens:17::print:68::printf_uchar:183::printf_number_buffer:264 [ queens::row#10 count#2 print::i1#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:6::queens:17::print:68::printf_uchar:194::printf_number_buffer:264 [ queens::row#10 count#2 print::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } ) always clobbers reg byte a
Statement [118] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] ( main:6::printf_uint:15::printf_number_buffer:53 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:6::printf_ulong:21::printf_number_buffer:78 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_ulong::uvalue#0 = printf_ulong::uvalue#2 count#10 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:6::queens:17::print:68::printf_ulong:172::printf_number_buffer:78 [ queens::row#10 count#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_ulong::uvalue#1 = printf_ulong::uvalue#2 count#2 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:6::queens:17::print:68::printf_uchar:183::printf_number_buffer:264 [ queens::row#10 count#2 print::i1#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:6::queens:17::print:68::printf_uchar:194::printf_number_buffer:264 [ queens::row#10 count#2 print::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#3 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } ) always clobbers reg byte a
Statement [122] (signed byte) printf_number_buffer::padding#1 ← (signed byte)(byte) printf_number_buffer::format_min_length#3 - (signed byte) printf_number_buffer::len#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] ( main:6::printf_uint:15::printf_number_buffer:53 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:6::printf_ulong:21::printf_number_buffer:78 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_ulong::uvalue#0 = printf_ulong::uvalue#2 count#10 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:6::queens:17::print:68::printf_ulong:172::printf_number_buffer:78 [ queens::row#10 count#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_ulong::uvalue#1 = printf_ulong::uvalue#2 count#2 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:6::queens:17::print:68::printf_uchar:183::printf_number_buffer:264 [ queens::row#10 count#2 print::i1#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_uchar::uvalue#1 = printf_uchar::uvalue#2 print::i1#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:6::queens:17::print:68::printf_uchar:194::printf_number_buffer:264 [ queens::row#10 count#2 print::i#2 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_uchar::uvalue#0 = printf_uchar::uvalue#2 print::i#2 } { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } ) always clobbers reg byte a
Statement [155] if(*((const byte*) board + (byte) legal::i#10)==(byte) legal::column#0) goto legal::@return [ legal::row#0 legal::column#0 legal::i#10 ] ( main:6::queens:17::legal:61 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color count#10 printf_buffer queens::row#10 legal::row#0 legal::column#0 legal::i#10 ] { { legal::row#0 = queens::row#10 } { legal::return#0 = legal::return#4 } } ) always clobbers reg byte a
Statement [158] (byte) legal::diff1_return#1 ← (byte) legal::diff1_a#0 - (byte) legal::column#0 [ legal::row#0 legal::column#0 legal::i#10 legal::diff1_return#1 ] ( main:6::queens:17::legal:61 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color count#10 printf_buffer queens::row#10 legal::row#0 legal::column#0 legal::i#10 legal::diff1_return#1 ] { { legal::row#0 = queens::row#10 } { legal::return#0 = legal::return#4 } } ) always clobbers reg byte a
@ -9642,82 +9640,82 @@ Uplifting [printf_padding] best 1915363 combination zp[1]:57 [ printf_padding::i
Uplifting [uctoa] best 1906357 combination zp[2]:70 [ uctoa::buffer#11 uctoa::buffer#14 uctoa::buffer#4 ] reg byte x [ uctoa::value#2 uctoa::value#6 uctoa::value#1 uctoa::value#0 ] zp[1]:67 [ uctoa::digit#2 uctoa::digit#1 ] zp[1]:69 [ uctoa::started#2 uctoa::started#4 ] zp[1]:138 [ uctoa::digit_value#0 ] zp[2]:136 [ uctoa::buffer#3 ]
Uplifting [cputs] best 1906267 combination zp[2]:8 [ cputs::s#11 cputs::s#12 cputs::s#0 ] reg byte a [ cputs::c#1 ]
Uplifting [ultoa] best 1904963 combination zp[2]:46 [ ultoa::buffer#11 ultoa::buffer#14 ultoa::buffer#4 ] zp[4]:41 [ ultoa::value#2 ultoa::value#6 ultoa::value#1 ultoa::value#0 ] zp[1]:40 [ ultoa::digit#2 ultoa::digit#1 ] reg byte a [ ultoa::$10 ] reg byte x [ ultoa::started#2 ultoa::started#4 ] zp[4]:120 [ ultoa::digit_value#0 ] reg byte a [ ultoa::$11 ] zp[2]:117 [ ultoa::buffer#3 ]
Uplifting [printf_number_buffer] best 1904949 combination reg byte y [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ] zp[1]:32 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] zp[2]:112 [ printf_number_buffer::$19 ] zp[1]:29 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] reg byte x [ printf_number_buffer::format_min_length#3 ] zp[1]:28 [ printf_number_buffer::format_zero_padding#10 ] zp[1]:27 [ printf_number_buffer::format_justify_left#10 ] zp[1]:30 [ printf_number_buffer::format_upper_case#10 ]
Uplifting [printf_number_buffer] best 1904947 combination reg byte y [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ] zp[1]:32 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] zp[2]:112 [ printf_number_buffer::$19 ] zp[1]:29 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] reg byte x [ printf_number_buffer::format_min_length#3 ] zp[1]:28 [ printf_number_buffer::format_zero_padding#10 ] zp[1]:27 [ printf_number_buffer::format_justify_left#10 ] zp[1]:30 [ printf_number_buffer::format_upper_case#10 ]
Limited combination testing to 100 combinations of 256 possible.
Uplifting [utoa_append] best 1904346 combination zp[2]:48 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] reg byte x [ utoa_append::digit#2 utoa_append::digit#1 ] zp[2]:106 [ utoa_append::sub#0 ] zp[2]:108 [ utoa_append::return#0 ] zp[2]:104 [ utoa_append::buffer#0 ]
Uplifting [print] best 1904346 combination zp[1]:39 [ print::j#2 print::j#1 ] zp[1]:37 [ print::i#2 print::i#1 ] zp[1]:38 [ print::i1#2 print::i1#1 ]
Uplifting [legal] best 1901646 combination reg byte a [ legal::diff2_return#2 legal::diff2_return#0 legal::diff2_return#1 ] zp[1]:35 [ legal::diff1_return#2 legal::diff1_return#0 legal::diff1_return#1 ] reg byte y [ legal::i#10 legal::i#1 ] reg byte x [ legal::$0 ] zp[1]:115 [ legal::diff1_a#0 ] zp[1]:95 [ legal::column#0 ] zp[1]:94 [ legal::row#0 ] zp[1]:96 [ legal::return#0 ] zp[1]:34 [ legal::return#4 ]
Uplifting [utoa_append] best 1904344 combination zp[2]:48 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] reg byte x [ utoa_append::digit#2 utoa_append::digit#1 ] zp[2]:106 [ utoa_append::sub#0 ] zp[2]:108 [ utoa_append::return#0 ] zp[2]:104 [ utoa_append::buffer#0 ]
Uplifting [print] best 1904344 combination zp[1]:39 [ print::j#2 print::j#1 ] zp[1]:37 [ print::i#2 print::i#1 ] zp[1]:38 [ print::i1#2 print::i1#1 ]
Uplifting [legal] best 1901644 combination reg byte a [ legal::diff2_return#2 legal::diff2_return#0 legal::diff2_return#1 ] zp[1]:35 [ legal::diff1_return#2 legal::diff1_return#0 legal::diff1_return#1 ] reg byte y [ legal::i#10 legal::i#1 ] reg byte x [ legal::$0 ] zp[1]:115 [ legal::diff1_a#0 ] zp[1]:95 [ legal::column#0 ] zp[1]:94 [ legal::row#0 ] zp[1]:96 [ legal::return#0 ] zp[1]:34 [ legal::return#4 ]
Limited combination testing to 100 combinations of 82944 possible.
Uplifting [printf_uchar] best 1901043 combination reg byte x [ printf_uchar::uvalue#2 printf_uchar::uvalue#1 printf_uchar::uvalue#0 ]
Uplifting [utoa] best 1900909 combination zp[2]:24 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] zp[2]:21 [ utoa::value#2 utoa::value#6 utoa::value#0 ] zp[1]:20 [ utoa::digit#2 utoa::digit#1 ] reg byte a [ utoa::$10 ] reg byte x [ utoa::started#2 utoa::started#4 ] zp[2]:102 [ utoa::digit_value#0 ] reg byte a [ utoa::$11 ] zp[2]:99 [ utoa::buffer#3 ]
Uplifting [printf_ulong] best 1900909 combination zp[4]:15 [ printf_ulong::uvalue#2 printf_ulong::uvalue#0 printf_ulong::uvalue#1 ]
Uplifting [clrscr] best 1899319 combination reg byte y [ clrscr::c#2 clrscr::c#1 ] zp[2]:5 [ clrscr::line_cols#5 clrscr::line_cols#1 ] zp[2]:3 [ clrscr::line_text#5 clrscr::line_text#1 ] reg byte x [ clrscr::l#2 clrscr::l#1 ]
Uplifting [queens] best 1899259 combination zp[1]:10 [ queens::row#10 queens::row#1 queens::row#2 ] reg byte a [ queens::$2 ]
Uplifting [RADIX] best 1899259 combination
Uplifting [MOS6526_CIA] best 1899259 combination
Uplifting [MOS6569_VICII] best 1899259 combination
Uplifting [MOS6581_SID] best 1899259 combination
Uplifting [gotoxy] best 1899259 combination
Uplifting [cputln] best 1899259 combination
Uplifting [cscroll] best 1899259 combination
Uplifting [printf_format_number] best 1899259 combination
Uplifting [printf_buffer_number] best 1899259 combination
Uplifting [printf_format_string] best 1899259 combination
Uplifting [printf_uint] best 1899259 combination
Uplifting [main] best 1899259 combination
Uplifting [__start] best 1899259 combination
Uplifting [printf_uchar] best 1901041 combination reg byte x [ printf_uchar::uvalue#2 printf_uchar::uvalue#1 printf_uchar::uvalue#0 ]
Uplifting [utoa] best 1900907 combination zp[2]:24 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] zp[2]:21 [ utoa::value#2 utoa::value#6 utoa::value#0 ] zp[1]:20 [ utoa::digit#2 utoa::digit#1 ] reg byte a [ utoa::$10 ] reg byte x [ utoa::started#2 utoa::started#4 ] zp[2]:102 [ utoa::digit_value#0 ] reg byte a [ utoa::$11 ] zp[2]:99 [ utoa::buffer#3 ]
Uplifting [printf_ulong] best 1900907 combination zp[4]:15 [ printf_ulong::uvalue#2 printf_ulong::uvalue#0 printf_ulong::uvalue#1 ]
Uplifting [clrscr] best 1899317 combination reg byte y [ clrscr::c#2 clrscr::c#1 ] zp[2]:5 [ clrscr::line_cols#5 clrscr::line_cols#1 ] zp[2]:3 [ clrscr::line_text#5 clrscr::line_text#1 ] reg byte x [ clrscr::l#2 clrscr::l#1 ]
Uplifting [queens] best 1899257 combination zp[1]:10 [ queens::row#10 queens::row#1 queens::row#2 ] reg byte a [ queens::$2 ]
Uplifting [RADIX] best 1899257 combination
Uplifting [MOS6526_CIA] best 1899257 combination
Uplifting [MOS6569_VICII] best 1899257 combination
Uplifting [MOS6581_SID] best 1899257 combination
Uplifting [gotoxy] best 1899257 combination
Uplifting [cputln] best 1899257 combination
Uplifting [cscroll] best 1899257 combination
Uplifting [printf_format_number] best 1899257 combination
Uplifting [printf_buffer_number] best 1899257 combination
Uplifting [printf_format_string] best 1899257 combination
Uplifting [printf_uint] best 1899257 combination
Uplifting [main] best 1899257 combination
Uplifting [__start] best 1899257 combination
Attempting to uplift remaining variables inzp[1]:141 [ uctoa_append::sub#0 ]
Uplifting [uctoa_append] best 1899259 combination zp[1]:141 [ uctoa_append::sub#0 ]
Uplifting [uctoa_append] best 1899257 combination zp[1]:141 [ uctoa_append::sub#0 ]
Attempting to uplift remaining variables inzp[1]:88 [ conio_cursor_y ]
Uplifting [] best 1899259 combination zp[1]:88 [ conio_cursor_y ]
Uplifting [] best 1899257 combination zp[1]:88 [ conio_cursor_y ]
Attempting to uplift remaining variables inzp[1]:57 [ printf_padding::i#2 printf_padding::i#1 ]
Uplifting [printf_padding] best 1899259 combination zp[1]:57 [ printf_padding::i#2 printf_padding::i#1 ]
Uplifting [printf_padding] best 1899257 combination zp[1]:57 [ printf_padding::i#2 printf_padding::i#1 ]
Attempting to uplift remaining variables inzp[1]:87 [ conio_cursor_x ]
Uplifting [] best 1899259 combination zp[1]:87 [ conio_cursor_x ]
Uplifting [] best 1899257 combination zp[1]:87 [ conio_cursor_x ]
Attempting to uplift remaining variables inzp[1]:67 [ uctoa::digit#2 uctoa::digit#1 ]
Uplifting [uctoa] best 1899259 combination zp[1]:67 [ uctoa::digit#2 uctoa::digit#1 ]
Uplifting [uctoa] best 1899257 combination zp[1]:67 [ uctoa::digit#2 uctoa::digit#1 ]
Attempting to uplift remaining variables inzp[1]:55 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ]
Uplifting [printf_padding] best 1899259 combination zp[1]:55 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ]
Uplifting [printf_padding] best 1899257 combination zp[1]:55 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ]
Attempting to uplift remaining variables inzp[1]:56 [ printf_padding::pad#5 ]
Uplifting [printf_padding] best 1899259 combination zp[1]:56 [ printf_padding::pad#5 ]
Uplifting [printf_padding] best 1899257 combination zp[1]:56 [ printf_padding::pad#5 ]
Attempting to uplift remaining variables inzp[1]:69 [ uctoa::started#2 uctoa::started#4 ]
Uplifting [uctoa] best 1899259 combination zp[1]:69 [ uctoa::started#2 uctoa::started#4 ]
Uplifting [uctoa] best 1899257 combination zp[1]:69 [ uctoa::started#2 uctoa::started#4 ]
Attempting to uplift remaining variables inzp[1]:138 [ uctoa::digit_value#0 ]
Uplifting [uctoa] best 1899259 combination zp[1]:138 [ uctoa::digit_value#0 ]
Uplifting [uctoa] best 1899257 combination zp[1]:138 [ uctoa::digit_value#0 ]
Attempting to uplift remaining variables inzp[1]:40 [ ultoa::digit#2 ultoa::digit#1 ]
Uplifting [ultoa] best 1899259 combination zp[1]:40 [ ultoa::digit#2 ultoa::digit#1 ]
Uplifting [ultoa] best 1899257 combination zp[1]:40 [ ultoa::digit#2 ultoa::digit#1 ]
Attempting to uplift remaining variables inzp[1]:32 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ]
Uplifting [printf_number_buffer] best 1899259 combination zp[1]:32 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ]
Uplifting [printf_number_buffer] best 1899257 combination zp[1]:32 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ]
Attempting to uplift remaining variables inzp[1]:29 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ]
Uplifting [printf_number_buffer] best 1899259 combination zp[1]:29 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ]
Uplifting [printf_number_buffer] best 1899257 combination zp[1]:29 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ]
Attempting to uplift remaining variables inzp[1]:39 [ print::j#2 print::j#1 ]
Uplifting [print] best 1899259 combination zp[1]:39 [ print::j#2 print::j#1 ]
Uplifting [print] best 1899257 combination zp[1]:39 [ print::j#2 print::j#1 ]
Attempting to uplift remaining variables inzp[1]:28 [ printf_number_buffer::format_zero_padding#10 ]
Uplifting [printf_number_buffer] best 1899259 combination zp[1]:28 [ printf_number_buffer::format_zero_padding#10 ]
Uplifting [printf_number_buffer] best 1899257 combination zp[1]:28 [ printf_number_buffer::format_zero_padding#10 ]
Attempting to uplift remaining variables inzp[1]:27 [ printf_number_buffer::format_justify_left#10 ]
Uplifting [printf_number_buffer] best 1899259 combination zp[1]:27 [ printf_number_buffer::format_justify_left#10 ]
Uplifting [printf_number_buffer] best 1899257 combination zp[1]:27 [ printf_number_buffer::format_justify_left#10 ]
Attempting to uplift remaining variables inzp[1]:35 [ legal::diff1_return#2 legal::diff1_return#0 legal::diff1_return#1 ]
Uplifting [legal] best 1899259 combination zp[1]:35 [ legal::diff1_return#2 legal::diff1_return#0 legal::diff1_return#1 ]
Uplifting [legal] best 1899257 combination zp[1]:35 [ legal::diff1_return#2 legal::diff1_return#0 legal::diff1_return#1 ]
Attempting to uplift remaining variables inzp[1]:30 [ printf_number_buffer::format_upper_case#10 ]
Uplifting [printf_number_buffer] best 1899259 combination zp[1]:30 [ printf_number_buffer::format_upper_case#10 ]
Uplifting [printf_number_buffer] best 1899257 combination zp[1]:30 [ printf_number_buffer::format_upper_case#10 ]
Attempting to uplift remaining variables inzp[1]:37 [ print::i#2 print::i#1 ]
Uplifting [print] best 1899259 combination zp[1]:37 [ print::i#2 print::i#1 ]
Uplifting [print] best 1899257 combination zp[1]:37 [ print::i#2 print::i#1 ]
Attempting to uplift remaining variables inzp[1]:38 [ print::i1#2 print::i1#1 ]
Uplifting [print] best 1899259 combination zp[1]:38 [ print::i1#2 print::i1#1 ]
Uplifting [print] best 1899257 combination zp[1]:38 [ print::i1#2 print::i1#1 ]
Attempting to uplift remaining variables inzp[1]:115 [ legal::diff1_a#0 ]
Uplifting [legal] best 1898259 combination reg byte a [ legal::diff1_a#0 ]
Uplifting [legal] best 1898257 combination reg byte a [ legal::diff1_a#0 ]
Attempting to uplift remaining variables inzp[1]:95 [ legal::column#0 ]
Uplifting [legal] best 1898259 combination zp[1]:95 [ legal::column#0 ]
Uplifting [legal] best 1898257 combination zp[1]:95 [ legal::column#0 ]
Attempting to uplift remaining variables inzp[1]:94 [ legal::row#0 ]
Uplifting [legal] best 1898259 combination zp[1]:94 [ legal::row#0 ]
Uplifting [legal] best 1898257 combination zp[1]:94 [ legal::row#0 ]
Attempting to uplift remaining variables inzp[1]:20 [ utoa::digit#2 utoa::digit#1 ]
Uplifting [utoa] best 1898259 combination zp[1]:20 [ utoa::digit#2 utoa::digit#1 ]
Uplifting [utoa] best 1898257 combination zp[1]:20 [ utoa::digit#2 utoa::digit#1 ]
Attempting to uplift remaining variables inzp[1]:10 [ queens::row#10 queens::row#1 queens::row#2 ]
Uplifting [queens] best 1898259 combination zp[1]:10 [ queens::row#10 queens::row#1 queens::row#2 ]
Uplifting [queens] best 1898257 combination zp[1]:10 [ queens::row#10 queens::row#1 queens::row#2 ]
Attempting to uplift remaining variables inzp[1]:96 [ legal::return#0 ]
Uplifting [legal] best 1898199 combination reg byte a [ legal::return#0 ]
Uplifting [legal] best 1898197 combination reg byte a [ legal::return#0 ]
Attempting to uplift remaining variables inzp[1]:34 [ legal::return#4 ]
Uplifting [legal] best 1898163 combination reg byte a [ legal::return#4 ]
Uplifting [legal] best 1898161 combination reg byte a [ legal::return#4 ]
Coalescing zero page register [ zp[4]:11 [ count#10 count#2 ] ] with [ zp[4]:15 [ printf_ulong::uvalue#2 printf_ulong::uvalue#0 printf_ulong::uvalue#1 ] ] - score: 2
Coalescing zero page register [ zp[1]:10 [ queens::row#10 queens::row#1 queens::row#2 ] ] with [ zp[1]:94 [ legal::row#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:21 [ utoa::value#2 utoa::value#6 utoa::value#0 ] ] with [ zp[2]:48 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] ] - score: 1
@ -10515,8 +10513,7 @@ printf_number_buffer: {
// [117] (word~) printf_number_buffer::$19 ← (word) strlen::return#2
// [118] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 -- vbsyy=_sbyte_vwuz1
// There is a minimum length - work out the padding
lda.z __19
tay
ldy.z __19
// [119] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@13 -- vbuc1_eq_vbuz1_then_la1
lda #0
cmp.z buffer_sign
@ -13069,7 +13066,7 @@ mem[12] [ printf_buffer ]
FINAL ASSEMBLER
Score: 1603536
Score: 1603534
// File Comments
// N Queens Problem in C Using Backtracking
@ -13748,8 +13745,7 @@ printf_number_buffer: {
// len = (signed char)strlen(buffer.digits)
// [118] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 -- vbsyy=_sbyte_vwuz1
// There is a minimum length - work out the padding
lda.z __19
tay
ldy.z __19
// if(buffer.sign)
// [119] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@13 -- vbuc1_eq_vbuz1_then_la1
lda #0

File diff suppressed because one or more lines are too long

View File

@ -723,8 +723,7 @@ printf_number_buffer: {
// strlen(buffer.digits)
// len = (signed char)strlen(buffer.digits)
// There is a minimum length - work out the padding
lda.z __19
tay
ldy.z __19
// if(buffer.sign)
lda #0
cmp.z buffer_sign

View File

@ -9434,7 +9434,6 @@ Statement [176] (word) utoa::value#0 ← (word) utoa_append::return#0 [ printf_b
Statement [182] (word) strlen::return#2 ← (word) strlen::len#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] ( main:6::printf_uint:19::printf_number_buffer:106 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#3 } { strlen::return#2 = strlen::len#2 } } main:6::printf_uint:49::printf_number_buffer:106 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#3 } { strlen::return#2 = strlen::len#2 } } main:6::printf_schar:31::printf_number_buffer:113 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#4 } { strlen::return#2 = strlen::len#2 } } main:6::printf_uchar:37::printf_number_buffer:119 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#5 } { strlen::return#2 = strlen::len#2 } } main:6::printf_sint:43::printf_number_buffer:126 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::return#2 = strlen::len#2 } } main:6::printf_slong:55::printf_number_buffer:133 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::return#2 = strlen::len#2 } } main:6::printf_ulong:61::printf_number_buffer:139 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:24 [ printf_number_buffer::format_min_length#10 ]
Statement [183] (word~) printf_number_buffer::$19 ← (word) strlen::return#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] ( main:6::printf_uint:19::printf_number_buffer:106 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#3 } } main:6::printf_uint:49::printf_number_buffer:106 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#3 } } main:6::printf_schar:31::printf_number_buffer:113 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#4 } } main:6::printf_uchar:37::printf_number_buffer:119 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#5 } } main:6::printf_sint:43::printf_number_buffer:126 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:6::printf_slong:55::printf_number_buffer:133 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:6::printf_ulong:61::printf_number_buffer:139 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a
Statement [184] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] ( main:6::printf_uint:19::printf_number_buffer:106 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#3 } } main:6::printf_uint:49::printf_number_buffer:106 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#3 } } main:6::printf_schar:31::printf_number_buffer:113 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#4 } } main:6::printf_uchar:37::printf_number_buffer:119 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#5 } } main:6::printf_sint:43::printf_number_buffer:126 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:6::printf_slong:55::printf_number_buffer:133 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:6::printf_ulong:61::printf_number_buffer:139 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a
Statement [188] (signed byte) printf_number_buffer::padding#1 ← (signed byte)(byte) printf_number_buffer::format_min_length#10 - (signed byte) printf_number_buffer::len#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] ( main:6::printf_uint:19::printf_number_buffer:106 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#3 } } main:6::printf_uint:49::printf_number_buffer:106 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#3 } } main:6::printf_schar:31::printf_number_buffer:113 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#4 } } main:6::printf_uchar:37::printf_number_buffer:119 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#5 } } main:6::printf_sint:43::printf_number_buffer:126 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:6::printf_slong:55::printf_number_buffer:133 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:6::printf_ulong:61::printf_number_buffer:139 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a
Statement [218] *((byte*) uctoa::buffer#10) ← *((const byte*) DIGITS + (byte) uctoa::value#3) [ printf_buffer uctoa::buffer#10 ] ( main:6::printf_schar:31::uctoa:111 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer uctoa::buffer#10 ] { } main:6::printf_uchar:37::uctoa:117 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer uctoa::buffer#10 ] { } ) always clobbers reg byte a reg byte y
Statement [219] (byte*) uctoa::buffer#3 ← ++ (byte*) uctoa::buffer#10 [ printf_buffer uctoa::buffer#3 ] ( main:6::printf_schar:31::uctoa:111 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer uctoa::buffer#3 ] { } main:6::printf_uchar:37::uctoa:117 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer uctoa::buffer#3 ] { } ) always clobbers reg byte a
@ -9541,7 +9540,6 @@ Statement [175] (word) utoa_append::return#0 ← (word) utoa_append::value#2 [ p
Statement [176] (word) utoa::value#0 ← (word) utoa_append::return#0 [ printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#10 utoa::value#0 ] ( main:6::printf_uint:19::utoa:104 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#10 utoa::value#0 ] { { utoa::radix#1 = utoa::radix#2 printf_uint::format_radix#2 } { utoa::value#10 = utoa::value#2 printf_uint::uvalue#2 } } main:6::printf_uint:49::utoa:104 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#10 utoa::value#0 ] { { utoa::radix#1 = utoa::radix#2 printf_uint::format_radix#2 } { utoa::value#10 = utoa::value#2 printf_uint::uvalue#2 } } main:6::printf_sint:43::utoa:124 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer utoa::max_digits#7 utoa::digit_values#8 utoa::digit#2 utoa::buffer#10 utoa::value#0 ] { } ) always clobbers reg byte a
Statement [182] (word) strlen::return#2 ← (word) strlen::len#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] ( main:6::printf_uint:19::printf_number_buffer:106 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#3 } { strlen::return#2 = strlen::len#2 } } main:6::printf_uint:49::printf_number_buffer:106 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#3 } { strlen::return#2 = strlen::len#2 } } main:6::printf_schar:31::printf_number_buffer:113 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#4 } { strlen::return#2 = strlen::len#2 } } main:6::printf_uchar:37::printf_number_buffer:119 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#5 } { strlen::return#2 = strlen::len#2 } } main:6::printf_sint:43::printf_number_buffer:126 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } { strlen::return#2 = strlen::len#2 } } main:6::printf_slong:55::printf_number_buffer:133 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::return#2 = strlen::len#2 } } main:6::printf_ulong:61::printf_number_buffer:139 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a
Statement [183] (word~) printf_number_buffer::$19 ← (word) strlen::return#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] ( main:6::printf_uint:19::printf_number_buffer:106 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#3 } } main:6::printf_uint:49::printf_number_buffer:106 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#3 } } main:6::printf_schar:31::printf_number_buffer:113 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#4 } } main:6::printf_uchar:37::printf_number_buffer:119 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#5 } } main:6::printf_sint:43::printf_number_buffer:126 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:6::printf_slong:55::printf_number_buffer:133 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:6::printf_ulong:61::printf_number_buffer:139 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a
Statement [184] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] ( main:6::printf_uint:19::printf_number_buffer:106 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#3 } } main:6::printf_uint:49::printf_number_buffer:106 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#3 } } main:6::printf_schar:31::printf_number_buffer:113 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#4 } } main:6::printf_uchar:37::printf_number_buffer:119 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#5 } } main:6::printf_sint:43::printf_number_buffer:126 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:6::printf_slong:55::printf_number_buffer:133 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:6::printf_ulong:61::printf_number_buffer:139 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_min_length#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a
Statement [188] (signed byte) printf_number_buffer::padding#1 ← (signed byte)(byte) printf_number_buffer::format_min_length#10 - (signed byte) printf_number_buffer::len#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] ( main:6::printf_uint:19::printf_number_buffer:106 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#3 } } main:6::printf_uint:49::printf_number_buffer:106 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#3 } } main:6::printf_schar:31::printf_number_buffer:113 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#4 } } main:6::printf_uchar:37::printf_number_buffer:119 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#5 } } main:6::printf_sint:43::printf_number_buffer:126 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_number_buffer::buffer_sign#10 = printf_number_buffer::buffer_sign#2 } } main:6::printf_slong:55::printf_number_buffer:133 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } main:6::printf_ulong:61::printf_number_buffer:139 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a
Statement [218] *((byte*) uctoa::buffer#10) ← *((const byte*) DIGITS + (byte) uctoa::value#3) [ printf_buffer uctoa::buffer#10 ] ( main:6::printf_schar:31::uctoa:111 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer uctoa::buffer#10 ] { } main:6::printf_uchar:37::uctoa:117 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer uctoa::buffer#10 ] { } ) always clobbers reg byte a reg byte y
Statement [219] (byte*) uctoa::buffer#3 ← ++ (byte*) uctoa::buffer#10 [ printf_buffer uctoa::buffer#3 ] ( main:6::printf_schar:31::uctoa:111 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer uctoa::buffer#3 ] { } main:6::printf_uchar:37::uctoa:117 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer uctoa::buffer#3 ] { } ) always clobbers reg byte a
@ -9721,65 +9719,65 @@ Limited combination testing to 100 combinations of 2048 possible.
Uplifting [ultoa] best 44294 combination zp[2]:42 [ ultoa::buffer#10 ultoa::buffer#15 ultoa::buffer#4 ] zp[4]:37 [ ultoa::value#3 ultoa::value#7 ultoa::value#10 ultoa::value#0 ] zp[1]:36 [ ultoa::digit#2 ultoa::digit#1 ] reg byte a [ ultoa::$10 ] reg byte x [ ultoa::started#2 ultoa::started#4 ] zp[4]:113 [ ultoa::digit_value#0 ] reg byte a [ ultoa::$11 ] zp[2]:110 [ ultoa::buffer#3 ]
Uplifting [uctoa] best 44195 combination zp[2]:34 [ uctoa::buffer#10 uctoa::buffer#15 uctoa::buffer#4 ] reg byte x [ uctoa::value#3 uctoa::value#7 uctoa::value#10 uctoa::value#0 ] zp[1]:31 [ uctoa::digit#2 uctoa::digit#1 ] zp[1]:33 [ uctoa::started#2 uctoa::started#4 ] zp[1]:104 [ uctoa::digit_value#0 ] zp[2]:102 [ uctoa::buffer#3 ]
Uplifting [clrscr] best 42605 combination reg byte y [ clrscr::c#2 clrscr::c#1 ] zp[2]:5 [ clrscr::line_cols#5 clrscr::line_cols#1 ] zp[2]:3 [ clrscr::line_text#5 clrscr::line_text#1 ] reg byte x [ clrscr::l#2 clrscr::l#1 ]
Uplifting [printf_number_buffer] best 42582 combination reg byte y [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ] zp[1]:27 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#4 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#0 printf_number_buffer::buffer_sign#5 printf_number_buffer::buffer_sign#3 printf_number_buffer::buffer_sign#1 ] zp[1]:30 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] zp[2]:100 [ printf_number_buffer::$19 ] reg byte x [ printf_number_buffer::format_min_length#10 ] zp[1]:26 [ printf_number_buffer::format_zero_padding#10 ] zp[1]:25 [ printf_number_buffer::format_justify_left#10 ] zp[1]:28 [ printf_number_buffer::format_upper_case#10 ]
Uplifting [printf_number_buffer] best 42580 combination reg byte y [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ] zp[1]:27 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#4 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#0 printf_number_buffer::buffer_sign#5 printf_number_buffer::buffer_sign#3 printf_number_buffer::buffer_sign#1 ] zp[1]:30 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] zp[2]:100 [ printf_number_buffer::$19 ] reg byte x [ printf_number_buffer::format_min_length#10 ] zp[1]:26 [ printf_number_buffer::format_zero_padding#10 ] zp[1]:25 [ printf_number_buffer::format_justify_left#10 ] zp[1]:28 [ printf_number_buffer::format_upper_case#10 ]
Limited combination testing to 100 combinations of 256 possible.
Uplifting [printf_uint] best 42573 combination zp[2]:11 [ printf_uint::uvalue#2 ] reg byte x [ printf_uint::format_radix#2 ]
Uplifting [main] best 42573 combination zp[1]:83 [ main::c ]
Uplifting [RADIX] best 42573 combination
Uplifting [MOS6526_CIA] best 42573 combination
Uplifting [MOS6569_VICII] best 42573 combination
Uplifting [MOS6581_SID] best 42573 combination
Uplifting [cputln] best 42573 combination
Uplifting [cscroll] best 42573 combination
Uplifting [printf_format_number] best 42573 combination
Uplifting [printf_buffer_number] best 42573 combination
Uplifting [printf_format_string] best 42573 combination
Uplifting [printf_slong] best 42573 combination
Uplifting [printf_ulong] best 42573 combination
Uplifting [printf_sint] best 42573 combination
Uplifting [printf_schar] best 42573 combination
Uplifting [printf_uchar] best 42573 combination
Uplifting [__start] best 42573 combination
Uplifting [printf_uint] best 42571 combination zp[2]:11 [ printf_uint::uvalue#2 ] reg byte x [ printf_uint::format_radix#2 ]
Uplifting [main] best 42571 combination zp[1]:83 [ main::c ]
Uplifting [RADIX] best 42571 combination
Uplifting [MOS6526_CIA] best 42571 combination
Uplifting [MOS6569_VICII] best 42571 combination
Uplifting [MOS6581_SID] best 42571 combination
Uplifting [cputln] best 42571 combination
Uplifting [cscroll] best 42571 combination
Uplifting [printf_format_number] best 42571 combination
Uplifting [printf_buffer_number] best 42571 combination
Uplifting [printf_format_string] best 42571 combination
Uplifting [printf_slong] best 42571 combination
Uplifting [printf_ulong] best 42571 combination
Uplifting [printf_sint] best 42571 combination
Uplifting [printf_schar] best 42571 combination
Uplifting [printf_uchar] best 42571 combination
Uplifting [__start] best 42571 combination
Attempting to uplift remaining variables inzp[1]:107 [ uctoa_append::sub#0 ]
Uplifting [uctoa_append] best 42573 combination zp[1]:107 [ uctoa_append::sub#0 ]
Uplifting [uctoa_append] best 42571 combination zp[1]:107 [ uctoa_append::sub#0 ]
Attempting to uplift remaining variables inzp[1]:78 [ conio_cursor_y ]
Uplifting [] best 42573 combination zp[1]:78 [ conio_cursor_y ]
Uplifting [] best 42571 combination zp[1]:78 [ conio_cursor_y ]
Attempting to uplift remaining variables inzp[1]:53 [ printf_padding::i#2 printf_padding::i#1 ]
Uplifting [printf_padding] best 42573 combination zp[1]:53 [ printf_padding::i#2 printf_padding::i#1 ]
Uplifting [printf_padding] best 42571 combination zp[1]:53 [ printf_padding::i#2 printf_padding::i#1 ]
Attempting to uplift remaining variables inzp[1]:77 [ conio_cursor_x ]
Uplifting [] best 42573 combination zp[1]:77 [ conio_cursor_x ]
Uplifting [] best 42571 combination zp[1]:77 [ conio_cursor_x ]
Attempting to uplift remaining variables inzp[1]:51 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ]
Uplifting [printf_padding] best 42573 combination zp[1]:51 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ]
Uplifting [printf_padding] best 42571 combination zp[1]:51 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ]
Attempting to uplift remaining variables inzp[1]:31 [ uctoa::digit#2 uctoa::digit#1 ]
Uplifting [uctoa] best 42573 combination zp[1]:31 [ uctoa::digit#2 uctoa::digit#1 ]
Uplifting [uctoa] best 42571 combination zp[1]:31 [ uctoa::digit#2 uctoa::digit#1 ]
Attempting to uplift remaining variables inzp[1]:36 [ ultoa::digit#2 ultoa::digit#1 ]
Uplifting [ultoa] best 42573 combination zp[1]:36 [ ultoa::digit#2 ultoa::digit#1 ]
Uplifting [ultoa] best 42571 combination zp[1]:36 [ ultoa::digit#2 ultoa::digit#1 ]
Attempting to uplift remaining variables inzp[1]:18 [ utoa::digit#2 utoa::digit#1 ]
Uplifting [utoa] best 42573 combination zp[1]:18 [ utoa::digit#2 utoa::digit#1 ]
Uplifting [utoa] best 42571 combination zp[1]:18 [ utoa::digit#2 utoa::digit#1 ]
Attempting to uplift remaining variables inzp[1]:52 [ printf_padding::pad#5 ]
Uplifting [printf_padding] best 42573 combination zp[1]:52 [ printf_padding::pad#5 ]
Uplifting [printf_padding] best 42571 combination zp[1]:52 [ printf_padding::pad#5 ]
Attempting to uplift remaining variables inzp[1]:33 [ uctoa::started#2 uctoa::started#4 ]
Uplifting [uctoa] best 42573 combination zp[1]:33 [ uctoa::started#2 uctoa::started#4 ]
Uplifting [uctoa] best 42571 combination zp[1]:33 [ uctoa::started#2 uctoa::started#4 ]
Attempting to uplift remaining variables inzp[1]:104 [ uctoa::digit_value#0 ]
Uplifting [uctoa] best 42573 combination zp[1]:104 [ uctoa::digit_value#0 ]
Uplifting [uctoa] best 42571 combination zp[1]:104 [ uctoa::digit_value#0 ]
Attempting to uplift remaining variables inzp[1]:86 [ utoa::$11 ]
Uplifting [utoa] best 42569 combination reg byte a [ utoa::$11 ]
Uplifting [utoa] best 42567 combination reg byte a [ utoa::$11 ]
Attempting to uplift remaining variables inzp[1]:27 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#4 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#0 printf_number_buffer::buffer_sign#5 printf_number_buffer::buffer_sign#3 printf_number_buffer::buffer_sign#1 ]
Uplifting [printf_number_buffer] best 42569 combination zp[1]:27 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#4 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#0 printf_number_buffer::buffer_sign#5 printf_number_buffer::buffer_sign#3 printf_number_buffer::buffer_sign#1 ]
Uplifting [printf_number_buffer] best 42567 combination zp[1]:27 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#4 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#0 printf_number_buffer::buffer_sign#5 printf_number_buffer::buffer_sign#3 printf_number_buffer::buffer_sign#1 ]
Attempting to uplift remaining variables inzp[1]:14 [ utoa::radix#2 utoa::radix#1 ]
Uplifting [utoa] best 42551 combination reg byte x [ utoa::radix#2 utoa::radix#1 ]
Uplifting [utoa] best 42549 combination reg byte x [ utoa::radix#2 utoa::radix#1 ]
Attempting to uplift remaining variables inzp[1]:30 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ]
Uplifting [printf_number_buffer] best 42551 combination zp[1]:30 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ]
Uplifting [printf_number_buffer] best 42549 combination zp[1]:30 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ]
Attempting to uplift remaining variables inzp[1]:15 [ utoa::max_digits#7 ]
Uplifting [utoa] best 42551 combination zp[1]:15 [ utoa::max_digits#7 ]
Uplifting [utoa] best 42549 combination zp[1]:15 [ utoa::max_digits#7 ]
Attempting to uplift remaining variables inzp[1]:26 [ printf_number_buffer::format_zero_padding#10 ]
Uplifting [printf_number_buffer] best 42551 combination zp[1]:26 [ printf_number_buffer::format_zero_padding#10 ]
Uplifting [printf_number_buffer] best 42549 combination zp[1]:26 [ printf_number_buffer::format_zero_padding#10 ]
Attempting to uplift remaining variables inzp[1]:25 [ printf_number_buffer::format_justify_left#10 ]
Uplifting [printf_number_buffer] best 42551 combination zp[1]:25 [ printf_number_buffer::format_justify_left#10 ]
Uplifting [printf_number_buffer] best 42549 combination zp[1]:25 [ printf_number_buffer::format_justify_left#10 ]
Attempting to uplift remaining variables inzp[1]:28 [ printf_number_buffer::format_upper_case#10 ]
Uplifting [printf_number_buffer] best 42551 combination zp[1]:28 [ printf_number_buffer::format_upper_case#10 ]
Uplifting [printf_number_buffer] best 42549 combination zp[1]:28 [ printf_number_buffer::format_upper_case#10 ]
Attempting to uplift remaining variables inzp[1]:83 [ main::c ]
Uplifting [main] best 42551 combination zp[1]:83 [ main::c ]
Uplifting [main] best 42549 combination zp[1]:83 [ main::c ]
Coalescing zero page register [ zp[2]:11 [ printf_uint::uvalue#2 ] ] with [ zp[2]:19 [ utoa::value#3 utoa::value#7 utoa::value#10 utoa::value#2 utoa::value#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:22 [ utoa::buffer#10 utoa::buffer#15 utoa::buffer#4 ] ] with [ zp[2]:87 [ utoa::buffer#3 ] ] - score: 1
Coalescing zero page register [ zp[2]:22 [ utoa::buffer#10 utoa::buffer#15 utoa::buffer#4 utoa::buffer#3 ] ] with [ zp[2]:92 [ utoa_append::buffer#0 ] ] - score: 1
@ -11100,8 +11098,7 @@ printf_number_buffer: {
// [183] (word~) printf_number_buffer::$19 ← (word) strlen::return#2
// [184] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 -- vbsyy=_sbyte_vwuz1
// There is a minimum length - work out the padding
lda.z __19
tay
ldy.z __19
// [185] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@13 -- vbuc1_eq_vbuz1_then_la1
lda #0
cmp.z buffer_sign
@ -13252,7 +13249,7 @@ mem[12] [ printf_buffer ]
FINAL ASSEMBLER
Score: 35505
Score: 35503
// File Comments
// Tests printf function call rewriting
@ -14394,8 +14391,7 @@ printf_number_buffer: {
// len = (signed char)strlen(buffer.digits)
// [184] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 -- vbsyy=_sbyte_vwuz1
// There is a minimum length - work out the padding
lda.z __19
tay
ldy.z __19
// if(buffer.sign)
// [185] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@13 -- vbuc1_eq_vbuz1_then_la1
lda #0

View File

@ -1212,8 +1212,7 @@ printf_number_buffer: {
// strlen(buffer.digits)
// len = (signed char)strlen(buffer.digits)
// There is a minimum length - work out the padding
lda.z __19
tax
ldx.z __19
// if(buffer.sign)
lda #0
cmp.z buffer_sign

File diff suppressed because one or more lines are too long

View File

@ -393,8 +393,7 @@ printf_number_buffer: {
// strlen(buffer.digits)
// len = (signed char)strlen(buffer.digits)
// There is a minimum length - work out the padding
lda.z __19
tay
ldy.z __19
// if(buffer.sign)
lda #0
cmp.z buffer_sign

File diff suppressed because one or more lines are too long

View File

@ -574,8 +574,7 @@ printf_number_buffer: {
// strlen(buffer.digits)
// len = (signed char)strlen(buffer.digits)
// There is a minimum length - work out the padding
lda.z __19
tay
ldy.z __19
// if(buffer.sign)
lda #0
cmp.z buffer_sign

View File

@ -7392,7 +7392,6 @@ Statement [145] (word) utoa::value#0 ← (word) utoa_append::return#0 [ printf_b
Statement [151] (word) strlen::return#2 ← (word) strlen::len#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] ( main:7::printf_uint:29::printf_number_buffer:106 [ main::first#0 main::col#3 main::row#3 main::cnt#1 _rand_state#14 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_uint::uvalue#0 = main::rnd#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::return#2 = strlen::len#2 } } main:7::printf_ulong:45::printf_number_buffer:113 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_ulong::uvalue#0 = main::cnt#1 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:30 [ printf_number_buffer::format_min_length#2 ]
Statement [152] (word~) printf_number_buffer::$19 ← (word) strlen::return#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] ( main:7::printf_uint:29::printf_number_buffer:106 [ main::first#0 main::col#3 main::row#3 main::cnt#1 _rand_state#14 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_uint::uvalue#0 = main::rnd#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:7::printf_ulong:45::printf_number_buffer:113 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_ulong::uvalue#0 = main::cnt#1 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a
Statement [153] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] ( main:7::printf_uint:29::printf_number_buffer:106 [ main::first#0 main::col#3 main::row#3 main::cnt#1 _rand_state#14 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_uint::uvalue#0 = main::rnd#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:7::printf_ulong:45::printf_number_buffer:113 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_ulong::uvalue#0 = main::cnt#1 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a
Statement [157] (signed byte) printf_number_buffer::padding#1 ← (signed byte)(byte) printf_number_buffer::format_min_length#2 - (signed byte) printf_number_buffer::len#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] ( main:7::printf_uint:29::printf_number_buffer:106 [ main::first#0 main::col#3 main::row#3 main::cnt#1 _rand_state#14 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_uint::uvalue#0 = main::rnd#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:7::printf_ulong:45::printf_number_buffer:113 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_ulong::uvalue#0 = main::cnt#1 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a
Statement [187] (byte~) ultoa::$11 ← (byte)(dword) ultoa::value#2 [ printf_buffer ultoa::buffer#11 ultoa::$11 ] ( main:7::printf_ulong:45::ultoa:111 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ultoa::buffer#11 ultoa::$11 ] { { printf_ulong::uvalue#0 = main::cnt#1 ultoa::value#1 } } ) always clobbers reg byte a
Statement [188] *((byte*) ultoa::buffer#11) ← *((const byte*) DIGITS + (byte~) ultoa::$11) [ printf_buffer ultoa::buffer#11 ] ( main:7::printf_ulong:45::ultoa:111 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ultoa::buffer#11 ] { { printf_ulong::uvalue#0 = main::cnt#1 ultoa::value#1 } } ) always clobbers reg byte a reg byte y
@ -7501,7 +7500,6 @@ Statement [144] (word) utoa_append::return#0 ← (word) utoa_append::value#2 [ p
Statement [145] (word) utoa::value#0 ← (word) utoa_append::return#0 [ printf_buffer utoa::digit#2 utoa::buffer#11 utoa::value#0 ] ( main:7::printf_uint:29::utoa:104 [ main::first#0 main::col#3 main::row#3 main::cnt#1 _rand_state#14 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::digit#2 utoa::buffer#11 utoa::value#0 ] { { printf_uint::uvalue#0 = main::rnd#2 utoa::value#1 } } ) always clobbers reg byte a
Statement [151] (word) strlen::return#2 ← (word) strlen::len#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] ( main:7::printf_uint:29::printf_number_buffer:106 [ main::first#0 main::col#3 main::row#3 main::cnt#1 _rand_state#14 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_uint::uvalue#0 = main::rnd#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::return#2 = strlen::len#2 } } main:7::printf_ulong:45::printf_number_buffer:113 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_ulong::uvalue#0 = main::cnt#1 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a
Statement [152] (word~) printf_number_buffer::$19 ← (word) strlen::return#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] ( main:7::printf_uint:29::printf_number_buffer:106 [ main::first#0 main::col#3 main::row#3 main::cnt#1 _rand_state#14 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_uint::uvalue#0 = main::rnd#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:7::printf_ulong:45::printf_number_buffer:113 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_ulong::uvalue#0 = main::cnt#1 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a
Statement [153] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] ( main:7::printf_uint:29::printf_number_buffer:106 [ main::first#0 main::col#3 main::row#3 main::cnt#1 _rand_state#14 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_uint::uvalue#0 = main::rnd#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:7::printf_ulong:45::printf_number_buffer:113 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_ulong::uvalue#0 = main::cnt#1 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a
Statement [157] (signed byte) printf_number_buffer::padding#1 ← (signed byte)(byte) printf_number_buffer::format_min_length#2 - (signed byte) printf_number_buffer::len#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] ( main:7::printf_uint:29::printf_number_buffer:106 [ main::first#0 main::col#3 main::row#3 main::cnt#1 _rand_state#14 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_uint::uvalue#0 = main::rnd#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:7::printf_ulong:45::printf_number_buffer:113 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_ulong::uvalue#0 = main::cnt#1 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a
Statement [187] (byte~) ultoa::$11 ← (byte)(dword) ultoa::value#2 [ printf_buffer ultoa::buffer#11 ultoa::$11 ] ( main:7::printf_ulong:45::ultoa:111 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ultoa::buffer#11 ultoa::$11 ] { { printf_ulong::uvalue#0 = main::cnt#1 ultoa::value#1 } } ) always clobbers reg byte a
Statement [188] *((byte*) ultoa::buffer#11) ← *((const byte*) DIGITS + (byte~) ultoa::$11) [ printf_buffer ultoa::buffer#11 ] ( main:7::printf_ulong:45::ultoa:111 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ultoa::buffer#11 ] { { printf_ulong::uvalue#0 = main::cnt#1 ultoa::value#1 } } ) always clobbers reg byte a reg byte y
@ -7680,55 +7678,55 @@ Uplifting [printf_padding] best 227933 combination zp[1]:54 [ printf_padding::i#
Uplifting [cputs] best 227033 combination zp[2]:17 [ cputs::s#4 cputs::s#5 cputs::s#0 ] reg byte a [ cputs::c#1 ]
Uplifting [utoa] best 225729 combination zp[2]:28 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] zp[2]:25 [ utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ] zp[1]:24 [ utoa::digit#2 utoa::digit#1 ] reg byte a [ utoa::$10 ] reg byte x [ utoa::started#2 utoa::started#4 ] zp[2]:125 [ utoa::digit_value#0 ] reg byte a [ utoa::$11 ] zp[2]:122 [ utoa::buffer#3 ]
Uplifting [ultoa] best 225595 combination zp[2]:43 [ ultoa::buffer#11 ultoa::buffer#14 ultoa::buffer#4 ] zp[4]:38 [ ultoa::value#2 ultoa::value#6 ultoa::value#1 ultoa::value#0 ] zp[1]:37 [ ultoa::digit#2 ultoa::digit#1 ] reg byte a [ ultoa::$10 ] reg byte x [ ultoa::started#2 ultoa::started#4 ] zp[4]:141 [ ultoa::digit_value#0 ] reg byte a [ ultoa::$11 ] zp[2]:138 [ ultoa::buffer#3 ]
Uplifting [printf_number_buffer] best 225584 combination reg byte y [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ] zp[1]:36 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] zp[2]:135 [ printf_number_buffer::$19 ] zp[1]:33 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] reg byte x [ printf_number_buffer::format_min_length#2 ] zp[1]:32 [ printf_number_buffer::format_zero_padding#10 ] zp[1]:31 [ printf_number_buffer::format_justify_left#10 ] zp[1]:34 [ printf_number_buffer::format_upper_case#10 ]
Uplifting [printf_number_buffer] best 225582 combination reg byte y [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ] zp[1]:36 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] zp[2]:135 [ printf_number_buffer::$19 ] zp[1]:33 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] reg byte x [ printf_number_buffer::format_min_length#2 ] zp[1]:32 [ printf_number_buffer::format_zero_padding#10 ] zp[1]:31 [ printf_number_buffer::format_justify_left#10 ] zp[1]:34 [ printf_number_buffer::format_upper_case#10 ]
Limited combination testing to 100 combinations of 256 possible.
Uplifting [clrscr] best 223994 combination reg byte y [ clrscr::c#2 clrscr::c#1 ] zp[2]:13 [ clrscr::line_cols#5 clrscr::line_cols#1 ] zp[2]:11 [ clrscr::line_text#5 clrscr::line_text#1 ] reg byte x [ clrscr::l#2 clrscr::l#1 ]
Uplifting [gotoxy] best 223907 combination reg byte x [ gotoxy::x#5 gotoxy::x#4 gotoxy::x#2 ] zp[2]:111 [ gotoxy::$8 ] zp[2]:113 [ gotoxy::$9 ] zp[2]:117 [ gotoxy::$5 ] zp[2]:119 [ gotoxy::$6 ] zp[2]:109 [ gotoxy::$7 ] reg byte a [ gotoxy::y#5 gotoxy::y#4 gotoxy::y#2 ] zp[2]:115 [ gotoxy::line_offset#0 ]
Uplifting [_rand] best 223907 combination zp[2]:97 [ _rand::$0 ] zp[2]:101 [ _rand::$1 ] zp[2]:105 [ _rand::$2 ] zp[2]:107 [ _rand::return#2 ] zp[2]:90 [ _rand::return#1 ] zp[2]:83 [ _rand::return#0 ]
Uplifting [main] best 223847 combination zp[1]:7 [ main::row#3 main::row#7 main::row#1 ] zp[1]:6 [ main::col#3 main::col#7 main::col#1 ] zp[4]:2 [ main::cnt#2 main::cnt#1 ] zp[2]:8 [ main::rnd#2 main::rnd#5 main::rnd#1 ] reg byte a [ main::$17 ] zp[2]:85 [ main::first#0 ]
Uplifting [printf_uint] best 223847 combination zp[2]:88 [ printf_uint::uvalue#0 ]
Uplifting [textcolor] best 223838 combination reg byte a [ textcolor::color#2 ]
Uplifting [printf_ulong] best 223838 combination zp[4]:92 [ printf_ulong::uvalue#0 ]
Uplifting [RADIX] best 223838 combination
Uplifting [MOS6526_CIA] best 223838 combination
Uplifting [MOS6569_VICII] best 223838 combination
Uplifting [MOS6581_SID] best 223838 combination
Uplifting [cputln] best 223838 combination
Uplifting [cscroll] best 223838 combination
Uplifting [printf_format_number] best 223838 combination
Uplifting [printf_buffer_number] best 223838 combination
Uplifting [printf_format_string] best 223838 combination
Uplifting [__start] best 223838 combination
Uplifting [clrscr] best 223992 combination reg byte y [ clrscr::c#2 clrscr::c#1 ] zp[2]:13 [ clrscr::line_cols#5 clrscr::line_cols#1 ] zp[2]:11 [ clrscr::line_text#5 clrscr::line_text#1 ] reg byte x [ clrscr::l#2 clrscr::l#1 ]
Uplifting [gotoxy] best 223905 combination reg byte x [ gotoxy::x#5 gotoxy::x#4 gotoxy::x#2 ] zp[2]:111 [ gotoxy::$8 ] zp[2]:113 [ gotoxy::$9 ] zp[2]:117 [ gotoxy::$5 ] zp[2]:119 [ gotoxy::$6 ] zp[2]:109 [ gotoxy::$7 ] reg byte a [ gotoxy::y#5 gotoxy::y#4 gotoxy::y#2 ] zp[2]:115 [ gotoxy::line_offset#0 ]
Uplifting [_rand] best 223905 combination zp[2]:97 [ _rand::$0 ] zp[2]:101 [ _rand::$1 ] zp[2]:105 [ _rand::$2 ] zp[2]:107 [ _rand::return#2 ] zp[2]:90 [ _rand::return#1 ] zp[2]:83 [ _rand::return#0 ]
Uplifting [main] best 223845 combination zp[1]:7 [ main::row#3 main::row#7 main::row#1 ] zp[1]:6 [ main::col#3 main::col#7 main::col#1 ] zp[4]:2 [ main::cnt#2 main::cnt#1 ] zp[2]:8 [ main::rnd#2 main::rnd#5 main::rnd#1 ] reg byte a [ main::$17 ] zp[2]:85 [ main::first#0 ]
Uplifting [printf_uint] best 223845 combination zp[2]:88 [ printf_uint::uvalue#0 ]
Uplifting [textcolor] best 223836 combination reg byte a [ textcolor::color#2 ]
Uplifting [printf_ulong] best 223836 combination zp[4]:92 [ printf_ulong::uvalue#0 ]
Uplifting [RADIX] best 223836 combination
Uplifting [MOS6526_CIA] best 223836 combination
Uplifting [MOS6569_VICII] best 223836 combination
Uplifting [MOS6581_SID] best 223836 combination
Uplifting [cputln] best 223836 combination
Uplifting [cscroll] best 223836 combination
Uplifting [printf_format_number] best 223836 combination
Uplifting [printf_buffer_number] best 223836 combination
Uplifting [printf_format_string] best 223836 combination
Uplifting [__start] best 223836 combination
Attempting to uplift remaining variables inzp[1]:77 [ conio_cursor_y ]
Uplifting [] best 223838 combination zp[1]:77 [ conio_cursor_y ]
Uplifting [] best 223836 combination zp[1]:77 [ conio_cursor_y ]
Attempting to uplift remaining variables inzp[1]:82 [ conio_textcolor ]
Uplifting [] best 223838 combination zp[1]:82 [ conio_textcolor ]
Uplifting [] best 223836 combination zp[1]:82 [ conio_textcolor ]
Attempting to uplift remaining variables inzp[1]:54 [ printf_padding::i#2 printf_padding::i#1 ]
Uplifting [printf_padding] best 223838 combination zp[1]:54 [ printf_padding::i#2 printf_padding::i#1 ]
Uplifting [printf_padding] best 223836 combination zp[1]:54 [ printf_padding::i#2 printf_padding::i#1 ]
Attempting to uplift remaining variables inzp[1]:76 [ conio_cursor_x ]
Uplifting [] best 223838 combination zp[1]:76 [ conio_cursor_x ]
Uplifting [] best 223836 combination zp[1]:76 [ conio_cursor_x ]
Attempting to uplift remaining variables inzp[1]:24 [ utoa::digit#2 utoa::digit#1 ]
Uplifting [utoa] best 223838 combination zp[1]:24 [ utoa::digit#2 utoa::digit#1 ]
Uplifting [utoa] best 223836 combination zp[1]:24 [ utoa::digit#2 utoa::digit#1 ]
Attempting to uplift remaining variables inzp[1]:52 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ]
Uplifting [printf_padding] best 223838 combination zp[1]:52 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ]
Uplifting [printf_padding] best 223836 combination zp[1]:52 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ]
Attempting to uplift remaining variables inzp[1]:53 [ printf_padding::pad#5 ]
Uplifting [printf_padding] best 223838 combination zp[1]:53 [ printf_padding::pad#5 ]
Uplifting [printf_padding] best 223836 combination zp[1]:53 [ printf_padding::pad#5 ]
Attempting to uplift remaining variables inzp[1]:37 [ ultoa::digit#2 ultoa::digit#1 ]
Uplifting [ultoa] best 223838 combination zp[1]:37 [ ultoa::digit#2 ultoa::digit#1 ]
Uplifting [ultoa] best 223836 combination zp[1]:37 [ ultoa::digit#2 ultoa::digit#1 ]
Attempting to uplift remaining variables inzp[1]:36 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ]
Uplifting [printf_number_buffer] best 223838 combination zp[1]:36 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ]
Uplifting [printf_number_buffer] best 223836 combination zp[1]:36 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ]
Attempting to uplift remaining variables inzp[1]:33 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ]
Uplifting [printf_number_buffer] best 223838 combination zp[1]:33 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ]
Uplifting [printf_number_buffer] best 223836 combination zp[1]:33 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ]
Attempting to uplift remaining variables inzp[1]:32 [ printf_number_buffer::format_zero_padding#10 ]
Uplifting [printf_number_buffer] best 223838 combination zp[1]:32 [ printf_number_buffer::format_zero_padding#10 ]
Uplifting [printf_number_buffer] best 223836 combination zp[1]:32 [ printf_number_buffer::format_zero_padding#10 ]
Attempting to uplift remaining variables inzp[1]:31 [ printf_number_buffer::format_justify_left#10 ]
Uplifting [printf_number_buffer] best 223838 combination zp[1]:31 [ printf_number_buffer::format_justify_left#10 ]
Uplifting [printf_number_buffer] best 223836 combination zp[1]:31 [ printf_number_buffer::format_justify_left#10 ]
Attempting to uplift remaining variables inzp[1]:34 [ printf_number_buffer::format_upper_case#10 ]
Uplifting [printf_number_buffer] best 223838 combination zp[1]:34 [ printf_number_buffer::format_upper_case#10 ]
Uplifting [printf_number_buffer] best 223836 combination zp[1]:34 [ printf_number_buffer::format_upper_case#10 ]
Attempting to uplift remaining variables inzp[1]:7 [ main::row#3 main::row#7 main::row#1 ]
Uplifting [main] best 223838 combination zp[1]:7 [ main::row#3 main::row#7 main::row#1 ]
Uplifting [main] best 223836 combination zp[1]:7 [ main::row#3 main::row#7 main::row#1 ]
Attempting to uplift remaining variables inzp[1]:6 [ main::col#3 main::col#7 main::col#1 ]
Uplifting [main] best 223838 combination zp[1]:6 [ main::col#3 main::col#7 main::col#1 ]
Uplifting [main] best 223836 combination zp[1]:6 [ main::col#3 main::col#7 main::col#1 ]
Coalescing zero page register [ zp[4]:2 [ main::cnt#2 main::cnt#1 ] ] with [ zp[4]:92 [ printf_ulong::uvalue#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:8 [ main::rnd#2 main::rnd#5 main::rnd#1 ] ] with [ zp[2]:88 [ printf_uint::uvalue#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:8 [ main::rnd#2 main::rnd#5 main::rnd#1 printf_uint::uvalue#0 ] ] with [ zp[2]:90 [ _rand::return#1 ] ] - score: 1
@ -8732,8 +8730,7 @@ printf_number_buffer: {
// [152] (word~) printf_number_buffer::$19 ← (word) strlen::return#2
// [153] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 -- vbsyy=_sbyte_vwuz1
// There is a minimum length - work out the padding
lda.z __19
tay
ldy.z __19
// [154] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@13 -- vbuc1_eq_vbuz1_then_la1
lda #0
cmp.z buffer_sign
@ -10533,7 +10530,7 @@ mem[12] [ printf_buffer ]
FINAL ASSEMBLER
Score: 189515
Score: 189513
// File Comments
// Test the xorshift pseudorandom number generator
@ -11414,8 +11411,7 @@ printf_number_buffer: {
// len = (signed char)strlen(buffer.digits)
// [153] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 -- vbsyy=_sbyte_vwuz1
// There is a minimum length - work out the padding
lda.z __19
tay
ldy.z __19
// if(buffer.sign)
// [154] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@13 -- vbuc1_eq_vbuz1_then_la1
lda #0

View File

@ -579,8 +579,7 @@ printf_number_buffer: {
// strlen(buffer.digits)
// len = (signed char)strlen(buffer.digits)
// There is a minimum length - work out the padding
lda.z __19
tay
ldy.z __19
// if(buffer.sign)
lda #0
cmp.z buffer_sign

View File

@ -7427,7 +7427,6 @@ Statement [147] (word) utoa::value#0 ← (word) utoa_append::return#0 [ printf_b
Statement [153] (word) strlen::return#2 ← (word) strlen::len#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] ( main:7::printf_uint:29::printf_number_buffer:108 [ main::first#0 main::col#3 main::row#3 main::cnt#1 rand_state#11 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_uint::uvalue#0 = main::rnd#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::return#2 = strlen::len#2 } } main:7::printf_ulong:47::printf_number_buffer:115 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_ulong::uvalue#0 = main::cnt#1 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp[1]:30 [ printf_number_buffer::format_min_length#2 ]
Statement [154] (word~) printf_number_buffer::$19 ← (word) strlen::return#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] ( main:7::printf_uint:29::printf_number_buffer:108 [ main::first#0 main::col#3 main::row#3 main::cnt#1 rand_state#11 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_uint::uvalue#0 = main::rnd#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:7::printf_ulong:47::printf_number_buffer:115 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_ulong::uvalue#0 = main::cnt#1 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a
Statement [155] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] ( main:7::printf_uint:29::printf_number_buffer:108 [ main::first#0 main::col#3 main::row#3 main::cnt#1 rand_state#11 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_uint::uvalue#0 = main::rnd#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:7::printf_ulong:47::printf_number_buffer:115 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_ulong::uvalue#0 = main::cnt#1 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a
Statement [159] (signed byte) printf_number_buffer::padding#1 ← (signed byte)(byte) printf_number_buffer::format_min_length#2 - (signed byte) printf_number_buffer::len#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] ( main:7::printf_uint:29::printf_number_buffer:108 [ main::first#0 main::col#3 main::row#3 main::cnt#1 rand_state#11 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_uint::uvalue#0 = main::rnd#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:7::printf_ulong:47::printf_number_buffer:115 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_ulong::uvalue#0 = main::cnt#1 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a
Statement [189] (byte~) ultoa::$11 ← (byte)(dword) ultoa::value#2 [ printf_buffer ultoa::buffer#11 ultoa::$11 ] ( main:7::printf_ulong:47::ultoa:113 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ultoa::buffer#11 ultoa::$11 ] { { printf_ulong::uvalue#0 = main::cnt#1 ultoa::value#1 } } ) always clobbers reg byte a
Statement [190] *((byte*) ultoa::buffer#11) ← *((const byte*) DIGITS + (byte~) ultoa::$11) [ printf_buffer ultoa::buffer#11 ] ( main:7::printf_ulong:47::ultoa:113 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ultoa::buffer#11 ] { { printf_ulong::uvalue#0 = main::cnt#1 ultoa::value#1 } } ) always clobbers reg byte a reg byte y
@ -7536,7 +7535,6 @@ Statement [146] (word) utoa_append::return#0 ← (word) utoa_append::value#2 [ p
Statement [147] (word) utoa::value#0 ← (word) utoa_append::return#0 [ printf_buffer utoa::digit#2 utoa::buffer#11 utoa::value#0 ] ( main:7::printf_uint:29::utoa:106 [ main::first#0 main::col#3 main::row#3 main::cnt#1 rand_state#11 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer utoa::digit#2 utoa::buffer#11 utoa::value#0 ] { { printf_uint::uvalue#0 = main::rnd#2 utoa::value#1 } } ) always clobbers reg byte a
Statement [153] (word) strlen::return#2 ← (word) strlen::len#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] ( main:7::printf_uint:29::printf_number_buffer:108 [ main::first#0 main::col#3 main::row#3 main::cnt#1 rand_state#11 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_uint::uvalue#0 = main::rnd#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } { strlen::return#2 = strlen::len#2 } } main:7::printf_ulong:47::printf_number_buffer:115 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 strlen::return#2 ] { { printf_ulong::uvalue#0 = main::cnt#1 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } { strlen::return#2 = strlen::len#2 } } ) always clobbers reg byte a
Statement [154] (word~) printf_number_buffer::$19 ← (word) strlen::return#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] ( main:7::printf_uint:29::printf_number_buffer:108 [ main::first#0 main::col#3 main::row#3 main::cnt#1 rand_state#11 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_uint::uvalue#0 = main::rnd#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:7::printf_ulong:47::printf_number_buffer:115 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::$19 ] { { printf_ulong::uvalue#0 = main::cnt#1 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a
Statement [155] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] ( main:7::printf_uint:29::printf_number_buffer:108 [ main::first#0 main::col#3 main::row#3 main::cnt#1 rand_state#11 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_uint::uvalue#0 = main::rnd#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:7::printf_ulong:47::printf_number_buffer:115 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_min_length#2 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::len#0 ] { { printf_ulong::uvalue#0 = main::cnt#1 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a
Statement [159] (signed byte) printf_number_buffer::padding#1 ← (signed byte)(byte) printf_number_buffer::format_min_length#2 - (signed byte) printf_number_buffer::len#2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] ( main:7::printf_uint:29::printf_number_buffer:108 [ main::first#0 main::col#3 main::row#3 main::cnt#1 rand_state#11 conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_uint::uvalue#0 = main::rnd#2 } { printf_number_buffer::buffer_sign#1 = printf_number_buffer::buffer_sign#10 } } main:7::printf_ulong:47::printf_number_buffer:115 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer printf_number_buffer::format_justify_left#10 printf_number_buffer::format_zero_padding#10 printf_number_buffer::buffer_sign#10 printf_number_buffer::format_upper_case#10 printf_number_buffer::padding#1 ] { { printf_ulong::uvalue#0 = main::cnt#1 } { printf_number_buffer::buffer_sign#0 = printf_number_buffer::buffer_sign#10 } } ) always clobbers reg byte a
Statement [189] (byte~) ultoa::$11 ← (byte)(dword) ultoa::value#2 [ printf_buffer ultoa::buffer#11 ultoa::$11 ] ( main:7::printf_ulong:47::ultoa:113 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ultoa::buffer#11 ultoa::$11 ] { { printf_ulong::uvalue#0 = main::cnt#1 ultoa::value#1 } } ) always clobbers reg byte a
Statement [190] *((byte*) ultoa::buffer#11) ← *((const byte*) DIGITS + (byte~) ultoa::$11) [ printf_buffer ultoa::buffer#11 ] ( main:7::printf_ulong:47::ultoa:113 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color conio_textcolor printf_buffer ultoa::buffer#11 ] { { printf_ulong::uvalue#0 = main::cnt#1 ultoa::value#1 } } ) always clobbers reg byte a reg byte y
@ -7715,55 +7713,55 @@ Uplifting [printf_padding] best 227947 combination zp[1]:54 [ printf_padding::i#
Uplifting [cputs] best 227047 combination zp[2]:17 [ cputs::s#4 cputs::s#5 cputs::s#0 ] reg byte a [ cputs::c#1 ]
Uplifting [utoa] best 225743 combination zp[2]:28 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] zp[2]:25 [ utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ] zp[1]:24 [ utoa::digit#2 utoa::digit#1 ] reg byte a [ utoa::$10 ] reg byte x [ utoa::started#2 utoa::started#4 ] zp[2]:125 [ utoa::digit_value#0 ] reg byte a [ utoa::$11 ] zp[2]:122 [ utoa::buffer#3 ]
Uplifting [ultoa] best 225609 combination zp[2]:43 [ ultoa::buffer#11 ultoa::buffer#14 ultoa::buffer#4 ] zp[4]:38 [ ultoa::value#2 ultoa::value#6 ultoa::value#1 ultoa::value#0 ] zp[1]:37 [ ultoa::digit#2 ultoa::digit#1 ] reg byte a [ ultoa::$10 ] reg byte x [ ultoa::started#2 ultoa::started#4 ] zp[4]:141 [ ultoa::digit_value#0 ] reg byte a [ ultoa::$11 ] zp[2]:138 [ ultoa::buffer#3 ]
Uplifting [printf_number_buffer] best 225598 combination reg byte y [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ] zp[1]:36 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] zp[2]:135 [ printf_number_buffer::$19 ] zp[1]:33 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] reg byte x [ printf_number_buffer::format_min_length#2 ] zp[1]:32 [ printf_number_buffer::format_zero_padding#10 ] zp[1]:31 [ printf_number_buffer::format_justify_left#10 ] zp[1]:34 [ printf_number_buffer::format_upper_case#10 ]
Uplifting [printf_number_buffer] best 225596 combination reg byte y [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ] zp[1]:36 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ] zp[2]:135 [ printf_number_buffer::$19 ] zp[1]:33 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ] reg byte x [ printf_number_buffer::format_min_length#2 ] zp[1]:32 [ printf_number_buffer::format_zero_padding#10 ] zp[1]:31 [ printf_number_buffer::format_justify_left#10 ] zp[1]:34 [ printf_number_buffer::format_upper_case#10 ]
Limited combination testing to 100 combinations of 256 possible.
Uplifting [clrscr] best 224008 combination reg byte y [ clrscr::c#2 clrscr::c#1 ] zp[2]:13 [ clrscr::line_cols#5 clrscr::line_cols#1 ] zp[2]:11 [ clrscr::line_text#5 clrscr::line_text#1 ] reg byte x [ clrscr::l#2 clrscr::l#1 ]
Uplifting [gotoxy] best 223921 combination reg byte x [ gotoxy::x#5 gotoxy::x#4 gotoxy::x#2 ] zp[2]:111 [ gotoxy::$8 ] zp[2]:113 [ gotoxy::$9 ] zp[2]:117 [ gotoxy::$5 ] zp[2]:119 [ gotoxy::$6 ] zp[2]:109 [ gotoxy::$7 ] reg byte a [ gotoxy::y#5 gotoxy::y#4 gotoxy::y#2 ] zp[2]:115 [ gotoxy::line_offset#0 ]
Uplifting [rand] best 223921 combination zp[2]:97 [ rand::$0 ] zp[2]:101 [ rand::$1 ] zp[2]:105 [ rand::$2 ] zp[2]:107 [ rand::return#0 ] zp[2]:90 [ rand::return#3 ] zp[2]:83 [ rand::return#2 ]
Uplifting [main] best 223861 combination zp[1]:7 [ main::row#3 main::row#7 main::row#1 ] zp[1]:6 [ main::col#3 main::col#7 main::col#1 ] zp[4]:2 [ main::cnt#2 main::cnt#1 ] zp[2]:8 [ main::rnd#2 main::rnd#5 main::rnd#1 ] reg byte a [ main::$18 ] zp[2]:85 [ main::first#0 ]
Uplifting [printf_uint] best 223861 combination zp[2]:88 [ printf_uint::uvalue#0 ]
Uplifting [textcolor] best 223849 combination reg byte a [ textcolor::color#3 ]
Uplifting [printf_ulong] best 223849 combination zp[4]:92 [ printf_ulong::uvalue#0 ]
Uplifting [RADIX] best 223849 combination
Uplifting [MOS6526_CIA] best 223849 combination
Uplifting [MOS6569_VICII] best 223849 combination
Uplifting [MOS6581_SID] best 223849 combination
Uplifting [cputln] best 223849 combination
Uplifting [cscroll] best 223849 combination
Uplifting [printf_format_number] best 223849 combination
Uplifting [printf_buffer_number] best 223849 combination
Uplifting [printf_format_string] best 223849 combination
Uplifting [__start] best 223849 combination
Uplifting [clrscr] best 224006 combination reg byte y [ clrscr::c#2 clrscr::c#1 ] zp[2]:13 [ clrscr::line_cols#5 clrscr::line_cols#1 ] zp[2]:11 [ clrscr::line_text#5 clrscr::line_text#1 ] reg byte x [ clrscr::l#2 clrscr::l#1 ]
Uplifting [gotoxy] best 223919 combination reg byte x [ gotoxy::x#5 gotoxy::x#4 gotoxy::x#2 ] zp[2]:111 [ gotoxy::$8 ] zp[2]:113 [ gotoxy::$9 ] zp[2]:117 [ gotoxy::$5 ] zp[2]:119 [ gotoxy::$6 ] zp[2]:109 [ gotoxy::$7 ] reg byte a [ gotoxy::y#5 gotoxy::y#4 gotoxy::y#2 ] zp[2]:115 [ gotoxy::line_offset#0 ]
Uplifting [rand] best 223919 combination zp[2]:97 [ rand::$0 ] zp[2]:101 [ rand::$1 ] zp[2]:105 [ rand::$2 ] zp[2]:107 [ rand::return#0 ] zp[2]:90 [ rand::return#3 ] zp[2]:83 [ rand::return#2 ]
Uplifting [main] best 223859 combination zp[1]:7 [ main::row#3 main::row#7 main::row#1 ] zp[1]:6 [ main::col#3 main::col#7 main::col#1 ] zp[4]:2 [ main::cnt#2 main::cnt#1 ] zp[2]:8 [ main::rnd#2 main::rnd#5 main::rnd#1 ] reg byte a [ main::$18 ] zp[2]:85 [ main::first#0 ]
Uplifting [printf_uint] best 223859 combination zp[2]:88 [ printf_uint::uvalue#0 ]
Uplifting [textcolor] best 223847 combination reg byte a [ textcolor::color#3 ]
Uplifting [printf_ulong] best 223847 combination zp[4]:92 [ printf_ulong::uvalue#0 ]
Uplifting [RADIX] best 223847 combination
Uplifting [MOS6526_CIA] best 223847 combination
Uplifting [MOS6569_VICII] best 223847 combination
Uplifting [MOS6581_SID] best 223847 combination
Uplifting [cputln] best 223847 combination
Uplifting [cscroll] best 223847 combination
Uplifting [printf_format_number] best 223847 combination
Uplifting [printf_buffer_number] best 223847 combination
Uplifting [printf_format_string] best 223847 combination
Uplifting [__start] best 223847 combination
Attempting to uplift remaining variables inzp[1]:77 [ conio_cursor_y ]
Uplifting [] best 223849 combination zp[1]:77 [ conio_cursor_y ]
Uplifting [] best 223847 combination zp[1]:77 [ conio_cursor_y ]
Attempting to uplift remaining variables inzp[1]:82 [ conio_textcolor ]
Uplifting [] best 223849 combination zp[1]:82 [ conio_textcolor ]
Uplifting [] best 223847 combination zp[1]:82 [ conio_textcolor ]
Attempting to uplift remaining variables inzp[1]:54 [ printf_padding::i#2 printf_padding::i#1 ]
Uplifting [printf_padding] best 223849 combination zp[1]:54 [ printf_padding::i#2 printf_padding::i#1 ]
Uplifting [printf_padding] best 223847 combination zp[1]:54 [ printf_padding::i#2 printf_padding::i#1 ]
Attempting to uplift remaining variables inzp[1]:76 [ conio_cursor_x ]
Uplifting [] best 223849 combination zp[1]:76 [ conio_cursor_x ]
Uplifting [] best 223847 combination zp[1]:76 [ conio_cursor_x ]
Attempting to uplift remaining variables inzp[1]:24 [ utoa::digit#2 utoa::digit#1 ]
Uplifting [utoa] best 223849 combination zp[1]:24 [ utoa::digit#2 utoa::digit#1 ]
Uplifting [utoa] best 223847 combination zp[1]:24 [ utoa::digit#2 utoa::digit#1 ]
Attempting to uplift remaining variables inzp[1]:52 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ]
Uplifting [printf_padding] best 223849 combination zp[1]:52 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ]
Uplifting [printf_padding] best 223847 combination zp[1]:52 [ printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ]
Attempting to uplift remaining variables inzp[1]:53 [ printf_padding::pad#5 ]
Uplifting [printf_padding] best 223849 combination zp[1]:53 [ printf_padding::pad#5 ]
Uplifting [printf_padding] best 223847 combination zp[1]:53 [ printf_padding::pad#5 ]
Attempting to uplift remaining variables inzp[1]:37 [ ultoa::digit#2 ultoa::digit#1 ]
Uplifting [ultoa] best 223849 combination zp[1]:37 [ ultoa::digit#2 ultoa::digit#1 ]
Uplifting [ultoa] best 223847 combination zp[1]:37 [ ultoa::digit#2 ultoa::digit#1 ]
Attempting to uplift remaining variables inzp[1]:36 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ]
Uplifting [printf_number_buffer] best 223849 combination zp[1]:36 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ]
Uplifting [printf_number_buffer] best 223847 combination zp[1]:36 [ printf_number_buffer::padding#10 printf_number_buffer::padding#1 ]
Attempting to uplift remaining variables inzp[1]:33 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ]
Uplifting [printf_number_buffer] best 223849 combination zp[1]:33 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ]
Uplifting [printf_number_buffer] best 223847 combination zp[1]:33 [ printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#1 printf_number_buffer::buffer_sign#0 ]
Attempting to uplift remaining variables inzp[1]:32 [ printf_number_buffer::format_zero_padding#10 ]
Uplifting [printf_number_buffer] best 223849 combination zp[1]:32 [ printf_number_buffer::format_zero_padding#10 ]
Uplifting [printf_number_buffer] best 223847 combination zp[1]:32 [ printf_number_buffer::format_zero_padding#10 ]
Attempting to uplift remaining variables inzp[1]:31 [ printf_number_buffer::format_justify_left#10 ]
Uplifting [printf_number_buffer] best 223849 combination zp[1]:31 [ printf_number_buffer::format_justify_left#10 ]
Uplifting [printf_number_buffer] best 223847 combination zp[1]:31 [ printf_number_buffer::format_justify_left#10 ]
Attempting to uplift remaining variables inzp[1]:34 [ printf_number_buffer::format_upper_case#10 ]
Uplifting [printf_number_buffer] best 223849 combination zp[1]:34 [ printf_number_buffer::format_upper_case#10 ]
Uplifting [printf_number_buffer] best 223847 combination zp[1]:34 [ printf_number_buffer::format_upper_case#10 ]
Attempting to uplift remaining variables inzp[1]:7 [ main::row#3 main::row#7 main::row#1 ]
Uplifting [main] best 223849 combination zp[1]:7 [ main::row#3 main::row#7 main::row#1 ]
Uplifting [main] best 223847 combination zp[1]:7 [ main::row#3 main::row#7 main::row#1 ]
Attempting to uplift remaining variables inzp[1]:6 [ main::col#3 main::col#7 main::col#1 ]
Uplifting [main] best 223849 combination zp[1]:6 [ main::col#3 main::col#7 main::col#1 ]
Uplifting [main] best 223847 combination zp[1]:6 [ main::col#3 main::col#7 main::col#1 ]
Coalescing zero page register [ zp[4]:2 [ main::cnt#2 main::cnt#1 ] ] with [ zp[4]:92 [ printf_ulong::uvalue#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:8 [ main::rnd#2 main::rnd#5 main::rnd#1 ] ] with [ zp[2]:88 [ printf_uint::uvalue#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:8 [ main::rnd#2 main::rnd#5 main::rnd#1 printf_uint::uvalue#0 ] ] with [ zp[2]:90 [ rand::return#3 ] ] - score: 1
@ -8780,8 +8778,7 @@ printf_number_buffer: {
// [154] (word~) printf_number_buffer::$19 ← (word) strlen::return#2
// [155] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 -- vbsyy=_sbyte_vwuz1
// There is a minimum length - work out the padding
lda.z __19
tay
ldy.z __19
// [156] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@13 -- vbuc1_eq_vbuz1_then_la1
lda #0
cmp.z buffer_sign
@ -10586,7 +10583,7 @@ mem[12] [ printf_buffer ]
FINAL ASSEMBLER
Score: 189523
Score: 189521
// File Comments
// Test the pseudorandom number generator in stdlib.h
@ -11477,8 +11474,7 @@ printf_number_buffer: {
// len = (signed char)strlen(buffer.digits)
// [155] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$19 -- vbsyy=_sbyte_vwuz1
// There is a minimum length - work out the padding
lda.z __19
tay
ldy.z __19
// if(buffer.sign)
// [156] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@13 -- vbuc1_eq_vbuz1_then_la1
lda #0

View File

@ -346,8 +346,7 @@ printf_number_buffer: {
// strlen(buffer.digits)
// len = (signed char)strlen(buffer.digits)
// There is a minimum length - work out the padding
lda.z __19
tay
ldy.z __19
// if(buffer.sign)
lda #0
cmp.z buffer_sign

File diff suppressed because one or more lines are too long