mirror of https://gitlab.com/camelot/kickc.git
4573 lines
267 KiB
Plaintext
4573 lines
267 KiB
Plaintext
Inlined call call __init
|
|
Eliminating unused variable with no statement memset::$2
|
|
Eliminating unused variable with no statement lin16u_gen::$0
|
|
Eliminating unused variable with no statement lin16u_gen::$2
|
|
Eliminating unused variable with no statement lin16u_gen::$4
|
|
Eliminating unused variable with no statement lin16u_gen::$5
|
|
Eliminating unused variable with no statement lin16u_gen::$6
|
|
|
|
CONTROL FLOW GRAPH SSA
|
|
|
|
unsigned int divr16u(unsigned int dividend , unsigned int divisor , unsigned int rem)
|
|
divr16u: scope:[divr16u] from lin16u_gen lin16u_gen::@3
|
|
divr16u::divisor#6 = phi( lin16u_gen/divr16u::divisor#0, lin16u_gen::@3/divr16u::divisor#1 )
|
|
divr16u::dividend#5 = phi( lin16u_gen/divr16u::dividend#1, lin16u_gen::@3/divr16u::dividend#2 )
|
|
divr16u::rem#10 = phi( lin16u_gen/divr16u::rem#3, lin16u_gen::@3/divr16u::rem#4 )
|
|
divr16u::quotient#0 = 0
|
|
divr16u::i#0 = 0
|
|
to:divr16u::@1
|
|
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
|
|
divr16u::i#5 = phi( divr16u/divr16u::i#0, divr16u::@3/divr16u::i#1 )
|
|
divr16u::divisor#4 = phi( divr16u/divr16u::divisor#6, divr16u::@3/divr16u::divisor#7 )
|
|
divr16u::quotient#6 = phi( divr16u/divr16u::quotient#0, divr16u::@3/divr16u::quotient#8 )
|
|
divr16u::dividend#3 = phi( divr16u/divr16u::dividend#5, divr16u::@3/divr16u::dividend#6 )
|
|
divr16u::rem#5 = phi( divr16u/divr16u::rem#10, divr16u::@3/divr16u::rem#11 )
|
|
divr16u::$0 = divr16u::rem#5 << 1
|
|
divr16u::rem#0 = divr16u::$0
|
|
divr16u::$1 = byte1 divr16u::dividend#3
|
|
divr16u::$2 = divr16u::$1 & $80
|
|
divr16u::$3 = divr16u::$2 != 0
|
|
divr16u::$4 = ! divr16u::$3
|
|
if(divr16u::$4) goto divr16u::@2
|
|
to:divr16u::@4
|
|
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
|
|
divr16u::i#3 = phi( divr16u::@1/divr16u::i#5, divr16u::@4/divr16u::i#6 )
|
|
divr16u::divisor#2 = phi( divr16u::@1/divr16u::divisor#4, divr16u::@4/divr16u::divisor#5 )
|
|
divr16u::rem#6 = phi( divr16u::@1/divr16u::rem#0, divr16u::@4/divr16u::rem#1 )
|
|
divr16u::quotient#3 = phi( divr16u::@1/divr16u::quotient#6, divr16u::@4/divr16u::quotient#7 )
|
|
divr16u::dividend#4 = phi( divr16u::@1/divr16u::dividend#3, divr16u::@4/divr16u::dividend#7 )
|
|
divr16u::$6 = divr16u::dividend#4 << 1
|
|
divr16u::dividend#0 = divr16u::$6
|
|
divr16u::$7 = divr16u::quotient#3 << 1
|
|
divr16u::quotient#1 = divr16u::$7
|
|
divr16u::$8 = divr16u::rem#6 >= divr16u::divisor#2
|
|
divr16u::$9 = ! divr16u::$8
|
|
if(divr16u::$9) goto divr16u::@3
|
|
to:divr16u::@5
|
|
divr16u::@4: scope:[divr16u] from divr16u::@1
|
|
divr16u::i#6 = phi( divr16u::@1/divr16u::i#5 )
|
|
divr16u::divisor#5 = phi( divr16u::@1/divr16u::divisor#4 )
|
|
divr16u::quotient#7 = phi( divr16u::@1/divr16u::quotient#6 )
|
|
divr16u::dividend#7 = phi( divr16u::@1/divr16u::dividend#3 )
|
|
divr16u::rem#7 = phi( divr16u::@1/divr16u::rem#0 )
|
|
divr16u::$5 = divr16u::rem#7 | 1
|
|
divr16u::rem#1 = divr16u::$5
|
|
to:divr16u::@2
|
|
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
|
|
divr16u::divisor#7 = phi( divr16u::@2/divr16u::divisor#2, divr16u::@5/divr16u::divisor#3 )
|
|
divr16u::quotient#8 = phi( divr16u::@2/divr16u::quotient#1, divr16u::@5/divr16u::quotient#2 )
|
|
divr16u::dividend#6 = phi( divr16u::@2/divr16u::dividend#0, divr16u::@5/divr16u::dividend#8 )
|
|
divr16u::rem#11 = phi( divr16u::@2/divr16u::rem#6, divr16u::@5/divr16u::rem#2 )
|
|
divr16u::i#2 = phi( divr16u::@2/divr16u::i#3, divr16u::@5/divr16u::i#4 )
|
|
divr16u::i#1 = divr16u::i#2 + rangenext(0,$f)
|
|
divr16u::$11 = divr16u::i#1 != rangelast(0,$f)
|
|
if(divr16u::$11) goto divr16u::@1
|
|
to:divr16u::@6
|
|
divr16u::@5: scope:[divr16u] from divr16u::@2
|
|
divr16u::dividend#8 = phi( divr16u::@2/divr16u::dividend#0 )
|
|
divr16u::i#4 = phi( divr16u::@2/divr16u::i#3 )
|
|
divr16u::divisor#3 = phi( divr16u::@2/divr16u::divisor#2 )
|
|
divr16u::rem#8 = phi( divr16u::@2/divr16u::rem#6 )
|
|
divr16u::quotient#4 = phi( divr16u::@2/divr16u::quotient#1 )
|
|
divr16u::quotient#2 = ++ divr16u::quotient#4
|
|
divr16u::$10 = divr16u::rem#8 - divr16u::divisor#3
|
|
divr16u::rem#2 = divr16u::$10
|
|
to:divr16u::@3
|
|
divr16u::@6: scope:[divr16u] from divr16u::@3
|
|
divr16u::quotient#5 = phi( divr16u::@3/divr16u::quotient#8 )
|
|
divr16u::rem#9 = phi( divr16u::@3/divr16u::rem#11 )
|
|
rem16u#0 = divr16u::rem#9
|
|
divr16u::return#0 = divr16u::quotient#5
|
|
to:divr16u::@return
|
|
divr16u::@return: scope:[divr16u] from divr16u::@6
|
|
rem16u#12 = phi( divr16u::@6/rem16u#0 )
|
|
divr16u::return#4 = phi( divr16u::@6/divr16u::return#0 )
|
|
divr16u::return#1 = divr16u::return#4
|
|
rem16u#1 = rem16u#12
|
|
return
|
|
to:@return
|
|
|
|
void print_str(char *str)
|
|
print_str: scope:[print_str] from main::@11 main::@15 main::@17 main::@19 main::@24 main::@26 main::@3 main::@7 main::@9
|
|
print_char_cursor#89 = phi( main::@11/print_char_cursor#18, main::@15/print_char_cursor#22, main::@17/print_char_cursor#24, main::@19/print_char_cursor#26, main::@24/print_char_cursor#31, main::@26/print_char_cursor#33, main::@3/print_char_cursor#87, main::@7/print_char_cursor#14, main::@9/print_char_cursor#16 )
|
|
print_str::str#13 = phi( main::@11/print_str::str#3, main::@15/print_str::str#4, main::@17/print_str::str#5, main::@19/print_str::str#6, main::@24/print_str::str#8, main::@26/print_str::str#9, main::@3/print_str::str#7, main::@7/print_str::str#1, main::@9/print_str::str#2 )
|
|
to:print_str::@1
|
|
print_str::@1: scope:[print_str] from print_str print_str::@3
|
|
print_char_cursor#81 = phi( print_str/print_char_cursor#89, print_str::@3/print_char_cursor#0 )
|
|
print_str::str#10 = phi( print_str/print_str::str#13, print_str::@3/print_str::str#0 )
|
|
print_str::$1 = 0 != *print_str::str#10
|
|
if(print_str::$1) goto print_str::@2
|
|
to:print_str::@return
|
|
print_str::@2: scope:[print_str] from print_str::@1
|
|
print_char_cursor#80 = phi( print_str::@1/print_char_cursor#81 )
|
|
print_str::str#11 = phi( print_str::@1/print_str::str#10 )
|
|
print_char::ch#0 = *print_str::str#11
|
|
call print_char
|
|
to:print_str::@3
|
|
print_str::@3: scope:[print_str] from print_str::@2
|
|
print_str::str#12 = phi( print_str::@2/print_str::str#11 )
|
|
print_char_cursor#41 = phi( print_str::@2/print_char_cursor#11 )
|
|
print_char_cursor#0 = print_char_cursor#41
|
|
print_str::str#0 = ++ print_str::str#12
|
|
to:print_str::@1
|
|
print_str::@return: scope:[print_str] from print_str::@1
|
|
print_char_cursor#42 = phi( print_str::@1/print_char_cursor#81 )
|
|
print_char_cursor#1 = print_char_cursor#42
|
|
return
|
|
to:@return
|
|
|
|
void print_ln()
|
|
print_ln: scope:[print_ln] from main::@13 main::@21 main::@28
|
|
print_char_cursor#82 = phi( main::@13/print_char_cursor#20, main::@21/print_char_cursor#28, main::@28/print_char_cursor#35 )
|
|
print_line_cursor#23 = phi( main::@13/print_line_cursor#25, main::@21/print_line_cursor#26, main::@28/print_line_cursor#27 )
|
|
to:print_ln::@1
|
|
print_ln::@1: scope:[print_ln] from print_ln print_ln::@1
|
|
print_char_cursor#43 = phi( print_ln/print_char_cursor#82, print_ln::@1/print_char_cursor#43 )
|
|
print_line_cursor#12 = phi( print_ln/print_line_cursor#23, print_ln::@1/print_line_cursor#0 )
|
|
print_ln::$0 = print_line_cursor#12 + $28
|
|
print_line_cursor#0 = print_ln::$0
|
|
print_ln::$1 = print_line_cursor#0 < print_char_cursor#43
|
|
if(print_ln::$1) goto print_ln::@1
|
|
to:print_ln::@2
|
|
print_ln::@2: scope:[print_ln] from print_ln::@1
|
|
print_line_cursor#13 = phi( print_ln::@1/print_line_cursor#0 )
|
|
print_char_cursor#2 = print_line_cursor#13
|
|
to:print_ln::@return
|
|
print_ln::@return: scope:[print_ln] from print_ln::@2
|
|
print_char_cursor#44 = phi( print_ln::@2/print_char_cursor#2 )
|
|
print_line_cursor#14 = phi( print_ln::@2/print_line_cursor#13 )
|
|
print_line_cursor#1 = print_line_cursor#14
|
|
print_char_cursor#3 = print_char_cursor#44
|
|
return
|
|
to:@return
|
|
|
|
void print_uint(unsigned int w)
|
|
print_uint: scope:[print_uint] from main::@10 main::@12 main::@16 main::@18 main::@20 main::@23 main::@25 main::@27 main::@8
|
|
print_char_cursor#83 = phi( main::@10/print_char_cursor#17, main::@12/print_char_cursor#19, main::@16/print_char_cursor#23, main::@18/print_char_cursor#25, main::@20/print_char_cursor#27, main::@23/print_char_cursor#30, main::@25/print_char_cursor#32, main::@27/print_char_cursor#34, main::@8/print_char_cursor#15 )
|
|
print_uint::w#9 = phi( main::@10/print_uint::w#1, main::@12/print_uint::w#2, main::@16/print_uint::w#3, main::@18/print_uint::w#4, main::@20/print_uint::w#5, main::@23/print_uint::w#6, main::@25/print_uint::w#7, main::@27/print_uint::w#8, main::@8/print_uint::w#0 )
|
|
print_uint::$0 = byte1 print_uint::w#9
|
|
print_uchar::b#0 = print_uint::$0
|
|
call print_uchar
|
|
to:print_uint::@1
|
|
print_uint::@1: scope:[print_uint] from print_uint
|
|
print_uint::w#10 = phi( print_uint/print_uint::w#9 )
|
|
print_char_cursor#45 = phi( print_uint/print_char_cursor#9 )
|
|
print_char_cursor#4 = print_char_cursor#45
|
|
print_uint::$2 = byte0 print_uint::w#10
|
|
print_uchar::b#1 = print_uint::$2
|
|
call print_uchar
|
|
to:print_uint::@2
|
|
print_uint::@2: scope:[print_uint] from print_uint::@1
|
|
print_char_cursor#46 = phi( print_uint::@1/print_char_cursor#9 )
|
|
print_char_cursor#5 = print_char_cursor#46
|
|
to:print_uint::@return
|
|
print_uint::@return: scope:[print_uint] from print_uint::@2
|
|
print_char_cursor#47 = phi( print_uint::@2/print_char_cursor#5 )
|
|
print_char_cursor#6 = print_char_cursor#47
|
|
return
|
|
to:@return
|
|
|
|
void print_uchar(char b)
|
|
print_uchar: scope:[print_uchar] from main::@2 print_uint print_uint::@1
|
|
print_char_cursor#84 = phi( main::@2/print_char_cursor#86, print_uint/print_char_cursor#83, print_uint::@1/print_char_cursor#4 )
|
|
print_uchar::b#3 = phi( main::@2/print_uchar::b#2, print_uint/print_uchar::b#0, print_uint::@1/print_uchar::b#1 )
|
|
print_uchar::$0 = print_uchar::b#3 >> 4
|
|
print_char::ch#1 = print_hextab[print_uchar::$0]
|
|
call print_char
|
|
to:print_uchar::@1
|
|
print_uchar::@1: scope:[print_uchar] from print_uchar
|
|
print_uchar::b#4 = phi( print_uchar/print_uchar::b#3 )
|
|
print_char_cursor#48 = phi( print_uchar/print_char_cursor#11 )
|
|
print_char_cursor#7 = print_char_cursor#48
|
|
print_uchar::$2 = print_uchar::b#4 & $f
|
|
print_char::ch#2 = print_hextab[print_uchar::$2]
|
|
call print_char
|
|
to:print_uchar::@2
|
|
print_uchar::@2: scope:[print_uchar] from print_uchar::@1
|
|
print_char_cursor#49 = phi( print_uchar::@1/print_char_cursor#11 )
|
|
print_char_cursor#8 = print_char_cursor#49
|
|
to:print_uchar::@return
|
|
print_uchar::@return: scope:[print_uchar] from print_uchar::@2
|
|
print_char_cursor#50 = phi( print_uchar::@2/print_char_cursor#8 )
|
|
print_char_cursor#9 = print_char_cursor#50
|
|
return
|
|
to:@return
|
|
|
|
void print_char(char ch)
|
|
print_char: scope:[print_char] from print_str::@2 print_uchar print_uchar::@1
|
|
print_char_cursor#51 = phi( print_str::@2/print_char_cursor#80, print_uchar/print_char_cursor#84, print_uchar::@1/print_char_cursor#7 )
|
|
print_char::ch#3 = phi( print_str::@2/print_char::ch#0, print_uchar/print_char::ch#1, print_uchar::@1/print_char::ch#2 )
|
|
*print_char_cursor#51 = print_char::ch#3
|
|
print_char_cursor#10 = ++ print_char_cursor#51
|
|
to:print_char::@return
|
|
print_char::@return: scope:[print_char] from print_char
|
|
print_char_cursor#52 = phi( print_char/print_char_cursor#10 )
|
|
print_char_cursor#11 = print_char_cursor#52
|
|
return
|
|
to:@return
|
|
|
|
void print_cls()
|
|
print_cls: scope:[print_cls] from main::@6
|
|
print_screen#2 = phi( main::@6/print_screen#5 )
|
|
memset::str#0 = (void *)print_screen#2
|
|
memset::c#0 = ' '
|
|
memset::num#0 = $3e8
|
|
call memset
|
|
memset::return#0 = memset::return#2
|
|
to:print_cls::@1
|
|
print_cls::@1: scope:[print_cls] from print_cls
|
|
print_screen#3 = phi( print_cls/print_screen#2 )
|
|
print_line_cursor#2 = print_screen#3
|
|
print_char_cursor#12 = print_line_cursor#2
|
|
to:print_cls::@return
|
|
print_cls::@return: scope:[print_cls] from print_cls::@1
|
|
print_char_cursor#53 = phi( print_cls::@1/print_char_cursor#12 )
|
|
print_line_cursor#15 = phi( print_cls::@1/print_line_cursor#2 )
|
|
print_line_cursor#3 = print_line_cursor#15
|
|
print_char_cursor#13 = print_char_cursor#53
|
|
return
|
|
to:@return
|
|
|
|
void * memset(void *str , char c , unsigned int num)
|
|
memset: scope:[memset] from print_cls
|
|
memset::c#4 = phi( print_cls/memset::c#0 )
|
|
memset::str#3 = phi( print_cls/memset::str#0 )
|
|
memset::num#1 = phi( print_cls/memset::num#0 )
|
|
memset::$0 = memset::num#1 > 0
|
|
memset::$1 = ! memset::$0
|
|
if(memset::$1) goto memset::@1
|
|
to:memset::@2
|
|
memset::@1: scope:[memset] from memset memset::@3
|
|
memset::str#1 = phi( memset/memset::str#3, memset::@3/memset::str#4 )
|
|
memset::return#1 = memset::str#1
|
|
to:memset::@return
|
|
memset::@2: scope:[memset] from memset
|
|
memset::c#3 = phi( memset/memset::c#4 )
|
|
memset::num#2 = phi( memset/memset::num#1 )
|
|
memset::str#2 = phi( memset/memset::str#3 )
|
|
memset::$4 = (char *)memset::str#2
|
|
memset::end#0 = memset::$4 + memset::num#2
|
|
memset::dst#0 = ((char *)) memset::str#2
|
|
to:memset::@3
|
|
memset::@3: scope:[memset] from memset::@2 memset::@4
|
|
memset::c#2 = phi( memset::@2/memset::c#3, memset::@4/memset::c#1 )
|
|
memset::str#4 = phi( memset::@2/memset::str#2, memset::@4/memset::str#5 )
|
|
memset::end#1 = phi( memset::@2/memset::end#0, memset::@4/memset::end#2 )
|
|
memset::dst#2 = phi( memset::@2/memset::dst#0, memset::@4/memset::dst#1 )
|
|
memset::$3 = memset::dst#2 != memset::end#1
|
|
if(memset::$3) goto memset::@4
|
|
to:memset::@1
|
|
memset::@4: scope:[memset] from memset::@3
|
|
memset::str#5 = phi( memset::@3/memset::str#4 )
|
|
memset::end#2 = phi( memset::@3/memset::end#1 )
|
|
memset::dst#3 = phi( memset::@3/memset::dst#2 )
|
|
memset::c#1 = phi( memset::@3/memset::c#2 )
|
|
*memset::dst#3 = memset::c#1
|
|
memset::dst#1 = ++ memset::dst#3
|
|
to:memset::@3
|
|
memset::@return: scope:[memset] from memset::@1
|
|
memset::return#3 = phi( memset::@1/memset::return#1 )
|
|
memset::return#2 = memset::return#3
|
|
return
|
|
to:@return
|
|
|
|
void main()
|
|
main: scope:[main] from __start::@1
|
|
print_char_cursor#93 = phi( __start::@1/print_char_cursor#88 )
|
|
print_line_cursor#37 = phi( __start::@1/print_line_cursor#28 )
|
|
print_screen#10 = phi( __start::@1/print_screen#8 )
|
|
rem16u#22 = phi( __start::@1/rem16u#26 )
|
|
lin16u_gen::min#0 = $22d
|
|
lin16u_gen::max#0 = $7461
|
|
lin16u_gen::lintab#0 = main::lintab1
|
|
lin16u_gen::length#0 = $14
|
|
call lin16u_gen
|
|
to:main::@4
|
|
main::@4: scope:[main] from main
|
|
print_char_cursor#92 = phi( main/print_char_cursor#93 )
|
|
print_line_cursor#33 = phi( main/print_line_cursor#37 )
|
|
print_screen#9 = phi( main/print_screen#10 )
|
|
rem16u#13 = phi( main/rem16u#8 )
|
|
rem16u#2 = rem16u#13
|
|
lin16u_gen::min#1 = $79cb
|
|
lin16u_gen::max#1 = $f781
|
|
lin16u_gen::lintab#1 = main::lintab2
|
|
lin16u_gen::length#1 = $14
|
|
call lin16u_gen
|
|
to:main::@5
|
|
main::@5: scope:[main] from main::@4
|
|
print_char_cursor#90 = phi( main::@4/print_char_cursor#92 )
|
|
print_line_cursor#29 = phi( main::@4/print_line_cursor#33 )
|
|
print_screen#7 = phi( main::@4/print_screen#9 )
|
|
rem16u#14 = phi( main::@4/rem16u#8 )
|
|
rem16u#3 = rem16u#14
|
|
lin16u_gen::min#2 = 0
|
|
lin16u_gen::max#2 = $6488
|
|
lin16u_gen::lintab#2 = main::lintab3
|
|
lin16u_gen::length#2 = $14
|
|
call lin16u_gen
|
|
to:main::@6
|
|
main::@6: scope:[main] from main::@5
|
|
print_char_cursor#85 = phi( main::@5/print_char_cursor#90 )
|
|
print_line_cursor#24 = phi( main::@5/print_line_cursor#29 )
|
|
print_screen#5 = phi( main::@5/print_screen#7 )
|
|
rem16u#15 = phi( main::@5/rem16u#8 )
|
|
rem16u#4 = rem16u#15
|
|
call print_cls
|
|
to:main::@7
|
|
main::@7: scope:[main] from main::@6
|
|
rem16u#50 = phi( main::@6/rem16u#4 )
|
|
print_char_cursor#54 = phi( main::@6/print_char_cursor#13 )
|
|
print_line_cursor#16 = phi( main::@6/print_line_cursor#3 )
|
|
print_line_cursor#4 = print_line_cursor#16
|
|
print_char_cursor#14 = print_char_cursor#54
|
|
print_str::str#1 = main::str
|
|
call print_str
|
|
to:main::@8
|
|
main::@8: scope:[main] from main::@7
|
|
rem16u#48 = phi( main::@7/rem16u#50 )
|
|
print_line_cursor#44 = phi( main::@7/print_line_cursor#4 )
|
|
print_char_cursor#55 = phi( main::@7/print_char_cursor#1 )
|
|
print_char_cursor#15 = print_char_cursor#55
|
|
print_uint::w#0 = $22d
|
|
call print_uint
|
|
to:main::@9
|
|
main::@9: scope:[main] from main::@8
|
|
rem16u#46 = phi( main::@8/rem16u#48 )
|
|
print_line_cursor#41 = phi( main::@8/print_line_cursor#44 )
|
|
print_char_cursor#56 = phi( main::@8/print_char_cursor#6 )
|
|
print_char_cursor#16 = print_char_cursor#56
|
|
print_str::str#2 = main::str1
|
|
call print_str
|
|
to:main::@10
|
|
main::@10: scope:[main] from main::@9
|
|
rem16u#44 = phi( main::@9/rem16u#46 )
|
|
print_line_cursor#38 = phi( main::@9/print_line_cursor#41 )
|
|
print_char_cursor#57 = phi( main::@9/print_char_cursor#1 )
|
|
print_char_cursor#17 = print_char_cursor#57
|
|
print_uint::w#1 = $79cb
|
|
call print_uint
|
|
to:main::@11
|
|
main::@11: scope:[main] from main::@10
|
|
rem16u#42 = phi( main::@10/rem16u#44 )
|
|
print_line_cursor#34 = phi( main::@10/print_line_cursor#38 )
|
|
print_char_cursor#58 = phi( main::@10/print_char_cursor#6 )
|
|
print_char_cursor#18 = print_char_cursor#58
|
|
print_str::str#3 = main::str2
|
|
call print_str
|
|
to:main::@12
|
|
main::@12: scope:[main] from main::@11
|
|
rem16u#40 = phi( main::@11/rem16u#42 )
|
|
print_line_cursor#30 = phi( main::@11/print_line_cursor#34 )
|
|
print_char_cursor#59 = phi( main::@11/print_char_cursor#1 )
|
|
print_char_cursor#19 = print_char_cursor#59
|
|
print_uint::w#2 = 0
|
|
call print_uint
|
|
to:main::@13
|
|
main::@13: scope:[main] from main::@12
|
|
rem16u#38 = phi( main::@12/rem16u#40 )
|
|
print_line_cursor#25 = phi( main::@12/print_line_cursor#30 )
|
|
print_char_cursor#60 = phi( main::@12/print_char_cursor#6 )
|
|
print_char_cursor#20 = print_char_cursor#60
|
|
call print_ln
|
|
to:main::@14
|
|
main::@14: scope:[main] from main::@13
|
|
rem16u#36 = phi( main::@13/rem16u#38 )
|
|
print_char_cursor#61 = phi( main::@13/print_char_cursor#3 )
|
|
print_line_cursor#17 = phi( main::@13/print_line_cursor#1 )
|
|
print_line_cursor#5 = print_line_cursor#17
|
|
print_char_cursor#21 = print_char_cursor#61
|
|
main::i#0 = 0
|
|
to:main::@1
|
|
main::@1: scope:[main] from main::@14 main::@22
|
|
rem16u#35 = phi( main::@14/rem16u#36, main::@22/rem16u#37 )
|
|
print_line_cursor#50 = phi( main::@14/print_line_cursor#5, main::@22/print_line_cursor#6 )
|
|
print_char_cursor#91 = phi( main::@14/print_char_cursor#21, main::@22/print_char_cursor#29 )
|
|
main::i#2 = phi( main::@14/main::i#0, main::@22/main::i#1 )
|
|
main::$18 = main::i#2 < $14
|
|
if(main::$18) goto main::@2
|
|
to:main::@3
|
|
main::@2: scope:[main] from main::@1
|
|
rem16u#52 = phi( main::@1/rem16u#35 )
|
|
print_line_cursor#49 = phi( main::@1/print_line_cursor#50 )
|
|
print_char_cursor#86 = phi( main::@1/print_char_cursor#91 )
|
|
main::i#3 = phi( main::@1/main::i#2 )
|
|
print_uchar::b#2 = main::i#3
|
|
call print_uchar
|
|
to:main::@15
|
|
main::@15: scope:[main] from main::@2
|
|
rem16u#51 = phi( main::@2/rem16u#52 )
|
|
print_line_cursor#47 = phi( main::@2/print_line_cursor#49 )
|
|
main::i#8 = phi( main::@2/main::i#3 )
|
|
print_char_cursor#62 = phi( main::@2/print_char_cursor#9 )
|
|
print_char_cursor#22 = print_char_cursor#62
|
|
print_str::str#4 = main::str3
|
|
call print_str
|
|
to:main::@16
|
|
main::@16: scope:[main] from main::@15
|
|
rem16u#49 = phi( main::@15/rem16u#51 )
|
|
print_line_cursor#45 = phi( main::@15/print_line_cursor#47 )
|
|
main::i#4 = phi( main::@15/main::i#8 )
|
|
print_char_cursor#63 = phi( main::@15/print_char_cursor#1 )
|
|
print_char_cursor#23 = print_char_cursor#63
|
|
main::$27 = main::i#4 * SIZEOF_UNSIGNED_INT
|
|
print_uint::w#3 = main::lintab1[main::$27]
|
|
call print_uint
|
|
to:main::@17
|
|
main::@17: scope:[main] from main::@16
|
|
rem16u#47 = phi( main::@16/rem16u#49 )
|
|
print_line_cursor#42 = phi( main::@16/print_line_cursor#45 )
|
|
main::i#9 = phi( main::@16/main::i#4 )
|
|
print_char_cursor#64 = phi( main::@16/print_char_cursor#6 )
|
|
print_char_cursor#24 = print_char_cursor#64
|
|
print_str::str#5 = main::str4
|
|
call print_str
|
|
to:main::@18
|
|
main::@18: scope:[main] from main::@17
|
|
rem16u#45 = phi( main::@17/rem16u#47 )
|
|
print_line_cursor#39 = phi( main::@17/print_line_cursor#42 )
|
|
main::i#5 = phi( main::@17/main::i#9 )
|
|
print_char_cursor#65 = phi( main::@17/print_char_cursor#1 )
|
|
print_char_cursor#25 = print_char_cursor#65
|
|
main::$28 = main::i#5 * SIZEOF_UNSIGNED_INT
|
|
print_uint::w#4 = main::lintab2[main::$28]
|
|
call print_uint
|
|
to:main::@19
|
|
main::@19: scope:[main] from main::@18
|
|
rem16u#43 = phi( main::@18/rem16u#45 )
|
|
print_line_cursor#35 = phi( main::@18/print_line_cursor#39 )
|
|
main::i#10 = phi( main::@18/main::i#5 )
|
|
print_char_cursor#66 = phi( main::@18/print_char_cursor#6 )
|
|
print_char_cursor#26 = print_char_cursor#66
|
|
print_str::str#6 = main::str5
|
|
call print_str
|
|
to:main::@20
|
|
main::@20: scope:[main] from main::@19
|
|
rem16u#41 = phi( main::@19/rem16u#43 )
|
|
print_line_cursor#31 = phi( main::@19/print_line_cursor#35 )
|
|
main::i#6 = phi( main::@19/main::i#10 )
|
|
print_char_cursor#67 = phi( main::@19/print_char_cursor#1 )
|
|
print_char_cursor#27 = print_char_cursor#67
|
|
main::$29 = main::i#6 * SIZEOF_UNSIGNED_INT
|
|
print_uint::w#5 = main::lintab3[main::$29]
|
|
call print_uint
|
|
to:main::@21
|
|
main::@21: scope:[main] from main::@20
|
|
rem16u#39 = phi( main::@20/rem16u#41 )
|
|
main::i#11 = phi( main::@20/main::i#6 )
|
|
print_line_cursor#26 = phi( main::@20/print_line_cursor#31 )
|
|
print_char_cursor#68 = phi( main::@20/print_char_cursor#6 )
|
|
print_char_cursor#28 = print_char_cursor#68
|
|
call print_ln
|
|
to:main::@22
|
|
main::@22: scope:[main] from main::@21
|
|
rem16u#37 = phi( main::@21/rem16u#39 )
|
|
main::i#7 = phi( main::@21/main::i#11 )
|
|
print_char_cursor#69 = phi( main::@21/print_char_cursor#3 )
|
|
print_line_cursor#18 = phi( main::@21/print_line_cursor#1 )
|
|
print_line_cursor#6 = print_line_cursor#18
|
|
print_char_cursor#29 = print_char_cursor#69
|
|
main::i#1 = ++ main::i#7
|
|
to:main::@1
|
|
main::@3: scope:[main] from main::@1
|
|
rem16u#34 = phi( main::@1/rem16u#35 )
|
|
print_line_cursor#48 = phi( main::@1/print_line_cursor#50 )
|
|
print_char_cursor#87 = phi( main::@1/print_char_cursor#91 )
|
|
print_str::str#7 = main::str6
|
|
call print_str
|
|
to:main::@23
|
|
main::@23: scope:[main] from main::@3
|
|
rem16u#33 = phi( main::@3/rem16u#34 )
|
|
print_line_cursor#46 = phi( main::@3/print_line_cursor#48 )
|
|
print_char_cursor#70 = phi( main::@3/print_char_cursor#1 )
|
|
print_char_cursor#30 = print_char_cursor#70
|
|
print_uint::w#6 = $7461
|
|
call print_uint
|
|
to:main::@24
|
|
main::@24: scope:[main] from main::@23
|
|
rem16u#32 = phi( main::@23/rem16u#33 )
|
|
print_line_cursor#43 = phi( main::@23/print_line_cursor#46 )
|
|
print_char_cursor#71 = phi( main::@23/print_char_cursor#6 )
|
|
print_char_cursor#31 = print_char_cursor#71
|
|
print_str::str#8 = main::str7
|
|
call print_str
|
|
to:main::@25
|
|
main::@25: scope:[main] from main::@24
|
|
rem16u#31 = phi( main::@24/rem16u#32 )
|
|
print_line_cursor#40 = phi( main::@24/print_line_cursor#43 )
|
|
print_char_cursor#72 = phi( main::@24/print_char_cursor#1 )
|
|
print_char_cursor#32 = print_char_cursor#72
|
|
print_uint::w#7 = $f781
|
|
call print_uint
|
|
to:main::@26
|
|
main::@26: scope:[main] from main::@25
|
|
rem16u#30 = phi( main::@25/rem16u#31 )
|
|
print_line_cursor#36 = phi( main::@25/print_line_cursor#40 )
|
|
print_char_cursor#73 = phi( main::@25/print_char_cursor#6 )
|
|
print_char_cursor#33 = print_char_cursor#73
|
|
print_str::str#9 = main::str8
|
|
call print_str
|
|
to:main::@27
|
|
main::@27: scope:[main] from main::@26
|
|
rem16u#29 = phi( main::@26/rem16u#30 )
|
|
print_line_cursor#32 = phi( main::@26/print_line_cursor#36 )
|
|
print_char_cursor#74 = phi( main::@26/print_char_cursor#1 )
|
|
print_char_cursor#34 = print_char_cursor#74
|
|
print_uint::w#8 = $6488
|
|
call print_uint
|
|
to:main::@28
|
|
main::@28: scope:[main] from main::@27
|
|
rem16u#27 = phi( main::@27/rem16u#29 )
|
|
print_line_cursor#27 = phi( main::@27/print_line_cursor#32 )
|
|
print_char_cursor#75 = phi( main::@27/print_char_cursor#6 )
|
|
print_char_cursor#35 = print_char_cursor#75
|
|
call print_ln
|
|
to:main::@29
|
|
main::@29: scope:[main] from main::@28
|
|
rem16u#23 = phi( main::@28/rem16u#27 )
|
|
print_char_cursor#76 = phi( main::@28/print_char_cursor#3 )
|
|
print_line_cursor#19 = phi( main::@28/print_line_cursor#1 )
|
|
print_line_cursor#7 = print_line_cursor#19
|
|
print_char_cursor#36 = print_char_cursor#76
|
|
to:main::@return
|
|
main::@return: scope:[main] from main::@29
|
|
print_char_cursor#77 = phi( main::@29/print_char_cursor#36 )
|
|
print_line_cursor#20 = phi( main::@29/print_line_cursor#7 )
|
|
rem16u#16 = phi( main::@29/rem16u#23 )
|
|
rem16u#5 = rem16u#16
|
|
print_line_cursor#8 = print_line_cursor#20
|
|
print_char_cursor#37 = print_char_cursor#77
|
|
return
|
|
to:@return
|
|
|
|
void lin16u_gen(unsigned int min , unsigned int max , unsigned int *lintab , unsigned int length)
|
|
lin16u_gen: scope:[lin16u_gen] from main main::@4 main::@5
|
|
lin16u_gen::lintab#8 = phi( main/lin16u_gen::lintab#0, main::@4/lin16u_gen::lintab#1, main::@5/lin16u_gen::lintab#2 )
|
|
rem16u#24 = phi( main/rem16u#22, main::@4/rem16u#2, main::@5/rem16u#3 )
|
|
lin16u_gen::length#3 = phi( main/lin16u_gen::length#0, main::@4/lin16u_gen::length#1, main::@5/lin16u_gen::length#2 )
|
|
lin16u_gen::min#3 = phi( main/lin16u_gen::min#0, main::@4/lin16u_gen::min#1, main::@5/lin16u_gen::min#2 )
|
|
lin16u_gen::max#3 = phi( main/lin16u_gen::max#0, main::@4/lin16u_gen::max#1, main::@5/lin16u_gen::max#2 )
|
|
lin16u_gen::ampl#0 = lin16u_gen::max#3 - lin16u_gen::min#3
|
|
lin16u_gen::$1 = lin16u_gen::length#3 - 1
|
|
divr16u::dividend#1 = lin16u_gen::ampl#0
|
|
divr16u::divisor#0 = lin16u_gen::$1
|
|
divr16u::rem#3 = 0
|
|
call divr16u
|
|
divr16u::return#2 = divr16u::return#1
|
|
to:lin16u_gen::@3
|
|
lin16u_gen::@3: scope:[lin16u_gen] from lin16u_gen
|
|
lin16u_gen::lintab#7 = phi( lin16u_gen/lin16u_gen::lintab#8 )
|
|
lin16u_gen::min#5 = phi( lin16u_gen/lin16u_gen::min#3 )
|
|
lin16u_gen::length#4 = phi( lin16u_gen/lin16u_gen::length#3 )
|
|
rem16u#17 = phi( lin16u_gen/rem16u#1 )
|
|
divr16u::return#5 = phi( lin16u_gen/divr16u::return#2 )
|
|
lin16u_gen::stepi#0 = divr16u::return#5
|
|
rem16u#6 = rem16u#17
|
|
lin16u_gen::$3 = lin16u_gen::length#4 - 1
|
|
divr16u::dividend#2 = 0
|
|
divr16u::divisor#1 = lin16u_gen::$3
|
|
divr16u::rem#4 = rem16u#6
|
|
call divr16u
|
|
divr16u::return#3 = divr16u::return#1
|
|
to:lin16u_gen::@4
|
|
lin16u_gen::@4: scope:[lin16u_gen] from lin16u_gen::@3
|
|
lin16u_gen::lintab#6 = phi( lin16u_gen::@3/lin16u_gen::lintab#7 )
|
|
lin16u_gen::length#7 = phi( lin16u_gen::@3/lin16u_gen::length#4 )
|
|
lin16u_gen::min#4 = phi( lin16u_gen::@3/lin16u_gen::min#5 )
|
|
lin16u_gen::stepi#1 = phi( lin16u_gen::@3/lin16u_gen::stepi#0 )
|
|
rem16u#18 = phi( lin16u_gen::@3/rem16u#1 )
|
|
divr16u::return#6 = phi( lin16u_gen::@3/divr16u::return#3 )
|
|
lin16u_gen::stepf#0 = divr16u::return#6
|
|
rem16u#7 = rem16u#18
|
|
lin16u_gen::step#0 = lin16u_gen::stepi#1 dw= lin16u_gen::stepf#0
|
|
lin16u_gen::val#0 = lin16u_gen::min#4 dw= 0
|
|
lin16u_gen::i#0 = 0
|
|
to:lin16u_gen::@1
|
|
lin16u_gen::@1: scope:[lin16u_gen] from lin16u_gen::@2 lin16u_gen::@4
|
|
rem16u#25 = phi( lin16u_gen::@2/rem16u#28, lin16u_gen::@4/rem16u#7 )
|
|
lin16u_gen::step#2 = phi( lin16u_gen::@2/lin16u_gen::step#1, lin16u_gen::@4/lin16u_gen::step#0 )
|
|
lin16u_gen::lintab#5 = phi( lin16u_gen::@2/lin16u_gen::lintab#3, lin16u_gen::@4/lin16u_gen::lintab#6 )
|
|
lin16u_gen::val#3 = phi( lin16u_gen::@2/lin16u_gen::val#1, lin16u_gen::@4/lin16u_gen::val#0 )
|
|
lin16u_gen::length#5 = phi( lin16u_gen::@2/lin16u_gen::length#6, lin16u_gen::@4/lin16u_gen::length#7 )
|
|
lin16u_gen::i#2 = phi( lin16u_gen::@2/lin16u_gen::i#1, lin16u_gen::@4/lin16u_gen::i#0 )
|
|
lin16u_gen::$7 = lin16u_gen::i#2 < lin16u_gen::length#5
|
|
if(lin16u_gen::$7) goto lin16u_gen::@2
|
|
to:lin16u_gen::@return
|
|
lin16u_gen::@2: scope:[lin16u_gen] from lin16u_gen::@1
|
|
rem16u#28 = phi( lin16u_gen::@1/rem16u#25 )
|
|
lin16u_gen::length#6 = phi( lin16u_gen::@1/lin16u_gen::length#5 )
|
|
lin16u_gen::i#3 = phi( lin16u_gen::@1/lin16u_gen::i#2 )
|
|
lin16u_gen::step#1 = phi( lin16u_gen::@1/lin16u_gen::step#2 )
|
|
lin16u_gen::lintab#4 = phi( lin16u_gen::@1/lin16u_gen::lintab#5 )
|
|
lin16u_gen::val#2 = phi( lin16u_gen::@1/lin16u_gen::val#3 )
|
|
lin16u_gen::$8 = word1 lin16u_gen::val#2
|
|
*lin16u_gen::lintab#4 = lin16u_gen::$8
|
|
lin16u_gen::$9 = lin16u_gen::val#2 + lin16u_gen::step#1
|
|
lin16u_gen::val#1 = lin16u_gen::$9
|
|
lin16u_gen::lintab#3 = lin16u_gen::lintab#4 + SIZEOF_UNSIGNED_INT
|
|
lin16u_gen::i#1 = ++ lin16u_gen::i#3
|
|
to:lin16u_gen::@1
|
|
lin16u_gen::@return: scope:[lin16u_gen] from lin16u_gen::@1
|
|
rem16u#19 = phi( lin16u_gen::@1/rem16u#25 )
|
|
rem16u#8 = rem16u#19
|
|
return
|
|
to:@return
|
|
|
|
void __start()
|
|
__start: scope:[__start] from
|
|
to:__start::__init1
|
|
__start::__init1: scope:[__start] from __start
|
|
rem16u#9 = 0
|
|
print_screen#0 = (char *)$400
|
|
print_line_cursor#9 = print_screen#0
|
|
print_char_cursor#38 = print_line_cursor#9
|
|
to:__start::@1
|
|
__start::@1: scope:[__start] from __start::__init1
|
|
print_screen#8 = phi( __start::__init1/print_screen#0 )
|
|
print_char_cursor#88 = phi( __start::__init1/print_char_cursor#38 )
|
|
print_line_cursor#28 = phi( __start::__init1/print_line_cursor#9 )
|
|
rem16u#26 = phi( __start::__init1/rem16u#9 )
|
|
call main
|
|
to:__start::@2
|
|
__start::@2: scope:[__start] from __start::@1
|
|
print_screen#6 = phi( __start::@1/print_screen#8 )
|
|
print_char_cursor#78 = phi( __start::@1/print_char_cursor#37 )
|
|
print_line_cursor#21 = phi( __start::@1/print_line_cursor#8 )
|
|
rem16u#20 = phi( __start::@1/rem16u#5 )
|
|
rem16u#10 = rem16u#20
|
|
print_line_cursor#10 = print_line_cursor#21
|
|
print_char_cursor#39 = print_char_cursor#78
|
|
to:__start::@return
|
|
__start::@return: scope:[__start] from __start::@2
|
|
print_char_cursor#79 = phi( __start::@2/print_char_cursor#39 )
|
|
print_line_cursor#22 = phi( __start::@2/print_line_cursor#10 )
|
|
print_screen#4 = phi( __start::@2/print_screen#6 )
|
|
rem16u#21 = phi( __start::@2/rem16u#10 )
|
|
rem16u#11 = rem16u#21
|
|
print_screen#1 = print_screen#4
|
|
print_line_cursor#11 = print_line_cursor#22
|
|
print_char_cursor#40 = print_char_cursor#79
|
|
return
|
|
to:@return
|
|
|
|
SYMBOL TABLE SSA
|
|
__constant char RADIX::BINARY = 2
|
|
__constant char RADIX::DECIMAL = $a
|
|
__constant char RADIX::HEXADECIMAL = $10
|
|
__constant char RADIX::OCTAL = 8
|
|
__constant char SIZEOF_UNSIGNED_INT = 2
|
|
void __start()
|
|
unsigned int divr16u(unsigned int dividend , unsigned int divisor , unsigned int rem)
|
|
unsigned int divr16u::$0
|
|
char divr16u::$1
|
|
unsigned int divr16u::$10
|
|
bool divr16u::$11
|
|
number divr16u::$2
|
|
bool divr16u::$3
|
|
bool divr16u::$4
|
|
number divr16u::$5
|
|
unsigned int divr16u::$6
|
|
unsigned int divr16u::$7
|
|
bool divr16u::$8
|
|
bool divr16u::$9
|
|
unsigned int divr16u::dividend
|
|
unsigned int divr16u::dividend#0
|
|
unsigned int divr16u::dividend#1
|
|
unsigned int divr16u::dividend#2
|
|
unsigned int divr16u::dividend#3
|
|
unsigned int divr16u::dividend#4
|
|
unsigned int divr16u::dividend#5
|
|
unsigned int divr16u::dividend#6
|
|
unsigned int divr16u::dividend#7
|
|
unsigned int divr16u::dividend#8
|
|
unsigned int divr16u::divisor
|
|
unsigned int divr16u::divisor#0
|
|
unsigned int divr16u::divisor#1
|
|
unsigned int divr16u::divisor#2
|
|
unsigned int divr16u::divisor#3
|
|
unsigned int divr16u::divisor#4
|
|
unsigned int divr16u::divisor#5
|
|
unsigned int divr16u::divisor#6
|
|
unsigned int divr16u::divisor#7
|
|
char divr16u::i
|
|
char divr16u::i#0
|
|
char divr16u::i#1
|
|
char divr16u::i#2
|
|
char divr16u::i#3
|
|
char divr16u::i#4
|
|
char divr16u::i#5
|
|
char divr16u::i#6
|
|
unsigned int divr16u::quotient
|
|
unsigned int divr16u::quotient#0
|
|
unsigned int divr16u::quotient#1
|
|
unsigned int divr16u::quotient#2
|
|
unsigned int divr16u::quotient#3
|
|
unsigned int divr16u::quotient#4
|
|
unsigned int divr16u::quotient#5
|
|
unsigned int divr16u::quotient#6
|
|
unsigned int divr16u::quotient#7
|
|
unsigned int divr16u::quotient#8
|
|
unsigned int divr16u::rem
|
|
unsigned int divr16u::rem#0
|
|
unsigned int divr16u::rem#1
|
|
unsigned int divr16u::rem#10
|
|
unsigned int divr16u::rem#11
|
|
unsigned int divr16u::rem#2
|
|
unsigned int divr16u::rem#3
|
|
unsigned int divr16u::rem#4
|
|
unsigned int divr16u::rem#5
|
|
unsigned int divr16u::rem#6
|
|
unsigned int divr16u::rem#7
|
|
unsigned int divr16u::rem#8
|
|
unsigned int divr16u::rem#9
|
|
unsigned int divr16u::return
|
|
unsigned int divr16u::return#0
|
|
unsigned int divr16u::return#1
|
|
unsigned int divr16u::return#2
|
|
unsigned int divr16u::return#3
|
|
unsigned int divr16u::return#4
|
|
unsigned int divr16u::return#5
|
|
unsigned int divr16u::return#6
|
|
void lin16u_gen(unsigned int min , unsigned int max , unsigned int *lintab , unsigned int length)
|
|
number lin16u_gen::$1
|
|
number lin16u_gen::$3
|
|
bool lin16u_gen::$7
|
|
unsigned int lin16u_gen::$8
|
|
unsigned long lin16u_gen::$9
|
|
unsigned int lin16u_gen::ampl
|
|
unsigned int lin16u_gen::ampl#0
|
|
unsigned int lin16u_gen::i
|
|
unsigned int lin16u_gen::i#0
|
|
unsigned int lin16u_gen::i#1
|
|
unsigned int lin16u_gen::i#2
|
|
unsigned int lin16u_gen::i#3
|
|
unsigned int lin16u_gen::length
|
|
unsigned int lin16u_gen::length#0
|
|
unsigned int lin16u_gen::length#1
|
|
unsigned int lin16u_gen::length#2
|
|
unsigned int lin16u_gen::length#3
|
|
unsigned int lin16u_gen::length#4
|
|
unsigned int lin16u_gen::length#5
|
|
unsigned int lin16u_gen::length#6
|
|
unsigned int lin16u_gen::length#7
|
|
unsigned int *lin16u_gen::lintab
|
|
unsigned int *lin16u_gen::lintab#0
|
|
unsigned int *lin16u_gen::lintab#1
|
|
unsigned int *lin16u_gen::lintab#2
|
|
unsigned int *lin16u_gen::lintab#3
|
|
unsigned int *lin16u_gen::lintab#4
|
|
unsigned int *lin16u_gen::lintab#5
|
|
unsigned int *lin16u_gen::lintab#6
|
|
unsigned int *lin16u_gen::lintab#7
|
|
unsigned int *lin16u_gen::lintab#8
|
|
unsigned int lin16u_gen::max
|
|
unsigned int lin16u_gen::max#0
|
|
unsigned int lin16u_gen::max#1
|
|
unsigned int lin16u_gen::max#2
|
|
unsigned int lin16u_gen::max#3
|
|
unsigned int lin16u_gen::min
|
|
unsigned int lin16u_gen::min#0
|
|
unsigned int lin16u_gen::min#1
|
|
unsigned int lin16u_gen::min#2
|
|
unsigned int lin16u_gen::min#3
|
|
unsigned int lin16u_gen::min#4
|
|
unsigned int lin16u_gen::min#5
|
|
unsigned long lin16u_gen::step
|
|
unsigned long lin16u_gen::step#0
|
|
unsigned long lin16u_gen::step#1
|
|
unsigned long lin16u_gen::step#2
|
|
unsigned int lin16u_gen::stepf
|
|
unsigned int lin16u_gen::stepf#0
|
|
unsigned int lin16u_gen::stepi
|
|
unsigned int lin16u_gen::stepi#0
|
|
unsigned int lin16u_gen::stepi#1
|
|
unsigned long lin16u_gen::val
|
|
unsigned long lin16u_gen::val#0
|
|
unsigned long lin16u_gen::val#1
|
|
unsigned long lin16u_gen::val#2
|
|
unsigned long lin16u_gen::val#3
|
|
void main()
|
|
bool main::$18
|
|
char main::$27
|
|
char main::$28
|
|
char main::$29
|
|
char main::i
|
|
char main::i#0
|
|
char main::i#1
|
|
char main::i#10
|
|
char main::i#11
|
|
char main::i#2
|
|
char main::i#3
|
|
char main::i#4
|
|
char main::i#5
|
|
char main::i#6
|
|
char main::i#7
|
|
char main::i#8
|
|
char main::i#9
|
|
__constant unsigned int main::lintab1[$14] = { fill( $14, 0) }
|
|
__constant unsigned int main::lintab2[$14] = { fill( $14, 0) }
|
|
__constant unsigned int main::lintab3[$14] = { fill( $14, 0) }
|
|
__constant char main::str[4] = " "
|
|
__constant char main::str1[2] = " "
|
|
__constant char main::str2[2] = " "
|
|
__constant char main::str3[2] = " "
|
|
__constant char main::str4[2] = " "
|
|
__constant char main::str5[2] = " "
|
|
__constant char main::str6[4] = " "
|
|
__constant char main::str7[2] = " "
|
|
__constant char main::str8[2] = " "
|
|
void * memset(void *str , char c , unsigned int num)
|
|
bool memset::$0
|
|
bool memset::$1
|
|
bool memset::$3
|
|
char *memset::$4
|
|
char memset::c
|
|
char memset::c#0
|
|
char memset::c#1
|
|
char memset::c#2
|
|
char memset::c#3
|
|
char memset::c#4
|
|
char *memset::dst
|
|
char *memset::dst#0
|
|
char *memset::dst#1
|
|
char *memset::dst#2
|
|
char *memset::dst#3
|
|
char *memset::end
|
|
char *memset::end#0
|
|
char *memset::end#1
|
|
char *memset::end#2
|
|
unsigned int memset::num
|
|
unsigned int memset::num#0
|
|
unsigned int memset::num#1
|
|
unsigned int memset::num#2
|
|
void *memset::return
|
|
void *memset::return#0
|
|
void *memset::return#1
|
|
void *memset::return#2
|
|
void *memset::return#3
|
|
void *memset::str
|
|
void *memset::str#0
|
|
void *memset::str#1
|
|
void *memset::str#2
|
|
void *memset::str#3
|
|
void *memset::str#4
|
|
void *memset::str#5
|
|
void print_char(char ch)
|
|
char print_char::ch
|
|
char print_char::ch#0
|
|
char print_char::ch#1
|
|
char print_char::ch#2
|
|
char print_char::ch#3
|
|
char *print_char_cursor
|
|
char *print_char_cursor#0
|
|
char *print_char_cursor#1
|
|
char *print_char_cursor#10
|
|
char *print_char_cursor#11
|
|
char *print_char_cursor#12
|
|
char *print_char_cursor#13
|
|
char *print_char_cursor#14
|
|
char *print_char_cursor#15
|
|
char *print_char_cursor#16
|
|
char *print_char_cursor#17
|
|
char *print_char_cursor#18
|
|
char *print_char_cursor#19
|
|
char *print_char_cursor#2
|
|
char *print_char_cursor#20
|
|
char *print_char_cursor#21
|
|
char *print_char_cursor#22
|
|
char *print_char_cursor#23
|
|
char *print_char_cursor#24
|
|
char *print_char_cursor#25
|
|
char *print_char_cursor#26
|
|
char *print_char_cursor#27
|
|
char *print_char_cursor#28
|
|
char *print_char_cursor#29
|
|
char *print_char_cursor#3
|
|
char *print_char_cursor#30
|
|
char *print_char_cursor#31
|
|
char *print_char_cursor#32
|
|
char *print_char_cursor#33
|
|
char *print_char_cursor#34
|
|
char *print_char_cursor#35
|
|
char *print_char_cursor#36
|
|
char *print_char_cursor#37
|
|
char *print_char_cursor#38
|
|
char *print_char_cursor#39
|
|
char *print_char_cursor#4
|
|
char *print_char_cursor#40
|
|
char *print_char_cursor#41
|
|
char *print_char_cursor#42
|
|
char *print_char_cursor#43
|
|
char *print_char_cursor#44
|
|
char *print_char_cursor#45
|
|
char *print_char_cursor#46
|
|
char *print_char_cursor#47
|
|
char *print_char_cursor#48
|
|
char *print_char_cursor#49
|
|
char *print_char_cursor#5
|
|
char *print_char_cursor#50
|
|
char *print_char_cursor#51
|
|
char *print_char_cursor#52
|
|
char *print_char_cursor#53
|
|
char *print_char_cursor#54
|
|
char *print_char_cursor#55
|
|
char *print_char_cursor#56
|
|
char *print_char_cursor#57
|
|
char *print_char_cursor#58
|
|
char *print_char_cursor#59
|
|
char *print_char_cursor#6
|
|
char *print_char_cursor#60
|
|
char *print_char_cursor#61
|
|
char *print_char_cursor#62
|
|
char *print_char_cursor#63
|
|
char *print_char_cursor#64
|
|
char *print_char_cursor#65
|
|
char *print_char_cursor#66
|
|
char *print_char_cursor#67
|
|
char *print_char_cursor#68
|
|
char *print_char_cursor#69
|
|
char *print_char_cursor#7
|
|
char *print_char_cursor#70
|
|
char *print_char_cursor#71
|
|
char *print_char_cursor#72
|
|
char *print_char_cursor#73
|
|
char *print_char_cursor#74
|
|
char *print_char_cursor#75
|
|
char *print_char_cursor#76
|
|
char *print_char_cursor#77
|
|
char *print_char_cursor#78
|
|
char *print_char_cursor#79
|
|
char *print_char_cursor#8
|
|
char *print_char_cursor#80
|
|
char *print_char_cursor#81
|
|
char *print_char_cursor#82
|
|
char *print_char_cursor#83
|
|
char *print_char_cursor#84
|
|
char *print_char_cursor#85
|
|
char *print_char_cursor#86
|
|
char *print_char_cursor#87
|
|
char *print_char_cursor#88
|
|
char *print_char_cursor#89
|
|
char *print_char_cursor#9
|
|
char *print_char_cursor#90
|
|
char *print_char_cursor#91
|
|
char *print_char_cursor#92
|
|
char *print_char_cursor#93
|
|
void print_cls()
|
|
__constant const char print_hextab[] = "0123456789abcdef"z
|
|
char *print_line_cursor
|
|
char *print_line_cursor#0
|
|
char *print_line_cursor#1
|
|
char *print_line_cursor#10
|
|
char *print_line_cursor#11
|
|
char *print_line_cursor#12
|
|
char *print_line_cursor#13
|
|
char *print_line_cursor#14
|
|
char *print_line_cursor#15
|
|
char *print_line_cursor#16
|
|
char *print_line_cursor#17
|
|
char *print_line_cursor#18
|
|
char *print_line_cursor#19
|
|
char *print_line_cursor#2
|
|
char *print_line_cursor#20
|
|
char *print_line_cursor#21
|
|
char *print_line_cursor#22
|
|
char *print_line_cursor#23
|
|
char *print_line_cursor#24
|
|
char *print_line_cursor#25
|
|
char *print_line_cursor#26
|
|
char *print_line_cursor#27
|
|
char *print_line_cursor#28
|
|
char *print_line_cursor#29
|
|
char *print_line_cursor#3
|
|
char *print_line_cursor#30
|
|
char *print_line_cursor#31
|
|
char *print_line_cursor#32
|
|
char *print_line_cursor#33
|
|
char *print_line_cursor#34
|
|
char *print_line_cursor#35
|
|
char *print_line_cursor#36
|
|
char *print_line_cursor#37
|
|
char *print_line_cursor#38
|
|
char *print_line_cursor#39
|
|
char *print_line_cursor#4
|
|
char *print_line_cursor#40
|
|
char *print_line_cursor#41
|
|
char *print_line_cursor#42
|
|
char *print_line_cursor#43
|
|
char *print_line_cursor#44
|
|
char *print_line_cursor#45
|
|
char *print_line_cursor#46
|
|
char *print_line_cursor#47
|
|
char *print_line_cursor#48
|
|
char *print_line_cursor#49
|
|
char *print_line_cursor#5
|
|
char *print_line_cursor#50
|
|
char *print_line_cursor#6
|
|
char *print_line_cursor#7
|
|
char *print_line_cursor#8
|
|
char *print_line_cursor#9
|
|
void print_ln()
|
|
char *print_ln::$0
|
|
bool print_ln::$1
|
|
char *print_screen
|
|
char *print_screen#0
|
|
char *print_screen#1
|
|
char *print_screen#10
|
|
char *print_screen#2
|
|
char *print_screen#3
|
|
char *print_screen#4
|
|
char *print_screen#5
|
|
char *print_screen#6
|
|
char *print_screen#7
|
|
char *print_screen#8
|
|
char *print_screen#9
|
|
void print_str(char *str)
|
|
bool print_str::$1
|
|
char *print_str::str
|
|
char *print_str::str#0
|
|
char *print_str::str#1
|
|
char *print_str::str#10
|
|
char *print_str::str#11
|
|
char *print_str::str#12
|
|
char *print_str::str#13
|
|
char *print_str::str#2
|
|
char *print_str::str#3
|
|
char *print_str::str#4
|
|
char *print_str::str#5
|
|
char *print_str::str#6
|
|
char *print_str::str#7
|
|
char *print_str::str#8
|
|
char *print_str::str#9
|
|
void print_uchar(char b)
|
|
char print_uchar::$0
|
|
number print_uchar::$2
|
|
char print_uchar::b
|
|
char print_uchar::b#0
|
|
char print_uchar::b#1
|
|
char print_uchar::b#2
|
|
char print_uchar::b#3
|
|
char print_uchar::b#4
|
|
void print_uint(unsigned int w)
|
|
char print_uint::$0
|
|
char print_uint::$2
|
|
unsigned int print_uint::w
|
|
unsigned int print_uint::w#0
|
|
unsigned int print_uint::w#1
|
|
unsigned int print_uint::w#10
|
|
unsigned int print_uint::w#2
|
|
unsigned int print_uint::w#3
|
|
unsigned int print_uint::w#4
|
|
unsigned int print_uint::w#5
|
|
unsigned int print_uint::w#6
|
|
unsigned int print_uint::w#7
|
|
unsigned int print_uint::w#8
|
|
unsigned int print_uint::w#9
|
|
unsigned int rem16u
|
|
unsigned int rem16u#0
|
|
unsigned int rem16u#1
|
|
unsigned int rem16u#10
|
|
unsigned int rem16u#11
|
|
unsigned int rem16u#12
|
|
unsigned int rem16u#13
|
|
unsigned int rem16u#14
|
|
unsigned int rem16u#15
|
|
unsigned int rem16u#16
|
|
unsigned int rem16u#17
|
|
unsigned int rem16u#18
|
|
unsigned int rem16u#19
|
|
unsigned int rem16u#2
|
|
unsigned int rem16u#20
|
|
unsigned int rem16u#21
|
|
unsigned int rem16u#22
|
|
unsigned int rem16u#23
|
|
unsigned int rem16u#24
|
|
unsigned int rem16u#25
|
|
unsigned int rem16u#26
|
|
unsigned int rem16u#27
|
|
unsigned int rem16u#28
|
|
unsigned int rem16u#29
|
|
unsigned int rem16u#3
|
|
unsigned int rem16u#30
|
|
unsigned int rem16u#31
|
|
unsigned int rem16u#32
|
|
unsigned int rem16u#33
|
|
unsigned int rem16u#34
|
|
unsigned int rem16u#35
|
|
unsigned int rem16u#36
|
|
unsigned int rem16u#37
|
|
unsigned int rem16u#38
|
|
unsigned int rem16u#39
|
|
unsigned int rem16u#4
|
|
unsigned int rem16u#40
|
|
unsigned int rem16u#41
|
|
unsigned int rem16u#42
|
|
unsigned int rem16u#43
|
|
unsigned int rem16u#44
|
|
unsigned int rem16u#45
|
|
unsigned int rem16u#46
|
|
unsigned int rem16u#47
|
|
unsigned int rem16u#48
|
|
unsigned int rem16u#49
|
|
unsigned int rem16u#5
|
|
unsigned int rem16u#50
|
|
unsigned int rem16u#51
|
|
unsigned int rem16u#52
|
|
unsigned int rem16u#6
|
|
unsigned int rem16u#7
|
|
unsigned int rem16u#8
|
|
unsigned int rem16u#9
|
|
|
|
Adding number conversion cast (unumber) 1 in divr16u::$0 = divr16u::rem#5 << 1
|
|
Adding number conversion cast (unumber) $80 in divr16u::$2 = divr16u::$1 & $80
|
|
Adding number conversion cast (unumber) divr16u::$2 in divr16u::$2 = divr16u::$1 & (unumber)$80
|
|
Adding number conversion cast (unumber) 0 in divr16u::$3 = divr16u::$2 != 0
|
|
Adding number conversion cast (unumber) 1 in divr16u::$6 = divr16u::dividend#4 << 1
|
|
Adding number conversion cast (unumber) 1 in divr16u::$7 = divr16u::quotient#3 << 1
|
|
Adding number conversion cast (unumber) 1 in divr16u::$5 = divr16u::rem#7 | 1
|
|
Adding number conversion cast (unumber) divr16u::$5 in divr16u::$5 = divr16u::rem#7 | (unumber)1
|
|
Adding number conversion cast (unumber) 0 in print_str::$1 = 0 != *print_str::str#10
|
|
Adding number conversion cast (unumber) $28 in print_ln::$0 = print_line_cursor#12 + $28
|
|
Adding number conversion cast (unumber) 4 in print_uchar::$0 = print_uchar::b#3 >> 4
|
|
Adding number conversion cast (unumber) $f in print_uchar::$2 = print_uchar::b#4 & $f
|
|
Adding number conversion cast (unumber) print_uchar::$2 in print_uchar::$2 = print_uchar::b#4 & (unumber)$f
|
|
Adding number conversion cast (unumber) $3e8 in memset::num#0 = $3e8
|
|
Adding number conversion cast (unumber) 0 in memset::$0 = memset::num#1 > 0
|
|
Adding number conversion cast (unumber) $22d in lin16u_gen::min#0 = $22d
|
|
Adding number conversion cast (unumber) $7461 in lin16u_gen::max#0 = $7461
|
|
Adding number conversion cast (unumber) $14 in lin16u_gen::length#0 = $14
|
|
Adding number conversion cast (unumber) $79cb in lin16u_gen::min#1 = $79cb
|
|
Adding number conversion cast (unumber) $f781 in lin16u_gen::max#1 = $f781
|
|
Adding number conversion cast (unumber) $14 in lin16u_gen::length#1 = $14
|
|
Adding number conversion cast (unumber) 0 in lin16u_gen::min#2 = 0
|
|
Adding number conversion cast (unumber) $6488 in lin16u_gen::max#2 = $6488
|
|
Adding number conversion cast (unumber) $14 in lin16u_gen::length#2 = $14
|
|
Adding number conversion cast (unumber) $22d in print_uint::w#0 = $22d
|
|
Adding number conversion cast (unumber) $79cb in print_uint::w#1 = $79cb
|
|
Adding number conversion cast (unumber) 0 in print_uint::w#2 = 0
|
|
Adding number conversion cast (unumber) $14 in main::$18 = main::i#2 < $14
|
|
Adding number conversion cast (unumber) $7461 in print_uint::w#6 = $7461
|
|
Adding number conversion cast (unumber) $f781 in print_uint::w#7 = $f781
|
|
Adding number conversion cast (unumber) $6488 in print_uint::w#8 = $6488
|
|
Adding number conversion cast (unumber) 1 in lin16u_gen::$1 = lin16u_gen::length#3 - 1
|
|
Adding number conversion cast (unumber) lin16u_gen::$1 in lin16u_gen::$1 = lin16u_gen::length#3 - (unumber)1
|
|
Adding number conversion cast (unumber) 0 in divr16u::rem#3 = 0
|
|
Adding number conversion cast (unumber) 1 in lin16u_gen::$3 = lin16u_gen::length#4 - 1
|
|
Adding number conversion cast (unumber) lin16u_gen::$3 in lin16u_gen::$3 = lin16u_gen::length#4 - (unumber)1
|
|
Adding number conversion cast (unumber) 0 in divr16u::dividend#2 = 0
|
|
Adding number conversion cast (unumber) 0 in lin16u_gen::val#0 = lin16u_gen::min#4 dw= 0
|
|
Successful SSA optimization PassNAddNumberTypeConversions
|
|
Inlining cast memset::num#0 = (unumber)$3e8
|
|
Inlining cast memset::dst#0 = (char *)memset::str#2
|
|
Inlining cast lin16u_gen::min#0 = (unumber)$22d
|
|
Inlining cast lin16u_gen::max#0 = (unumber)$7461
|
|
Inlining cast lin16u_gen::length#0 = (unumber)$14
|
|
Inlining cast lin16u_gen::min#1 = (unumber)$79cb
|
|
Inlining cast lin16u_gen::max#1 = (unumber)$f781
|
|
Inlining cast lin16u_gen::length#1 = (unumber)$14
|
|
Inlining cast lin16u_gen::min#2 = (unumber)0
|
|
Inlining cast lin16u_gen::max#2 = (unumber)$6488
|
|
Inlining cast lin16u_gen::length#2 = (unumber)$14
|
|
Inlining cast print_uint::w#0 = (unumber)$22d
|
|
Inlining cast print_uint::w#1 = (unumber)$79cb
|
|
Inlining cast print_uint::w#2 = (unumber)0
|
|
Inlining cast print_uint::w#6 = (unumber)$7461
|
|
Inlining cast print_uint::w#7 = (unumber)$f781
|
|
Inlining cast print_uint::w#8 = (unumber)$6488
|
|
Inlining cast divr16u::rem#3 = (unumber)0
|
|
Inlining cast divr16u::dividend#2 = (unumber)0
|
|
Successful SSA optimization Pass2InlineCast
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast $80
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast 4
|
|
Simplifying constant integer cast $f
|
|
Simplifying constant integer cast $3e8
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast $22d
|
|
Simplifying constant integer cast $7461
|
|
Simplifying constant integer cast $14
|
|
Simplifying constant integer cast $79cb
|
|
Simplifying constant integer cast $f781
|
|
Simplifying constant integer cast $14
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast $6488
|
|
Simplifying constant integer cast $14
|
|
Simplifying constant integer cast $22d
|
|
Simplifying constant integer cast $79cb
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast $14
|
|
Simplifying constant integer cast $7461
|
|
Simplifying constant integer cast $f781
|
|
Simplifying constant integer cast $6488
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant pointer cast (char *) 1024
|
|
Successful SSA optimization PassNCastSimplification
|
|
Finalized unsigned number type (char) 1
|
|
Finalized unsigned number type (char) $80
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (char) 1
|
|
Finalized unsigned number type (char) 1
|
|
Finalized unsigned number type (char) 1
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (char) $28
|
|
Finalized unsigned number type (char) 4
|
|
Finalized unsigned number type (char) $f
|
|
Finalized unsigned number type (unsigned int) $3e8
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (unsigned int) $22d
|
|
Finalized unsigned number type (unsigned int) $7461
|
|
Finalized unsigned number type (char) $14
|
|
Finalized unsigned number type (unsigned int) $79cb
|
|
Finalized unsigned number type (unsigned int) $f781
|
|
Finalized unsigned number type (char) $14
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (unsigned int) $6488
|
|
Finalized unsigned number type (char) $14
|
|
Finalized unsigned number type (unsigned int) $22d
|
|
Finalized unsigned number type (unsigned int) $79cb
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (char) $14
|
|
Finalized unsigned number type (unsigned int) $7461
|
|
Finalized unsigned number type (unsigned int) $f781
|
|
Finalized unsigned number type (unsigned int) $6488
|
|
Finalized unsigned number type (char) 1
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (char) 1
|
|
Finalized unsigned number type (char) 0
|
|
Finalized unsigned number type (char) 0
|
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
|
Inferred type updated to char in divr16u::$2 = divr16u::$1 & $80
|
|
Inferred type updated to unsigned int in divr16u::$5 = divr16u::rem#7 | 1
|
|
Inferred type updated to char in print_uchar::$2 = print_uchar::b#4 & $f
|
|
Inferred type updated to unsigned int in lin16u_gen::$1 = lin16u_gen::length#3 - 1
|
|
Inferred type updated to unsigned int in lin16u_gen::$3 = lin16u_gen::length#4 - 1
|
|
Inversing boolean not [9] divr16u::$4 = divr16u::$2 == 0 from [8] divr16u::$3 = divr16u::$2 != 0
|
|
Inversing boolean not [17] divr16u::$9 = divr16u::rem#6 < divr16u::divisor#2 from [16] divr16u::$8 = divr16u::rem#6 >= divr16u::divisor#2
|
|
Inversing boolean not [111] memset::$1 = memset::num#1 <= 0 from [110] memset::$0 = memset::num#1 > 0
|
|
Successful SSA optimization Pass2UnaryNotSimplification
|
|
Alias divr16u::rem#0 = divr16u::$0 divr16u::rem#7
|
|
Alias divr16u::dividend#0 = divr16u::$6 divr16u::dividend#8
|
|
Alias divr16u::quotient#1 = divr16u::$7 divr16u::quotient#4
|
|
Alias divr16u::dividend#3 = divr16u::dividend#7
|
|
Alias divr16u::quotient#6 = divr16u::quotient#7
|
|
Alias divr16u::divisor#4 = divr16u::divisor#5
|
|
Alias divr16u::i#5 = divr16u::i#6
|
|
Alias divr16u::rem#1 = divr16u::$5
|
|
Alias divr16u::rem#6 = divr16u::rem#8
|
|
Alias divr16u::divisor#2 = divr16u::divisor#3
|
|
Alias divr16u::i#3 = divr16u::i#4
|
|
Alias divr16u::rem#2 = divr16u::$10
|
|
Alias divr16u::rem#11 = divr16u::rem#9
|
|
Alias divr16u::return#0 = divr16u::quotient#5 divr16u::quotient#8 divr16u::return#4 divr16u::return#1
|
|
Alias rem16u#0 = rem16u#12 rem16u#1
|
|
Alias print_str::str#10 = print_str::str#11 print_str::str#12
|
|
Alias print_char_cursor#1 = print_char_cursor#80 print_char_cursor#81 print_char_cursor#42
|
|
Alias print_char_cursor#0 = print_char_cursor#41
|
|
Alias print_line_cursor#0 = print_ln::$0 print_line_cursor#13 print_char_cursor#2 print_line_cursor#14 print_char_cursor#44 print_line_cursor#1 print_char_cursor#3
|
|
Alias print_uchar::b#0 = print_uint::$0
|
|
Alias print_uint::w#10 = print_uint::w#9
|
|
Alias print_char_cursor#4 = print_char_cursor#45
|
|
Alias print_uchar::b#1 = print_uint::$2
|
|
Alias print_char_cursor#46 = print_char_cursor#5 print_char_cursor#47 print_char_cursor#6
|
|
Alias print_uchar::b#3 = print_uchar::b#4
|
|
Alias print_char_cursor#48 = print_char_cursor#7
|
|
Alias print_char_cursor#49 = print_char_cursor#8 print_char_cursor#50 print_char_cursor#9
|
|
Alias print_char_cursor#10 = print_char_cursor#52 print_char_cursor#11
|
|
Alias print_line_cursor#15 = print_screen#3 print_screen#2 print_line_cursor#2 print_char_cursor#12 print_char_cursor#53 print_line_cursor#3 print_char_cursor#13
|
|
Alias memset::return#1 = memset::str#1 memset::return#3 memset::return#2
|
|
Alias memset::str#2 = memset::str#3
|
|
Alias memset::num#1 = memset::num#2
|
|
Alias memset::c#3 = memset::c#4
|
|
Alias memset::c#1 = memset::c#2
|
|
Alias memset::dst#2 = memset::dst#3
|
|
Alias memset::end#1 = memset::end#2
|
|
Alias memset::str#4 = memset::str#5
|
|
Alias print_screen#10 = print_screen#9 print_screen#7 print_screen#5
|
|
Alias print_line_cursor#24 = print_line_cursor#33 print_line_cursor#37 print_line_cursor#29
|
|
Alias print_char_cursor#85 = print_char_cursor#92 print_char_cursor#93 print_char_cursor#90
|
|
Alias rem16u#13 = rem16u#2
|
|
Alias rem16u#14 = rem16u#3
|
|
Alias rem16u#15 = rem16u#4 rem16u#50 rem16u#48 rem16u#46 rem16u#44 rem16u#42 rem16u#40 rem16u#38 rem16u#36
|
|
Alias print_line_cursor#16 = print_line_cursor#4 print_line_cursor#44 print_line_cursor#41 print_line_cursor#38 print_line_cursor#34 print_line_cursor#30 print_line_cursor#25
|
|
Alias print_char_cursor#14 = print_char_cursor#54
|
|
Alias print_char_cursor#15 = print_char_cursor#55
|
|
Alias print_char_cursor#16 = print_char_cursor#56
|
|
Alias print_char_cursor#17 = print_char_cursor#57
|
|
Alias print_char_cursor#18 = print_char_cursor#58
|
|
Alias print_char_cursor#19 = print_char_cursor#59
|
|
Alias print_char_cursor#20 = print_char_cursor#60
|
|
Alias print_line_cursor#17 = print_line_cursor#5
|
|
Alias print_char_cursor#21 = print_char_cursor#61
|
|
Alias main::i#10 = main::i#3 main::i#2 main::i#8 main::i#4 main::i#9 main::i#5 main::i#6 main::i#11 main::i#7
|
|
Alias print_char_cursor#86 = print_char_cursor#91 print_char_cursor#87
|
|
Alias print_line_cursor#26 = print_line_cursor#49 print_line_cursor#50 print_line_cursor#47 print_line_cursor#45 print_line_cursor#42 print_line_cursor#39 print_line_cursor#35 print_line_cursor#31 print_line_cursor#48 print_line_cursor#46 print_line_cursor#43 print_line_cursor#40 print_line_cursor#36 print_line_cursor#32 print_line_cursor#27
|
|
Alias rem16u#16 = rem16u#52 rem16u#35 rem16u#51 rem16u#49 rem16u#47 rem16u#45 rem16u#43 rem16u#41 rem16u#39 rem16u#37 rem16u#34 rem16u#33 rem16u#32 rem16u#31 rem16u#30 rem16u#29 rem16u#27 rem16u#23 rem16u#5
|
|
Alias print_char_cursor#22 = print_char_cursor#62
|
|
Alias print_char_cursor#23 = print_char_cursor#63
|
|
Alias print_char_cursor#24 = print_char_cursor#64
|
|
Alias print_char_cursor#25 = print_char_cursor#65
|
|
Alias print_char_cursor#26 = print_char_cursor#66
|
|
Alias print_char_cursor#27 = print_char_cursor#67
|
|
Alias print_char_cursor#28 = print_char_cursor#68
|
|
Alias print_line_cursor#18 = print_line_cursor#6
|
|
Alias print_char_cursor#29 = print_char_cursor#69
|
|
Alias print_char_cursor#30 = print_char_cursor#70
|
|
Alias print_char_cursor#31 = print_char_cursor#71
|
|
Alias print_char_cursor#32 = print_char_cursor#72
|
|
Alias print_char_cursor#33 = print_char_cursor#73
|
|
Alias print_char_cursor#34 = print_char_cursor#74
|
|
Alias print_char_cursor#35 = print_char_cursor#75
|
|
Alias print_line_cursor#19 = print_line_cursor#7 print_line_cursor#20 print_line_cursor#8
|
|
Alias print_char_cursor#36 = print_char_cursor#76 print_char_cursor#77 print_char_cursor#37
|
|
Alias divr16u::divisor#0 = lin16u_gen::$1
|
|
Alias divr16u::return#2 = divr16u::return#5
|
|
Alias lin16u_gen::length#3 = lin16u_gen::length#4 lin16u_gen::length#7
|
|
Alias lin16u_gen::min#3 = lin16u_gen::min#5 lin16u_gen::min#4
|
|
Alias lin16u_gen::lintab#6 = lin16u_gen::lintab#7 lin16u_gen::lintab#8
|
|
Alias rem16u#17 = rem16u#6
|
|
Alias divr16u::divisor#1 = lin16u_gen::$3
|
|
Alias divr16u::return#3 = divr16u::return#6
|
|
Alias lin16u_gen::stepi#0 = lin16u_gen::stepi#1
|
|
Alias rem16u#18 = rem16u#7
|
|
Alias lin16u_gen::val#2 = lin16u_gen::val#3
|
|
Alias lin16u_gen::lintab#4 = lin16u_gen::lintab#5
|
|
Alias lin16u_gen::step#1 = lin16u_gen::step#2
|
|
Alias lin16u_gen::i#2 = lin16u_gen::i#3
|
|
Alias lin16u_gen::length#5 = lin16u_gen::length#6
|
|
Alias rem16u#19 = rem16u#28 rem16u#25 rem16u#8
|
|
Alias lin16u_gen::val#1 = lin16u_gen::$9
|
|
Alias print_screen#0 = print_line_cursor#9 print_char_cursor#38 print_line_cursor#28 print_char_cursor#88 print_screen#8 print_screen#6 print_screen#4 print_screen#1
|
|
Alias rem16u#26 = rem16u#9
|
|
Alias rem16u#10 = rem16u#20 rem16u#21 rem16u#11
|
|
Alias print_line_cursor#10 = print_line_cursor#21 print_line_cursor#22 print_line_cursor#11
|
|
Alias print_char_cursor#39 = print_char_cursor#78 print_char_cursor#79 print_char_cursor#40
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Alias divr16u::dividend#3 = divr16u::dividend#4
|
|
Alias divr16u::quotient#3 = divr16u::quotient#6
|
|
Alias divr16u::divisor#2 = divr16u::divisor#4 divr16u::divisor#7
|
|
Alias divr16u::i#2 = divr16u::i#3 divr16u::i#5
|
|
Alias divr16u::dividend#0 = divr16u::dividend#6
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Identical Phi Values divr16u::divisor#2 divr16u::divisor#6
|
|
Identical Phi Values print_char_cursor#0 print_char_cursor#10
|
|
Identical Phi Values print_char_cursor#43 print_char_cursor#82
|
|
Identical Phi Values print_char_cursor#4 print_char_cursor#49
|
|
Identical Phi Values print_char_cursor#46 print_char_cursor#49
|
|
Identical Phi Values print_char_cursor#48 print_char_cursor#10
|
|
Identical Phi Values print_char_cursor#49 print_char_cursor#10
|
|
Identical Phi Values print_line_cursor#15 print_screen#10
|
|
Identical Phi Values memset::num#1 memset::num#0
|
|
Identical Phi Values memset::str#2 memset::str#0
|
|
Identical Phi Values memset::c#3 memset::c#0
|
|
Identical Phi Values memset::end#1 memset::end#0
|
|
Identical Phi Values memset::str#4 memset::str#2
|
|
Identical Phi Values memset::c#1 memset::c#3
|
|
Identical Phi Values rem16u#22 rem16u#26
|
|
Identical Phi Values print_screen#10 print_screen#0
|
|
Identical Phi Values print_line_cursor#24 print_screen#0
|
|
Identical Phi Values print_char_cursor#85 print_screen#0
|
|
Identical Phi Values rem16u#13 rem16u#19
|
|
Identical Phi Values rem16u#14 rem16u#19
|
|
Identical Phi Values rem16u#15 rem16u#19
|
|
Identical Phi Values print_line_cursor#16 print_line_cursor#15
|
|
Identical Phi Values print_char_cursor#14 print_line_cursor#15
|
|
Identical Phi Values print_char_cursor#15 print_char_cursor#1
|
|
Identical Phi Values print_char_cursor#16 print_char_cursor#46
|
|
Identical Phi Values print_char_cursor#17 print_char_cursor#1
|
|
Identical Phi Values print_char_cursor#18 print_char_cursor#46
|
|
Identical Phi Values print_char_cursor#19 print_char_cursor#1
|
|
Identical Phi Values print_char_cursor#20 print_char_cursor#46
|
|
Identical Phi Values print_line_cursor#17 print_line_cursor#0
|
|
Identical Phi Values print_char_cursor#21 print_line_cursor#0
|
|
Identical Phi Values rem16u#16 rem16u#15
|
|
Identical Phi Values print_char_cursor#22 print_char_cursor#49
|
|
Identical Phi Values print_char_cursor#23 print_char_cursor#1
|
|
Identical Phi Values print_char_cursor#24 print_char_cursor#46
|
|
Identical Phi Values print_char_cursor#25 print_char_cursor#1
|
|
Identical Phi Values print_char_cursor#26 print_char_cursor#46
|
|
Identical Phi Values print_char_cursor#27 print_char_cursor#1
|
|
Identical Phi Values print_char_cursor#28 print_char_cursor#46
|
|
Identical Phi Values print_line_cursor#18 print_line_cursor#0
|
|
Identical Phi Values print_char_cursor#29 print_line_cursor#0
|
|
Identical Phi Values print_char_cursor#30 print_char_cursor#1
|
|
Identical Phi Values print_char_cursor#31 print_char_cursor#46
|
|
Identical Phi Values print_char_cursor#32 print_char_cursor#1
|
|
Identical Phi Values print_char_cursor#33 print_char_cursor#46
|
|
Identical Phi Values print_char_cursor#34 print_char_cursor#1
|
|
Identical Phi Values print_char_cursor#35 print_char_cursor#46
|
|
Identical Phi Values print_line_cursor#19 print_line_cursor#0
|
|
Identical Phi Values print_char_cursor#36 print_line_cursor#0
|
|
Identical Phi Values rem16u#17 rem16u#0
|
|
Identical Phi Values rem16u#18 rem16u#0
|
|
Identical Phi Values lin16u_gen::length#5 lin16u_gen::length#3
|
|
Identical Phi Values lin16u_gen::step#1 lin16u_gen::step#0
|
|
Identical Phi Values rem16u#19 rem16u#18
|
|
Identical Phi Values rem16u#10 rem16u#16
|
|
Identical Phi Values print_line_cursor#10 print_line_cursor#19
|
|
Identical Phi Values print_char_cursor#39 print_char_cursor#36
|
|
Successful SSA optimization Pass2IdenticalPhiElimination
|
|
Identical Phi Values print_char_cursor#82 print_char_cursor#10
|
|
Identical Phi Values print_char_cursor#83 print_char_cursor#1
|
|
Identical Phi Values memset::return#1 memset::str#0
|
|
Identical Phi Values print_char_cursor#86 print_line_cursor#0
|
|
Identical Phi Values print_line_cursor#26 print_line_cursor#0
|
|
Successful SSA optimization Pass2IdenticalPhiElimination
|
|
Simple Condition divr16u::$4 [8] if(divr16u::$2==0) goto divr16u::@2
|
|
Simple Condition divr16u::$9 [13] if(divr16u::rem#6<divr16u::divisor#6) goto divr16u::@3
|
|
Simple Condition divr16u::$11 [18] if(divr16u::i#1!=rangelast(0,$f)) goto divr16u::@1
|
|
Simple Condition print_str::$1 [26] if(0!=*print_str::str#10) goto print_str::@2
|
|
Simple Condition print_ln::$1 [36] if(print_line_cursor#0<print_char_cursor#10) goto print_ln::@1
|
|
Simple Condition memset::$1 [69] if(memset::num#0<=0) goto memset::@1
|
|
Simple Condition memset::$3 [76] if(memset::dst#2!=memset::end#0) goto memset::@4
|
|
Simple Condition main::$18 [124] if(main::i#10<$14) goto main::@2
|
|
Simple Condition lin16u_gen::$7 [194] if(lin16u_gen::i#2<lin16u_gen::length#3) goto lin16u_gen::@2
|
|
Successful SSA optimization Pass2ConditionalJumpSimplification
|
|
Constant divr16u::quotient#0 = 0
|
|
Constant divr16u::i#0 = 0
|
|
Constant memset::c#0 = ' '
|
|
Constant memset::num#0 = $3e8
|
|
Constant lin16u_gen::min#0 = $22d
|
|
Constant lin16u_gen::max#0 = $7461
|
|
Constant lin16u_gen::lintab#0 = main::lintab1
|
|
Constant lin16u_gen::length#0 = $14
|
|
Constant lin16u_gen::min#1 = $79cb
|
|
Constant lin16u_gen::max#1 = $f781
|
|
Constant lin16u_gen::lintab#1 = main::lintab2
|
|
Constant lin16u_gen::length#1 = $14
|
|
Constant lin16u_gen::min#2 = 0
|
|
Constant lin16u_gen::max#2 = $6488
|
|
Constant lin16u_gen::lintab#2 = main::lintab3
|
|
Constant lin16u_gen::length#2 = $14
|
|
Constant print_str::str#1 = main::str
|
|
Constant print_uint::w#0 = $22d
|
|
Constant print_str::str#2 = main::str1
|
|
Constant print_uint::w#1 = $79cb
|
|
Constant print_str::str#3 = main::str2
|
|
Constant print_uint::w#2 = 0
|
|
Constant main::i#0 = 0
|
|
Constant print_str::str#4 = main::str3
|
|
Constant print_str::str#5 = main::str4
|
|
Constant print_str::str#6 = main::str5
|
|
Constant print_str::str#7 = main::str6
|
|
Constant print_uint::w#6 = $7461
|
|
Constant print_str::str#8 = main::str7
|
|
Constant print_uint::w#7 = $f781
|
|
Constant print_str::str#9 = main::str8
|
|
Constant print_uint::w#8 = $6488
|
|
Constant divr16u::rem#3 = 0
|
|
Constant divr16u::dividend#2 = 0
|
|
Constant lin16u_gen::i#0 = 0
|
|
Constant rem16u#26 = 0
|
|
Constant print_screen#0 = (char *) 1024
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant memset::str#0 = (void *)print_screen#0
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant memset::return#0 = memset::str#0
|
|
Constant memset::$4 = (char *)memset::str#0
|
|
Constant memset::dst#0 = (char *)memset::str#0
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
if() condition always false - eliminating [69] if(memset::num#0<=0) goto memset::@1
|
|
Successful SSA optimization Pass2ConstantIfs
|
|
Consolidated constant strings into main::str
|
|
Consolidated constant strings into main::str1
|
|
Successful SSA optimization Pass2ConstantStringConsolidation
|
|
Resolved ranged next value [16] divr16u::i#1 = ++ divr16u::i#2 to ++
|
|
Resolved ranged comparison value [18] if(divr16u::i#1!=rangelast(0,$f)) goto divr16u::@1 to $10
|
|
Eliminating unused variable - keeping the phi block rem16u#24
|
|
Eliminating unused constant memset::return#0
|
|
Successful SSA optimization PassNEliminateUnusedVars
|
|
Eliminating unused constant rem16u#26
|
|
Successful SSA optimization PassNEliminateUnusedVars
|
|
Removing unused procedure __start
|
|
Removing unused procedure block __start
|
|
Removing unused procedure block __start::__init1
|
|
Removing unused procedure block __start::@1
|
|
Removing unused procedure block __start::@2
|
|
Removing unused procedure block __start::@return
|
|
Successful SSA optimization PassNEliminateEmptyStart
|
|
Adding number conversion cast (unumber) $10 in [13] if(divr16u::i#1!=$10) goto divr16u::@1
|
|
Successful SSA optimization PassNAddNumberTypeConversions
|
|
Simplifying constant integer cast $10
|
|
Successful SSA optimization PassNCastSimplification
|
|
Finalized unsigned number type (char) $10
|
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
|
Constant right-side identified [50] memset::end#0 = memset::$4 + memset::num#0
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant memset::end#0 = memset::$4+memset::num#0
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Rewriting multiplication to use shift [71] main::$27 = main::i#10 * SIZEOF_UNSIGNED_INT
|
|
Rewriting multiplication to use shift [75] main::$28 = main::i#10 * SIZEOF_UNSIGNED_INT
|
|
Rewriting multiplication to use shift [79] main::$29 = main::i#10 * SIZEOF_UNSIGNED_INT
|
|
Successful SSA optimization Pass2MultiplyToShiftRewriting
|
|
Inlining constant with var siblings divr16u::quotient#0
|
|
Inlining constant with var siblings divr16u::i#0
|
|
Inlining constant with var siblings divr16u::rem#3
|
|
Inlining constant with var siblings divr16u::dividend#2
|
|
Inlining constant with var siblings print_str::str#1
|
|
Inlining constant with var siblings print_str::str#2
|
|
Inlining constant with var siblings print_str::str#3
|
|
Inlining constant with var siblings print_str::str#4
|
|
Inlining constant with var siblings print_str::str#5
|
|
Inlining constant with var siblings print_str::str#6
|
|
Inlining constant with var siblings print_str::str#7
|
|
Inlining constant with var siblings print_str::str#8
|
|
Inlining constant with var siblings print_str::str#9
|
|
Inlining constant with var siblings print_uint::w#0
|
|
Inlining constant with var siblings print_uint::w#1
|
|
Inlining constant with var siblings print_uint::w#2
|
|
Inlining constant with var siblings print_uint::w#6
|
|
Inlining constant with var siblings print_uint::w#7
|
|
Inlining constant with var siblings print_uint::w#8
|
|
Inlining constant with var siblings memset::dst#0
|
|
Inlining constant with var siblings main::i#0
|
|
Inlining constant with var siblings lin16u_gen::min#0
|
|
Inlining constant with var siblings lin16u_gen::max#0
|
|
Inlining constant with var siblings lin16u_gen::lintab#0
|
|
Inlining constant with var siblings lin16u_gen::length#0
|
|
Inlining constant with var siblings lin16u_gen::min#1
|
|
Inlining constant with var siblings lin16u_gen::max#1
|
|
Inlining constant with var siblings lin16u_gen::lintab#1
|
|
Inlining constant with var siblings lin16u_gen::length#1
|
|
Inlining constant with var siblings lin16u_gen::min#2
|
|
Inlining constant with var siblings lin16u_gen::max#2
|
|
Inlining constant with var siblings lin16u_gen::lintab#2
|
|
Inlining constant with var siblings lin16u_gen::length#2
|
|
Inlining constant with var siblings lin16u_gen::i#0
|
|
Constant inlined main::str4 = main::str1
|
|
Constant inlined main::str5 = main::str1
|
|
Constant inlined divr16u::rem#3 = 0
|
|
Constant inlined main::str6 = main::str
|
|
Constant inlined main::str7 = main::str1
|
|
Constant inlined divr16u::i#0 = 0
|
|
Constant inlined main::str2 = main::str1
|
|
Constant inlined print_uint::w#8 = $6488
|
|
Constant inlined main::str3 = main::str1
|
|
Constant inlined lin16u_gen::max#0 = $7461
|
|
Constant inlined lin16u_gen::max#2 = $6488
|
|
Constant inlined lin16u_gen::max#1 = $f781
|
|
Constant inlined divr16u::quotient#0 = 0
|
|
Constant inlined memset::$4 = (char *)memset::str#0
|
|
Constant inlined main::i#0 = 0
|
|
Constant inlined lin16u_gen::min#0 = $22d
|
|
Constant inlined divr16u::dividend#2 = 0
|
|
Constant inlined lin16u_gen::length#2 = $14
|
|
Constant inlined print_str::str#9 = main::str1
|
|
Constant inlined lin16u_gen::length#1 = $14
|
|
Constant inlined lin16u_gen::length#0 = $14
|
|
Constant inlined print_str::str#4 = main::str1
|
|
Constant inlined print_uint::w#6 = $7461
|
|
Constant inlined print_str::str#3 = main::str1
|
|
Constant inlined print_uint::w#7 = $f781
|
|
Constant inlined print_str::str#2 = main::str1
|
|
Constant inlined memset::dst#0 = (char *)memset::str#0
|
|
Constant inlined print_str::str#1 = main::str
|
|
Constant inlined print_str::str#8 = main::str1
|
|
Constant inlined main::str8 = main::str1
|
|
Constant inlined lin16u_gen::lintab#2 = main::lintab3
|
|
Constant inlined print_uint::w#2 = 0
|
|
Constant inlined lin16u_gen::min#1 = $79cb
|
|
Constant inlined lin16u_gen::i#0 = 0
|
|
Constant inlined print_str::str#7 = main::str
|
|
Constant inlined lin16u_gen::lintab#1 = main::lintab2
|
|
Constant inlined lin16u_gen::min#2 = 0
|
|
Constant inlined print_str::str#6 = main::str1
|
|
Constant inlined lin16u_gen::lintab#0 = main::lintab1
|
|
Constant inlined print_uint::w#0 = $22d
|
|
Constant inlined print_str::str#5 = main::str1
|
|
Constant inlined print_uint::w#1 = $79cb
|
|
Successful SSA optimization Pass2ConstantInlining
|
|
Identical Phi Values lin16u_gen::length#3 $14
|
|
Successful SSA optimization Pass2IdenticalPhiElimination
|
|
Identified duplicate assignment right side [75] main::$28 = main::i#10 << 1
|
|
Identified duplicate assignment right side [79] main::$29 = main::i#10 << 1
|
|
Successful SSA optimization Pass2DuplicateRValueIdentification
|
|
Constant right-side identified [94] divr16u::divisor#0 = $14 - 1
|
|
Constant right-side identified [99] divr16u::divisor#1 = $14 - 1
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant divr16u::divisor#0 = $14-1
|
|
Constant divr16u::divisor#1 = $14-1
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Inlining constant with var siblings divr16u::divisor#0
|
|
Inlining constant with var siblings divr16u::divisor#1
|
|
Constant inlined divr16u::divisor#1 = $14-1
|
|
Constant inlined divr16u::divisor#0 = $14-1
|
|
Successful SSA optimization Pass2ConstantInlining
|
|
Alias main::$28 = main::$27 main::$29
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Identical Phi Values divr16u::divisor#6 $14-1
|
|
Successful SSA optimization Pass2IdenticalPhiElimination
|
|
Finalized unsigned number type (char) 2
|
|
Finalized unsigned number type (char) 8
|
|
Finalized unsigned number type (char) $a
|
|
Finalized unsigned number type (char) $10
|
|
Finalized unsigned number type (char) $14
|
|
Finalized unsigned number type (char) $14
|
|
Finalized unsigned number type (char) $14
|
|
Finalized unsigned number type (char) $14
|
|
Finalized unsigned number type (char) $14
|
|
Finalized unsigned number type (char) $14
|
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
|
Added new block during phi lifting divr16u::@7(between divr16u::@3 and divr16u::@1)
|
|
Added new block during phi lifting divr16u::@8(between divr16u::@1 and divr16u::@2)
|
|
Added new block during phi lifting divr16u::@9(between divr16u::@2 and divr16u::@3)
|
|
Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1)
|
|
Adding NOP phi() at start of main
|
|
Adding NOP phi() at start of main::@4
|
|
Adding NOP phi() at start of main::@5
|
|
Adding NOP phi() at start of main::@6
|
|
Adding NOP phi() at start of main::@7
|
|
Adding NOP phi() at start of main::@8
|
|
Adding NOP phi() at start of main::@10
|
|
Adding NOP phi() at start of main::@12
|
|
Adding NOP phi() at start of main::@13
|
|
Adding NOP phi() at start of main::@14
|
|
Adding NOP phi() at start of main::@23
|
|
Adding NOP phi() at start of main::@25
|
|
Adding NOP phi() at start of main::@27
|
|
Adding NOP phi() at start of main::@29
|
|
Adding NOP phi() at start of print_cls
|
|
Adding NOP phi() at start of print_cls::@1
|
|
Adding NOP phi() at start of print_uint::@2
|
|
Adding NOP phi() at start of print_ln::@2
|
|
Adding NOP phi() at start of print_uchar::@2
|
|
Adding NOP phi() at start of memset
|
|
Adding NOP phi() at start of memset::@2
|
|
Adding NOP phi() at start of memset::@1
|
|
CALL GRAPH
|
|
Calls in [main] to lin16u_gen:1 lin16u_gen:3 lin16u_gen:5 print_cls:7 print_str:9 print_uint:11 print_str:13 print_uint:15 print_str:17 print_uint:19 print_ln:21 print_str:26 print_uint:28 print_str:30 print_uint:32 print_str:34 print_uint:36 print_ln:38 print_uchar:44 print_str:46 print_uint:50 print_str:52 print_uint:55 print_str:57 print_uint:60 print_ln:62
|
|
Calls in [lin16u_gen] to divr16u:69 divr16u:74
|
|
Calls in [print_cls] to memset:93
|
|
Calls in [print_str] to print_char:105
|
|
Calls in [print_uint] to print_uchar:113 print_uchar:117
|
|
Calls in [print_uchar] to print_char:133 print_char:138
|
|
|
|
Created 28 initial phi equivalence classes
|
|
Coalesced [12] print_char_cursor#101 = print_char_cursor#10
|
|
Coalesced (already) [16] print_char_cursor#94 = print_char_cursor#10
|
|
Not coalescing [25] print_char_cursor#100 = print_line_cursor#0
|
|
Coalesced (already) [29] print_char_cursor#98 = print_char_cursor#10
|
|
Coalesced (already) [33] print_char_cursor#99 = print_char_cursor#10
|
|
Coalesced [37] print_line_cursor#52 = print_line_cursor#0
|
|
Coalesced [42] print_uchar::b#5 = print_uchar::b#2
|
|
Not coalescing [43] print_char_cursor#104 = print_line_cursor#0
|
|
Coalesced (already) [45] print_char_cursor#95 = print_char_cursor#10
|
|
Coalesced [49] print_uint::w#11 = print_uint::w#3
|
|
Coalesced (already) [51] print_char_cursor#96 = print_char_cursor#10
|
|
Coalesced [54] print_uint::w#12 = print_uint::w#4
|
|
Coalesced (already) [56] print_char_cursor#97 = print_char_cursor#10
|
|
Coalesced [59] print_uint::w#13 = print_uint::w#5
|
|
Coalesced (already) [61] print_line_cursor#51 = print_line_cursor#0
|
|
Coalesced [64] main::i#12 = main::i#1
|
|
Coalesced [68] divr16u::dividend#9 = divr16u::dividend#1
|
|
Coalesced [73] divr16u::rem#12 = divr16u::rem#4
|
|
Coalesced [79] lin16u_gen::val#5 = lin16u_gen::val#0
|
|
Coalesced [80] lin16u_gen::lintab#10 = lin16u_gen::lintab#6
|
|
Coalesced [89] lin16u_gen::i#4 = lin16u_gen::i#1
|
|
Coalesced [90] lin16u_gen::val#4 = lin16u_gen::val#1
|
|
Coalesced [91] lin16u_gen::lintab#9 = lin16u_gen::lintab#3
|
|
Coalesced [97] print_str::str#14 = print_str::str#13
|
|
Coalesced [98] print_char_cursor#102 = print_char_cursor#89
|
|
Coalesced [103] print_char::ch#4 = print_char::ch#0
|
|
Coalesced [104] print_char_cursor#107 = print_char_cursor#1
|
|
Coalesced [107] print_str::str#15 = print_str::str#0
|
|
Coalesced (already) [108] print_char_cursor#103 = print_char_cursor#10
|
|
Coalesced [111] print_uchar::b#6 = print_uchar::b#0
|
|
Coalesced [112] print_char_cursor#105 = print_char_cursor#1
|
|
Coalesced [115] print_uchar::b#7 = print_uchar::b#1
|
|
Coalesced (already) [116] print_char_cursor#106 = print_char_cursor#10
|
|
Coalesced [121] print_line_cursor#53 = print_line_cursor#23
|
|
Coalesced (already) [127] print_line_cursor#54 = print_line_cursor#0
|
|
Coalesced [131] print_char::ch#5 = print_char::ch#1
|
|
Coalesced (already) [132] print_char_cursor#108 = print_char_cursor#84
|
|
Coalesced [136] print_char::ch#6 = print_char::ch#2
|
|
Coalesced (already) [137] print_char_cursor#109 = print_char_cursor#10
|
|
Coalesced [142] divr16u::rem#13 = divr16u::rem#10
|
|
Coalesced [143] divr16u::dividend#10 = divr16u::dividend#5
|
|
Coalesced [150] divr16u::rem#16 = divr16u::rem#1
|
|
Coalesced [157] divr16u::rem#18 = divr16u::rem#2
|
|
Coalesced [158] divr16u::return#8 = divr16u::quotient#2
|
|
Coalesced [164] divr16u::rem#14 = divr16u::rem#11
|
|
Coalesced [165] divr16u::dividend#11 = divr16u::dividend#0
|
|
Coalesced [166] divr16u::quotient#9 = divr16u::return#0
|
|
Coalesced [167] divr16u::i#7 = divr16u::i#1
|
|
Coalesced [168] divr16u::rem#17 = divr16u::rem#6
|
|
Coalesced [169] divr16u::return#7 = divr16u::quotient#1
|
|
Coalesced [170] divr16u::rem#15 = divr16u::rem#0
|
|
Coalesced [179] memset::dst#4 = memset::dst#1
|
|
Coalesced down to 17 phi equivalence classes
|
|
Culled Empty Block label main::@14
|
|
Culled Empty Block label main::@29
|
|
Culled Empty Block label print_cls::@1
|
|
Culled Empty Block label print_uint::@2
|
|
Culled Empty Block label print_ln::@2
|
|
Culled Empty Block label print_ln::@3
|
|
Culled Empty Block label print_uchar::@2
|
|
Culled Empty Block label divr16u::@7
|
|
Culled Empty Block label divr16u::@9
|
|
Culled Empty Block label divr16u::@8
|
|
Culled Empty Block label memset::@2
|
|
Culled Empty Block label memset::@1
|
|
Renumbering block memset::@3 to memset::@1
|
|
Renumbering block memset::@4 to memset::@2
|
|
Renumbering block main::@15 to main::@14
|
|
Renumbering block main::@16 to main::@15
|
|
Renumbering block main::@17 to main::@16
|
|
Renumbering block main::@18 to main::@17
|
|
Renumbering block main::@19 to main::@18
|
|
Renumbering block main::@20 to main::@19
|
|
Renumbering block main::@21 to main::@20
|
|
Renumbering block main::@22 to main::@21
|
|
Renumbering block main::@23 to main::@22
|
|
Renumbering block main::@24 to main::@23
|
|
Renumbering block main::@25 to main::@24
|
|
Renumbering block main::@26 to main::@25
|
|
Renumbering block main::@27 to main::@26
|
|
Renumbering block main::@28 to main::@27
|
|
Adding NOP phi() at start of main
|
|
Adding NOP phi() at start of main::@4
|
|
Adding NOP phi() at start of main::@5
|
|
Adding NOP phi() at start of main::@6
|
|
Adding NOP phi() at start of main::@7
|
|
Adding NOP phi() at start of main::@8
|
|
Adding NOP phi() at start of main::@9
|
|
Adding NOP phi() at start of main::@10
|
|
Adding NOP phi() at start of main::@11
|
|
Adding NOP phi() at start of main::@12
|
|
Adding NOP phi() at start of main::@13
|
|
Adding NOP phi() at start of main::@22
|
|
Adding NOP phi() at start of main::@23
|
|
Adding NOP phi() at start of main::@24
|
|
Adding NOP phi() at start of main::@25
|
|
Adding NOP phi() at start of main::@26
|
|
Adding NOP phi() at start of main::@27
|
|
Adding NOP phi() at start of main::@14
|
|
Adding NOP phi() at start of main::@16
|
|
Adding NOP phi() at start of main::@18
|
|
Adding NOP phi() at start of main::@20
|
|
Adding NOP phi() at start of print_cls
|
|
Adding NOP phi() at start of memset
|
|
|
|
FINAL CONTROL FLOW GRAPH
|
|
|
|
void main()
|
|
main: scope:[main] from
|
|
[0] phi()
|
|
[1] call lin16u_gen
|
|
to:main::@4
|
|
main::@4: scope:[main] from main
|
|
[2] phi()
|
|
[3] call lin16u_gen
|
|
to:main::@5
|
|
main::@5: scope:[main] from main::@4
|
|
[4] phi()
|
|
[5] call lin16u_gen
|
|
to:main::@6
|
|
main::@6: scope:[main] from main::@5
|
|
[6] phi()
|
|
[7] call print_cls
|
|
to:main::@7
|
|
main::@7: scope:[main] from main::@6
|
|
[8] phi()
|
|
[9] call print_str
|
|
to:main::@8
|
|
main::@8: scope:[main] from main::@7
|
|
[10] phi()
|
|
[11] call print_uint
|
|
to:main::@9
|
|
main::@9: scope:[main] from main::@8
|
|
[12] phi()
|
|
[13] call print_str
|
|
to:main::@10
|
|
main::@10: scope:[main] from main::@9
|
|
[14] phi()
|
|
[15] call print_uint
|
|
to:main::@11
|
|
main::@11: scope:[main] from main::@10
|
|
[16] phi()
|
|
[17] call print_str
|
|
to:main::@12
|
|
main::@12: scope:[main] from main::@11
|
|
[18] phi()
|
|
[19] call print_uint
|
|
to:main::@13
|
|
main::@13: scope:[main] from main::@12
|
|
[20] phi()
|
|
[21] call print_ln
|
|
to:main::@1
|
|
main::@1: scope:[main] from main::@13 main::@21
|
|
[22] main::i#10 = phi( main::@13/0, main::@21/main::i#1 )
|
|
[23] if(main::i#10<$14) goto main::@2
|
|
to:main::@3
|
|
main::@3: scope:[main] from main::@1
|
|
[24] print_char_cursor#100 = print_line_cursor#0
|
|
[25] call print_str
|
|
to:main::@22
|
|
main::@22: scope:[main] from main::@3
|
|
[26] phi()
|
|
[27] call print_uint
|
|
to:main::@23
|
|
main::@23: scope:[main] from main::@22
|
|
[28] phi()
|
|
[29] call print_str
|
|
to:main::@24
|
|
main::@24: scope:[main] from main::@23
|
|
[30] phi()
|
|
[31] call print_uint
|
|
to:main::@25
|
|
main::@25: scope:[main] from main::@24
|
|
[32] phi()
|
|
[33] call print_str
|
|
to:main::@26
|
|
main::@26: scope:[main] from main::@25
|
|
[34] phi()
|
|
[35] call print_uint
|
|
to:main::@27
|
|
main::@27: scope:[main] from main::@26
|
|
[36] phi()
|
|
[37] call print_ln
|
|
to:main::@return
|
|
main::@return: scope:[main] from main::@27
|
|
[38] return
|
|
to:@return
|
|
main::@2: scope:[main] from main::@1
|
|
[39] print_uchar::b#2 = main::i#10
|
|
[40] print_char_cursor#104 = print_line_cursor#0
|
|
[41] call print_uchar
|
|
to:main::@14
|
|
main::@14: scope:[main] from main::@2
|
|
[42] phi()
|
|
[43] call print_str
|
|
to:main::@15
|
|
main::@15: scope:[main] from main::@14
|
|
[44] main::$28 = main::i#10 << 1
|
|
[45] print_uint::w#3 = main::lintab1[main::$28]
|
|
[46] call print_uint
|
|
to:main::@16
|
|
main::@16: scope:[main] from main::@15
|
|
[47] phi()
|
|
[48] call print_str
|
|
to:main::@17
|
|
main::@17: scope:[main] from main::@16
|
|
[49] print_uint::w#4 = main::lintab2[main::$28]
|
|
[50] call print_uint
|
|
to:main::@18
|
|
main::@18: scope:[main] from main::@17
|
|
[51] phi()
|
|
[52] call print_str
|
|
to:main::@19
|
|
main::@19: scope:[main] from main::@18
|
|
[53] print_uint::w#5 = main::lintab3[main::$28]
|
|
[54] call print_uint
|
|
to:main::@20
|
|
main::@20: scope:[main] from main::@19
|
|
[55] phi()
|
|
[56] call print_ln
|
|
to:main::@21
|
|
main::@21: scope:[main] from main::@20
|
|
[57] main::i#1 = ++ main::i#10
|
|
to:main::@1
|
|
|
|
void lin16u_gen(unsigned int min , unsigned int max , unsigned int *lintab , unsigned int length)
|
|
lin16u_gen: scope:[lin16u_gen] from main main::@4 main::@5
|
|
[58] lin16u_gen::lintab#6 = phi( main/main::lintab1, main::@4/main::lintab2, main::@5/main::lintab3 )
|
|
[58] lin16u_gen::min#3 = phi( main/$22d, main::@4/$79cb, main::@5/0 )
|
|
[58] lin16u_gen::max#3 = phi( main/$7461, main::@4/$f781, main::@5/$6488 )
|
|
[59] lin16u_gen::ampl#0 = lin16u_gen::max#3 - lin16u_gen::min#3
|
|
[60] divr16u::dividend#1 = lin16u_gen::ampl#0
|
|
[61] call divr16u
|
|
[62] divr16u::return#2 = divr16u::return#0
|
|
to:lin16u_gen::@3
|
|
lin16u_gen::@3: scope:[lin16u_gen] from lin16u_gen
|
|
[63] lin16u_gen::stepi#0 = divr16u::return#2
|
|
[64] divr16u::rem#4 = rem16u#0
|
|
[65] call divr16u
|
|
[66] divr16u::return#3 = divr16u::return#0
|
|
to:lin16u_gen::@4
|
|
lin16u_gen::@4: scope:[lin16u_gen] from lin16u_gen::@3
|
|
[67] lin16u_gen::stepf#0 = divr16u::return#3
|
|
[68] lin16u_gen::step#0 = lin16u_gen::stepi#0 dw= lin16u_gen::stepf#0
|
|
[69] lin16u_gen::val#0 = lin16u_gen::min#3 dw= 0
|
|
to:lin16u_gen::@1
|
|
lin16u_gen::@1: scope:[lin16u_gen] from lin16u_gen::@2 lin16u_gen::@4
|
|
[70] lin16u_gen::lintab#4 = phi( lin16u_gen::@2/lin16u_gen::lintab#3, lin16u_gen::@4/lin16u_gen::lintab#6 )
|
|
[70] lin16u_gen::val#2 = phi( lin16u_gen::@2/lin16u_gen::val#1, lin16u_gen::@4/lin16u_gen::val#0 )
|
|
[70] lin16u_gen::i#2 = phi( lin16u_gen::@2/lin16u_gen::i#1, lin16u_gen::@4/0 )
|
|
[71] if(lin16u_gen::i#2<$14) goto lin16u_gen::@2
|
|
to:lin16u_gen::@return
|
|
lin16u_gen::@return: scope:[lin16u_gen] from lin16u_gen::@1
|
|
[72] return
|
|
to:@return
|
|
lin16u_gen::@2: scope:[lin16u_gen] from lin16u_gen::@1
|
|
[73] lin16u_gen::$8 = word1 lin16u_gen::val#2
|
|
[74] *lin16u_gen::lintab#4 = lin16u_gen::$8
|
|
[75] lin16u_gen::val#1 = lin16u_gen::val#2 + lin16u_gen::step#0
|
|
[76] lin16u_gen::lintab#3 = lin16u_gen::lintab#4 + SIZEOF_UNSIGNED_INT
|
|
[77] lin16u_gen::i#1 = ++ lin16u_gen::i#2
|
|
to:lin16u_gen::@1
|
|
|
|
void print_cls()
|
|
print_cls: scope:[print_cls] from main::@6
|
|
[78] phi()
|
|
[79] call memset
|
|
to:print_cls::@return
|
|
print_cls::@return: scope:[print_cls] from print_cls
|
|
[80] return
|
|
to:@return
|
|
|
|
void print_str(char *str)
|
|
print_str: scope:[print_str] from main::@11 main::@14 main::@16 main::@18 main::@23 main::@25 main::@3 main::@7 main::@9
|
|
[81] print_char_cursor#89 = phi( main::@11/print_char_cursor#10, main::@14/print_char_cursor#10, main::@16/print_char_cursor#10, main::@18/print_char_cursor#10, main::@23/print_char_cursor#10, main::@25/print_char_cursor#10, main::@3/print_char_cursor#100, main::@7/print_screen#0, main::@9/print_char_cursor#10 )
|
|
[81] print_str::str#13 = phi( main::@11/main::str1, main::@14/main::str1, main::@16/main::str1, main::@18/main::str1, main::@23/main::str1, main::@25/main::str1, main::@3/main::str, main::@7/main::str, main::@9/main::str1 )
|
|
to:print_str::@1
|
|
print_str::@1: scope:[print_str] from print_str print_str::@3
|
|
[82] print_char_cursor#1 = phi( print_str/print_char_cursor#89, print_str::@3/print_char_cursor#10 )
|
|
[82] print_str::str#10 = phi( print_str/print_str::str#13, print_str::@3/print_str::str#0 )
|
|
[83] if(0!=*print_str::str#10) goto print_str::@2
|
|
to:print_str::@return
|
|
print_str::@return: scope:[print_str] from print_str::@1
|
|
[84] return
|
|
to:@return
|
|
print_str::@2: scope:[print_str] from print_str::@1
|
|
[85] print_char::ch#0 = *print_str::str#10
|
|
[86] call print_char
|
|
to:print_str::@3
|
|
print_str::@3: scope:[print_str] from print_str::@2
|
|
[87] print_str::str#0 = ++ print_str::str#10
|
|
to:print_str::@1
|
|
|
|
void print_uint(unsigned int w)
|
|
print_uint: scope:[print_uint] from main::@10 main::@12 main::@15 main::@17 main::@19 main::@22 main::@24 main::@26 main::@8
|
|
[88] print_uint::w#10 = phi( main::@10/$79cb, main::@12/0, main::@15/print_uint::w#3, main::@17/print_uint::w#4, main::@19/print_uint::w#5, main::@22/$7461, main::@24/$f781, main::@26/$6488, main::@8/$22d )
|
|
[89] print_uchar::b#0 = byte1 print_uint::w#10
|
|
[90] call print_uchar
|
|
to:print_uint::@1
|
|
print_uint::@1: scope:[print_uint] from print_uint
|
|
[91] print_uchar::b#1 = byte0 print_uint::w#10
|
|
[92] call print_uchar
|
|
to:print_uint::@return
|
|
print_uint::@return: scope:[print_uint] from print_uint::@1
|
|
[93] return
|
|
to:@return
|
|
|
|
void print_ln()
|
|
print_ln: scope:[print_ln] from main::@13 main::@20 main::@27
|
|
[94] print_line_cursor#23 = phi( main::@13/print_screen#0, main::@20/print_line_cursor#0, main::@27/print_line_cursor#0 )
|
|
to:print_ln::@1
|
|
print_ln::@1: scope:[print_ln] from print_ln print_ln::@1
|
|
[95] print_line_cursor#12 = phi( print_ln/print_line_cursor#23, print_ln::@1/print_line_cursor#0 )
|
|
[96] print_line_cursor#0 = print_line_cursor#12 + $28
|
|
[97] if(print_line_cursor#0<print_char_cursor#10) goto print_ln::@1
|
|
to:print_ln::@return
|
|
print_ln::@return: scope:[print_ln] from print_ln::@1
|
|
[98] return
|
|
to:@return
|
|
|
|
void print_uchar(char b)
|
|
print_uchar: scope:[print_uchar] from main::@2 print_uint print_uint::@1
|
|
[99] print_char_cursor#84 = phi( main::@2/print_char_cursor#104, print_uint/print_char_cursor#1, print_uint::@1/print_char_cursor#10 )
|
|
[99] print_uchar::b#3 = phi( main::@2/print_uchar::b#2, print_uint/print_uchar::b#0, print_uint::@1/print_uchar::b#1 )
|
|
[100] print_uchar::$0 = print_uchar::b#3 >> 4
|
|
[101] print_char::ch#1 = print_hextab[print_uchar::$0]
|
|
[102] call print_char
|
|
to:print_uchar::@1
|
|
print_uchar::@1: scope:[print_uchar] from print_uchar
|
|
[103] print_uchar::$2 = print_uchar::b#3 & $f
|
|
[104] print_char::ch#2 = print_hextab[print_uchar::$2]
|
|
[105] call print_char
|
|
to:print_uchar::@return
|
|
print_uchar::@return: scope:[print_uchar] from print_uchar::@1
|
|
[106] return
|
|
to:@return
|
|
|
|
unsigned int divr16u(unsigned int dividend , unsigned int divisor , unsigned int rem)
|
|
divr16u: scope:[divr16u] from lin16u_gen lin16u_gen::@3
|
|
[107] divr16u::dividend#5 = phi( lin16u_gen/divr16u::dividend#1, lin16u_gen::@3/0 )
|
|
[107] divr16u::rem#10 = phi( lin16u_gen/0, lin16u_gen::@3/divr16u::rem#4 )
|
|
to:divr16u::@1
|
|
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
|
|
[108] divr16u::i#2 = phi( divr16u/0, divr16u::@3/divr16u::i#1 )
|
|
[108] divr16u::quotient#3 = phi( divr16u/0, divr16u::@3/divr16u::return#0 )
|
|
[108] divr16u::dividend#3 = phi( divr16u/divr16u::dividend#5, divr16u::@3/divr16u::dividend#0 )
|
|
[108] divr16u::rem#5 = phi( divr16u/divr16u::rem#10, divr16u::@3/divr16u::rem#11 )
|
|
[109] divr16u::rem#0 = divr16u::rem#5 << 1
|
|
[110] divr16u::$1 = byte1 divr16u::dividend#3
|
|
[111] divr16u::$2 = divr16u::$1 & $80
|
|
[112] if(divr16u::$2==0) goto divr16u::@2
|
|
to:divr16u::@4
|
|
divr16u::@4: scope:[divr16u] from divr16u::@1
|
|
[113] divr16u::rem#1 = divr16u::rem#0 | 1
|
|
to:divr16u::@2
|
|
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
|
|
[114] divr16u::rem#6 = phi( divr16u::@1/divr16u::rem#0, divr16u::@4/divr16u::rem#1 )
|
|
[115] divr16u::dividend#0 = divr16u::dividend#3 << 1
|
|
[116] divr16u::quotient#1 = divr16u::quotient#3 << 1
|
|
[117] if(divr16u::rem#6<$14-1) goto divr16u::@3
|
|
to:divr16u::@5
|
|
divr16u::@5: scope:[divr16u] from divr16u::@2
|
|
[118] divr16u::quotient#2 = ++ divr16u::quotient#1
|
|
[119] divr16u::rem#2 = divr16u::rem#6 - $14-1
|
|
to:divr16u::@3
|
|
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
|
|
[120] divr16u::return#0 = phi( divr16u::@2/divr16u::quotient#1, divr16u::@5/divr16u::quotient#2 )
|
|
[120] divr16u::rem#11 = phi( divr16u::@2/divr16u::rem#6, divr16u::@5/divr16u::rem#2 )
|
|
[121] divr16u::i#1 = ++ divr16u::i#2
|
|
[122] if(divr16u::i#1!=$10) goto divr16u::@1
|
|
to:divr16u::@6
|
|
divr16u::@6: scope:[divr16u] from divr16u::@3
|
|
[123] rem16u#0 = divr16u::rem#11
|
|
to:divr16u::@return
|
|
divr16u::@return: scope:[divr16u] from divr16u::@6
|
|
[124] return
|
|
to:@return
|
|
|
|
void * memset(void *str , char c , unsigned int num)
|
|
memset: scope:[memset] from print_cls
|
|
[125] phi()
|
|
to:memset::@1
|
|
memset::@1: scope:[memset] from memset memset::@2
|
|
[126] memset::dst#2 = phi( memset/(char *)memset::str#0, memset::@2/memset::dst#1 )
|
|
[127] if(memset::dst#2!=memset::end#0) goto memset::@2
|
|
to:memset::@return
|
|
memset::@return: scope:[memset] from memset::@1
|
|
[128] return
|
|
to:@return
|
|
memset::@2: scope:[memset] from memset::@1
|
|
[129] *memset::dst#2 = memset::c#0
|
|
[130] memset::dst#1 = ++ memset::dst#2
|
|
to:memset::@1
|
|
|
|
void print_char(char ch)
|
|
print_char: scope:[print_char] from print_str::@2 print_uchar print_uchar::@1
|
|
[131] print_char_cursor#51 = phi( print_str::@2/print_char_cursor#1, print_uchar/print_char_cursor#84, print_uchar::@1/print_char_cursor#10 )
|
|
[131] print_char::ch#3 = phi( print_str::@2/print_char::ch#0, print_uchar/print_char::ch#1, print_uchar::@1/print_char::ch#2 )
|
|
[132] *print_char_cursor#51 = print_char::ch#3
|
|
[133] print_char_cursor#10 = ++ print_char_cursor#51
|
|
to:print_char::@return
|
|
print_char::@return: scope:[print_char] from print_char
|
|
[134] return
|
|
to:@return
|
|
|
|
|
|
VARIABLE REGISTER WEIGHTS
|
|
unsigned int divr16u(unsigned int dividend , unsigned int divisor , unsigned int rem)
|
|
char divr16u::$1 // 2002.0
|
|
char divr16u::$2 // 2002.0
|
|
unsigned int divr16u::dividend
|
|
unsigned int divr16u::dividend#0 // 250.25
|
|
unsigned int divr16u::dividend#1 // 22.0
|
|
unsigned int divr16u::dividend#3 // 443.42857142857144
|
|
unsigned int divr16u::dividend#5 // 112.0
|
|
unsigned int divr16u::divisor
|
|
char divr16u::i
|
|
char divr16u::i#1 // 1501.5
|
|
char divr16u::i#2 // 154.0
|
|
unsigned int divr16u::quotient
|
|
unsigned int divr16u::quotient#1 // 1501.5
|
|
unsigned int divr16u::quotient#2 // 1001.0
|
|
unsigned int divr16u::quotient#3 // 250.25
|
|
unsigned int divr16u::rem
|
|
unsigned int divr16u::rem#0 // 750.75
|
|
unsigned int divr16u::rem#1 // 2002.0
|
|
unsigned int divr16u::rem#10 // 112.0
|
|
unsigned int divr16u::rem#11 // 1034.6666666666667
|
|
unsigned int divr16u::rem#2 // 2002.0
|
|
unsigned int divr16u::rem#4 // 22.0
|
|
unsigned int divr16u::rem#5 // 2103.0
|
|
unsigned int divr16u::rem#6 // 1001.0
|
|
unsigned int divr16u::return
|
|
unsigned int divr16u::return#0 // 432.1428571428571
|
|
unsigned int divr16u::return#2 // 22.0
|
|
unsigned int divr16u::return#3 // 22.0
|
|
void lin16u_gen(unsigned int min , unsigned int max , unsigned int *lintab , unsigned int length)
|
|
unsigned int lin16u_gen::$8 // 202.0
|
|
unsigned int lin16u_gen::ampl
|
|
unsigned int lin16u_gen::ampl#0 // 22.0
|
|
unsigned int lin16u_gen::i
|
|
unsigned int lin16u_gen::i#1 // 202.0
|
|
unsigned int lin16u_gen::i#2 // 50.5
|
|
unsigned int lin16u_gen::length
|
|
unsigned int *lin16u_gen::lintab
|
|
unsigned int *lin16u_gen::lintab#3 // 101.0
|
|
unsigned int *lin16u_gen::lintab#4 // 62.8
|
|
unsigned int *lin16u_gen::lintab#6 // 0.9166666666666666
|
|
unsigned int lin16u_gen::max
|
|
unsigned int lin16u_gen::max#3 // 11.0
|
|
unsigned int lin16u_gen::min
|
|
unsigned int lin16u_gen::min#3 // 2.0
|
|
unsigned long lin16u_gen::step
|
|
unsigned long lin16u_gen::step#0 // 12.444444444444443
|
|
unsigned int lin16u_gen::stepf
|
|
unsigned int lin16u_gen::stepf#0 // 22.0
|
|
unsigned int lin16u_gen::stepi
|
|
unsigned int lin16u_gen::stepi#0 // 4.4
|
|
unsigned long lin16u_gen::val
|
|
unsigned long lin16u_gen::val#0 // 22.0
|
|
unsigned long lin16u_gen::val#1 // 67.33333333333333
|
|
unsigned long lin16u_gen::val#2 // 78.5
|
|
void main()
|
|
char main::$28 // 4.888888888888889
|
|
char main::i
|
|
char main::i#1 // 22.0
|
|
char main::i#10 // 2.75
|
|
void * memset(void *str , char c , unsigned int num)
|
|
char memset::c
|
|
char *memset::dst
|
|
char *memset::dst#1 // 2002.0
|
|
char *memset::dst#2 // 1334.6666666666667
|
|
char *memset::end
|
|
unsigned int memset::num
|
|
void *memset::return
|
|
void *memset::str
|
|
void print_char(char ch)
|
|
char print_char::ch
|
|
char print_char::ch#0 // 20002.0
|
|
char print_char::ch#1 // 2002.0
|
|
char print_char::ch#2 // 2002.0
|
|
char print_char::ch#3 // 112004.0
|
|
char *print_char_cursor
|
|
char *print_char_cursor#1 // 808.1600000000001
|
|
char *print_char_cursor#10 // 3274.216216216216
|
|
char *print_char_cursor#100 // 4.0
|
|
char *print_char_cursor#104 // 22.0
|
|
char *print_char_cursor#51 // 106002.5
|
|
char *print_char_cursor#84 // 404.6666666666667
|
|
char *print_char_cursor#89 // 144.0
|
|
void print_cls()
|
|
char *print_line_cursor
|
|
char *print_line_cursor#0 // 790.2368421052631
|
|
char *print_line_cursor#12 // 20103.0
|
|
char *print_line_cursor#23 // 114.0
|
|
void print_ln()
|
|
char *print_screen
|
|
void print_str(char *str)
|
|
char *print_str::str
|
|
char *print_str::str#0 // 20002.0
|
|
char *print_str::str#10 // 10026.25
|
|
char *print_str::str#13 // 101.0
|
|
void print_uchar(char b)
|
|
char print_uchar::$0 // 2002.0
|
|
char print_uchar::$2 // 2002.0
|
|
char print_uchar::b
|
|
char print_uchar::b#0 // 202.0
|
|
char print_uchar::b#1 // 202.0
|
|
char print_uchar::b#2 // 11.0
|
|
char print_uchar::b#3 // 553.75
|
|
void print_uint(unsigned int w)
|
|
unsigned int print_uint::w
|
|
unsigned int print_uint::w#10 // 78.33333333333333
|
|
unsigned int print_uint::w#3 // 22.0
|
|
unsigned int print_uint::w#4 // 22.0
|
|
unsigned int print_uint::w#5 // 22.0
|
|
unsigned int rem16u
|
|
unsigned int rem16u#0 // 22.4
|
|
|
|
Initial phi equivalence classes
|
|
[ main::i#10 main::i#1 ]
|
|
[ lin16u_gen::max#3 ]
|
|
[ lin16u_gen::min#3 ]
|
|
[ lin16u_gen::i#2 lin16u_gen::i#1 ]
|
|
[ lin16u_gen::val#2 lin16u_gen::val#1 lin16u_gen::val#0 ]
|
|
[ lin16u_gen::lintab#4 lin16u_gen::lintab#3 lin16u_gen::lintab#6 ]
|
|
[ print_str::str#10 print_str::str#13 print_str::str#0 ]
|
|
[ print_uint::w#10 print_uint::w#3 print_uint::w#4 print_uint::w#5 ]
|
|
[ print_line_cursor#12 print_line_cursor#23 print_line_cursor#0 ]
|
|
[ print_uchar::b#3 print_uchar::b#2 print_uchar::b#0 print_uchar::b#1 ]
|
|
[ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ]
|
|
[ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ]
|
|
[ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ]
|
|
[ divr16u::i#2 divr16u::i#1 ]
|
|
[ memset::dst#2 memset::dst#1 ]
|
|
[ print_char::ch#3 print_char::ch#0 print_char::ch#1 print_char::ch#2 ]
|
|
[ print_char_cursor#51 print_char_cursor#84 print_char_cursor#104 print_char_cursor#1 print_char_cursor#89 print_char_cursor#10 print_char_cursor#100 ]
|
|
Added variable main::$28 to live range equivalence class [ main::$28 ]
|
|
Added variable lin16u_gen::ampl#0 to live range equivalence class [ lin16u_gen::ampl#0 ]
|
|
Added variable divr16u::return#2 to live range equivalence class [ divr16u::return#2 ]
|
|
Added variable lin16u_gen::stepi#0 to live range equivalence class [ lin16u_gen::stepi#0 ]
|
|
Added variable divr16u::return#3 to live range equivalence class [ divr16u::return#3 ]
|
|
Added variable lin16u_gen::stepf#0 to live range equivalence class [ lin16u_gen::stepf#0 ]
|
|
Added variable lin16u_gen::step#0 to live range equivalence class [ lin16u_gen::step#0 ]
|
|
Added variable lin16u_gen::$8 to live range equivalence class [ lin16u_gen::$8 ]
|
|
Added variable print_uchar::$0 to live range equivalence class [ print_uchar::$0 ]
|
|
Added variable print_uchar::$2 to live range equivalence class [ print_uchar::$2 ]
|
|
Added variable divr16u::$1 to live range equivalence class [ divr16u::$1 ]
|
|
Added variable divr16u::$2 to live range equivalence class [ divr16u::$2 ]
|
|
Added variable rem16u#0 to live range equivalence class [ rem16u#0 ]
|
|
Complete equivalence classes
|
|
[ main::i#10 main::i#1 ]
|
|
[ lin16u_gen::max#3 ]
|
|
[ lin16u_gen::min#3 ]
|
|
[ lin16u_gen::i#2 lin16u_gen::i#1 ]
|
|
[ lin16u_gen::val#2 lin16u_gen::val#1 lin16u_gen::val#0 ]
|
|
[ lin16u_gen::lintab#4 lin16u_gen::lintab#3 lin16u_gen::lintab#6 ]
|
|
[ print_str::str#10 print_str::str#13 print_str::str#0 ]
|
|
[ print_uint::w#10 print_uint::w#3 print_uint::w#4 print_uint::w#5 ]
|
|
[ print_line_cursor#12 print_line_cursor#23 print_line_cursor#0 ]
|
|
[ print_uchar::b#3 print_uchar::b#2 print_uchar::b#0 print_uchar::b#1 ]
|
|
[ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ]
|
|
[ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ]
|
|
[ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ]
|
|
[ divr16u::i#2 divr16u::i#1 ]
|
|
[ memset::dst#2 memset::dst#1 ]
|
|
[ print_char::ch#3 print_char::ch#0 print_char::ch#1 print_char::ch#2 ]
|
|
[ print_char_cursor#51 print_char_cursor#84 print_char_cursor#104 print_char_cursor#1 print_char_cursor#89 print_char_cursor#10 print_char_cursor#100 ]
|
|
[ main::$28 ]
|
|
[ lin16u_gen::ampl#0 ]
|
|
[ divr16u::return#2 ]
|
|
[ lin16u_gen::stepi#0 ]
|
|
[ divr16u::return#3 ]
|
|
[ lin16u_gen::stepf#0 ]
|
|
[ lin16u_gen::step#0 ]
|
|
[ lin16u_gen::$8 ]
|
|
[ print_uchar::$0 ]
|
|
[ print_uchar::$2 ]
|
|
[ divr16u::$1 ]
|
|
[ divr16u::$2 ]
|
|
[ rem16u#0 ]
|
|
Allocated zp[1]:2 [ print_char::ch#3 print_char::ch#0 print_char::ch#1 print_char::ch#2 ]
|
|
Allocated zp[2]:3 [ print_char_cursor#51 print_char_cursor#84 print_char_cursor#104 print_char_cursor#1 print_char_cursor#89 print_char_cursor#10 print_char_cursor#100 ]
|
|
Allocated zp[2]:5 [ print_str::str#10 print_str::str#13 print_str::str#0 ]
|
|
Allocated zp[2]:7 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#0 ]
|
|
Allocated zp[2]:9 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ]
|
|
Allocated zp[2]:11 [ memset::dst#2 memset::dst#1 ]
|
|
Allocated zp[2]:13 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ]
|
|
Allocated zp[1]:15 [ print_uchar::$0 ]
|
|
Allocated zp[1]:16 [ print_uchar::$2 ]
|
|
Allocated zp[1]:17 [ divr16u::$1 ]
|
|
Allocated zp[1]:18 [ divr16u::$2 ]
|
|
Allocated zp[1]:19 [ divr16u::i#2 divr16u::i#1 ]
|
|
Allocated zp[1]:20 [ print_uchar::b#3 print_uchar::b#2 print_uchar::b#0 print_uchar::b#1 ]
|
|
Allocated zp[2]:21 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ]
|
|
Allocated zp[2]:23 [ lin16u_gen::i#2 lin16u_gen::i#1 ]
|
|
Allocated zp[2]:25 [ lin16u_gen::$8 ]
|
|
Allocated zp[4]:27 [ lin16u_gen::val#2 lin16u_gen::val#1 lin16u_gen::val#0 ]
|
|
Allocated zp[2]:31 [ lin16u_gen::lintab#4 lin16u_gen::lintab#3 lin16u_gen::lintab#6 ]
|
|
Allocated zp[2]:33 [ print_uint::w#10 print_uint::w#3 print_uint::w#4 print_uint::w#5 ]
|
|
Allocated zp[1]:35 [ main::i#10 main::i#1 ]
|
|
Allocated zp[2]:36 [ rem16u#0 ]
|
|
Allocated zp[2]:38 [ lin16u_gen::ampl#0 ]
|
|
Allocated zp[2]:40 [ divr16u::return#2 ]
|
|
Allocated zp[2]:42 [ divr16u::return#3 ]
|
|
Allocated zp[2]:44 [ lin16u_gen::stepf#0 ]
|
|
Allocated zp[4]:46 [ lin16u_gen::step#0 ]
|
|
Allocated zp[2]:50 [ lin16u_gen::max#3 ]
|
|
Allocated zp[1]:52 [ main::$28 ]
|
|
Allocated zp[2]:53 [ lin16u_gen::stepi#0 ]
|
|
Allocated zp[2]:55 [ lin16u_gen::min#3 ]
|
|
REGISTER UPLIFT POTENTIAL REGISTERS
|
|
Statement [24] print_char_cursor#100 = print_line_cursor#0 [ print_char_cursor#100 print_line_cursor#0 ] ( [ print_char_cursor#100 print_line_cursor#0 ] { { print_char_cursor#100 = print_char_cursor#89 } } ) always clobbers reg byte a
|
|
Statement [40] print_char_cursor#104 = print_line_cursor#0 [ main::i#10 print_line_cursor#0 print_uchar::b#2 print_char_cursor#104 ] ( [ main::i#10 print_line_cursor#0 print_uchar::b#2 print_char_cursor#104 ] { { print_uchar::b#2 = print_uchar::b#3 main::i#10 } { print_char_cursor#104 = print_char_cursor#84 } } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:35 [ main::i#10 main::i#1 ]
|
|
Removing always clobbered register reg byte a as potential for zp[1]:20 [ print_uchar::b#3 print_uchar::b#2 print_uchar::b#0 print_uchar::b#1 ]
|
|
Statement [44] main::$28 = main::i#10 << 1 [ main::i#10 print_line_cursor#0 main::$28 print_char_cursor#1 ] ( [ main::i#10 print_line_cursor#0 main::$28 print_char_cursor#1 ] { { print_uint::w#10 = print_uint::w#3 } } ) always clobbers reg byte a
|
|
Statement [45] print_uint::w#3 = main::lintab1[main::$28] [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#3 print_char_cursor#1 ] ( [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#3 print_char_cursor#1 ] { { print_uint::w#10 = print_uint::w#3 } } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:52 [ main::$28 ]
|
|
Statement [49] print_uint::w#4 = main::lintab2[main::$28] [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#4 print_char_cursor#1 ] ( [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#4 print_char_cursor#1 ] { { print_uint::w#10 = print_uint::w#4 } } ) always clobbers reg byte a
|
|
Statement [53] print_uint::w#5 = main::lintab3[main::$28] [ main::i#10 print_line_cursor#0 print_uint::w#5 print_char_cursor#1 ] ( [ main::i#10 print_line_cursor#0 print_uint::w#5 print_char_cursor#1 ] { { print_uint::w#10 = print_uint::w#5 } } ) always clobbers reg byte a
|
|
Statement [59] lin16u_gen::ampl#0 = lin16u_gen::max#3 - lin16u_gen::min#3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a
|
|
Statement [60] divr16u::dividend#1 = lin16u_gen::ampl#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a
|
|
Statement [62] divr16u::return#2 = divr16u::return#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#0 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a
|
|
Statement [63] lin16u_gen::stepi#0 = divr16u::return#2 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#0 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [64] divr16u::rem#4 = rem16u#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [66] divr16u::return#3 = divr16u::return#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [67] lin16u_gen::stepf#0 = divr16u::return#3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] { } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] { } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] { } ) always clobbers reg byte a
|
|
Statement [68] lin16u_gen::step#0 = lin16u_gen::stepi#0 dw= lin16u_gen::stepf#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] { } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] { } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] { } ) always clobbers reg byte a
|
|
Statement [69] lin16u_gen::val#0 = lin16u_gen::min#3 dw= 0 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] ( lin16u_gen:1 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] { } lin16u_gen:3 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] { } lin16u_gen:5 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] { } ) always clobbers reg byte a
|
|
Statement [71] if(lin16u_gen::i#2<$14) goto lin16u_gen::@2 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] ( lin16u_gen:1 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } lin16u_gen:3 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } ) always clobbers reg byte a
|
|
Statement [73] lin16u_gen::$8 = word1 lin16u_gen::val#2 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$8 ] ( lin16u_gen:1 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$8 ] { } lin16u_gen:3 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$8 ] { } lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$8 ] { } ) always clobbers reg byte a
|
|
Statement [74] *lin16u_gen::lintab#4 = lin16u_gen::$8 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] ( lin16u_gen:1 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } lin16u_gen:3 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } ) always clobbers reg byte a reg byte y
|
|
Statement [75] lin16u_gen::val#1 = lin16u_gen::val#2 + lin16u_gen::step#0 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] ( lin16u_gen:1 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] { } lin16u_gen:3 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] { } lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] { } ) always clobbers reg byte a
|
|
Statement [76] lin16u_gen::lintab#3 = lin16u_gen::lintab#4 + SIZEOF_UNSIGNED_INT [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] ( lin16u_gen:1 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] { } lin16u_gen:3 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] { } lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] { } ) always clobbers reg byte a
|
|
Statement [83] if(0!=*print_str::str#10) goto print_str::@2 [ print_str::str#10 print_char_cursor#1 ] ( print_str:9 [ print_str::str#10 print_char_cursor#1 ] { } print_str:13 [ print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:17 [ print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:25 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#100 = print_char_cursor#89 } } print_str:29 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:33 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:43 [ main::i#10 print_line_cursor#0 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:48 [ main::i#10 print_line_cursor#0 main::$28 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:52 [ main::i#10 print_line_cursor#0 main::$28 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } ) always clobbers reg byte a reg byte y
|
|
Removing always clobbered register reg byte y as potential for zp[1]:35 [ main::i#10 main::i#1 ]
|
|
Removing always clobbered register reg byte y as potential for zp[1]:52 [ main::$28 ]
|
|
Statement [85] print_char::ch#0 = *print_str::str#10 [ print_str::str#10 print_char_cursor#1 print_char::ch#0 ] ( print_str:9 [ print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:13 [ print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:17 [ print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:25 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#100 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:29 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:33 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:43 [ main::i#10 print_line_cursor#0 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:48 [ main::i#10 print_line_cursor#0 main::$28 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:52 [ main::i#10 print_line_cursor#0 main::$28 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } ) always clobbers reg byte a reg byte y
|
|
Statement [96] print_line_cursor#0 = print_line_cursor#12 + $28 [ print_line_cursor#0 print_char_cursor#10 ] ( print_ln:21 [ print_line_cursor#0 print_char_cursor#10 ] { } print_ln:37 [ print_line_cursor#0 print_char_cursor#10 ] { { print_line_cursor#0 = print_line_cursor#23 } } print_ln:56 [ main::i#10 print_line_cursor#0 print_char_cursor#10 ] { { print_line_cursor#0 = print_line_cursor#23 } } ) always clobbers reg byte a
|
|
Statement [97] if(print_line_cursor#0<print_char_cursor#10) goto print_ln::@1 [ print_line_cursor#0 print_char_cursor#10 ] ( print_ln:21 [ print_line_cursor#0 print_char_cursor#10 ] { } print_ln:37 [ print_line_cursor#0 print_char_cursor#10 ] { { print_line_cursor#0 = print_line_cursor#23 } } print_ln:56 [ main::i#10 print_line_cursor#0 print_char_cursor#10 ] { { print_line_cursor#0 = print_line_cursor#23 } } ) always clobbers reg byte a
|
|
Statement [100] print_uchar::$0 = print_uchar::b#3 >> 4 [ print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] ( print_uchar:41 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#2 = print_uchar::b#3 main::i#10 } { print_char_cursor#104 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:11::print_uchar:90 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:15::print_uchar:90 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:19::print_uchar:90 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:27::print_uchar:90 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:31::print_uchar:90 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:35::print_uchar:90 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:46::print_uchar:90 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:50::print_uchar:90 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:54::print_uchar:90 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:11::print_uchar:92 [ print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:15::print_uchar:92 [ print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:19::print_uchar:92 [ print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:27::print_uchar:92 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:31::print_uchar:92 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:35::print_uchar:92 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:46::print_uchar:92 [ main::i#10 print_line_cursor#0 main::$28 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:50::print_uchar:92 [ main::i#10 print_line_cursor#0 main::$28 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:54::print_uchar:92 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } ) always clobbers reg byte a
|
|
Statement [103] print_uchar::$2 = print_uchar::b#3 & $f [ print_char_cursor#10 print_uchar::$2 ] ( print_uchar:41 [ main::i#10 print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#2 = print_uchar::b#3 main::i#10 } { print_char_cursor#104 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:11::print_uchar:90 [ print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:15::print_uchar:90 [ print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:19::print_uchar:90 [ print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:27::print_uchar:90 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:31::print_uchar:90 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:35::print_uchar:90 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:46::print_uchar:90 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:50::print_uchar:90 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:54::print_uchar:90 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:11::print_uchar:92 [ print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:15::print_uchar:92 [ print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:19::print_uchar:92 [ print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:27::print_uchar:92 [ print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:31::print_uchar:92 [ print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:35::print_uchar:92 [ print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:46::print_uchar:92 [ main::i#10 print_line_cursor#0 main::$28 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:50::print_uchar:92 [ main::i#10 print_line_cursor#0 main::$28 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:54::print_uchar:92 [ main::i#10 print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } ) always clobbers reg byte a
|
|
Statement [113] divr16u::rem#1 = divr16u::rem#0 | 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( lin16u_gen:1::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:1::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:19 [ divr16u::i#2 divr16u::i#1 ]
|
|
Statement [117] if(divr16u::rem#6<$14-1) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( lin16u_gen:1::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:1::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [119] divr16u::rem#2 = divr16u::rem#6 - $14-1 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( lin16u_gen:1::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:1::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [123] rem16u#0 = divr16u::rem#11 [ divr16u::return#0 rem16u#0 ] ( lin16u_gen:1::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#0 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#0 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#0 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:1::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [127] if(memset::dst#2!=memset::end#0) goto memset::@2 [ memset::dst#2 ] ( print_cls:7::memset:79 [ memset::dst#2 ] { } ) always clobbers reg byte a
|
|
Statement [129] *memset::dst#2 = memset::c#0 [ memset::dst#2 ] ( print_cls:7::memset:79 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y
|
|
Statement [132] *print_char_cursor#51 = print_char::ch#3 [ print_char_cursor#51 ] ( print_str:9::print_char:86 [ print_str::str#10 print_char_cursor#51 ] { { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:13::print_char:86 [ print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:17::print_char:86 [ print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:25::print_char:86 [ print_line_cursor#0 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#100 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:29::print_char:86 [ print_line_cursor#0 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:33::print_char:86 [ print_line_cursor#0 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:43::print_char:86 [ main::i#10 print_line_cursor#0 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:48::print_char:86 [ main::i#10 print_line_cursor#0 main::$28 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:52::print_char:86 [ main::i#10 print_line_cursor#0 main::$28 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_uchar:41::print_char:102 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#2 = print_uchar::b#3 main::i#10 } { print_char_cursor#104 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:11::print_uchar:90::print_char:102 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:15::print_uchar:90::print_char:102 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:19::print_uchar:90::print_char:102 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:27::print_uchar:90::print_char:102 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:31::print_uchar:90::print_char:102 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:35::print_uchar:90::print_char:102 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:46::print_uchar:90::print_char:102 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:50::print_uchar:90::print_char:102 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:54::print_uchar:90::print_char:102 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:11::print_uchar:92::print_char:102 [ print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:15::print_uchar:92::print_char:102 [ print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:19::print_uchar:92::print_char:102 [ print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:27::print_uchar:92::print_char:102 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:31::print_uchar:92::print_char:102 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:35::print_uchar:92::print_char:102 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:46::print_uchar:92::print_char:102 [ main::i#10 print_line_cursor#0 main::$28 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:50::print_uchar:92::print_char:102 [ main::i#10 print_line_cursor#0 main::$28 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:54::print_uchar:92::print_char:102 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uchar:41::print_char:105 [ main::i#10 print_line_cursor#0 print_char_cursor#51 ] { { print_uchar::b#2 = print_uchar::b#3 main::i#10 } { print_char_cursor#104 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:11::print_uchar:90::print_char:105 [ print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:15::print_uchar:90::print_char:105 [ print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:19::print_uchar:90::print_char:105 [ print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:27::print_uchar:90::print_char:105 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:31::print_uchar:90::print_char:105 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:35::print_uchar:90::print_char:105 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:46::print_uchar:90::print_char:105 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:50::print_uchar:90::print_char:105 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:54::print_uchar:90::print_char:105 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:11::print_uchar:92::print_char:105 [ print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:15::print_uchar:92::print_char:105 [ print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:19::print_uchar:92::print_char:105 [ print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:27::print_uchar:92::print_char:105 [ print_line_cursor#0 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:31::print_uchar:92::print_char:105 [ print_line_cursor#0 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:35::print_uchar:92::print_char:105 [ print_line_cursor#0 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:46::print_uchar:92::print_char:105 [ main::i#10 print_line_cursor#0 main::$28 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:50::print_uchar:92::print_char:105 [ main::i#10 print_line_cursor#0 main::$28 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:54::print_uchar:92::print_char:105 [ main::i#10 print_line_cursor#0 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } ) always clobbers reg byte y
|
|
Removing always clobbered register reg byte y as potential for zp[1]:20 [ print_uchar::b#3 print_uchar::b#2 print_uchar::b#0 print_uchar::b#1 ]
|
|
Statement [24] print_char_cursor#100 = print_line_cursor#0 [ print_char_cursor#100 print_line_cursor#0 ] ( [ print_char_cursor#100 print_line_cursor#0 ] { { print_char_cursor#100 = print_char_cursor#89 } } ) always clobbers reg byte a
|
|
Statement [40] print_char_cursor#104 = print_line_cursor#0 [ main::i#10 print_line_cursor#0 print_uchar::b#2 print_char_cursor#104 ] ( [ main::i#10 print_line_cursor#0 print_uchar::b#2 print_char_cursor#104 ] { { print_uchar::b#2 = print_uchar::b#3 main::i#10 } { print_char_cursor#104 = print_char_cursor#84 } } ) always clobbers reg byte a
|
|
Statement [44] main::$28 = main::i#10 << 1 [ main::i#10 print_line_cursor#0 main::$28 print_char_cursor#1 ] ( [ main::i#10 print_line_cursor#0 main::$28 print_char_cursor#1 ] { { print_uint::w#10 = print_uint::w#3 } } ) always clobbers reg byte a
|
|
Statement [45] print_uint::w#3 = main::lintab1[main::$28] [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#3 print_char_cursor#1 ] ( [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#3 print_char_cursor#1 ] { { print_uint::w#10 = print_uint::w#3 } } ) always clobbers reg byte a
|
|
Statement [49] print_uint::w#4 = main::lintab2[main::$28] [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#4 print_char_cursor#1 ] ( [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#4 print_char_cursor#1 ] { { print_uint::w#10 = print_uint::w#4 } } ) always clobbers reg byte a
|
|
Statement [53] print_uint::w#5 = main::lintab3[main::$28] [ main::i#10 print_line_cursor#0 print_uint::w#5 print_char_cursor#1 ] ( [ main::i#10 print_line_cursor#0 print_uint::w#5 print_char_cursor#1 ] { { print_uint::w#10 = print_uint::w#5 } } ) always clobbers reg byte a
|
|
Statement [59] lin16u_gen::ampl#0 = lin16u_gen::max#3 - lin16u_gen::min#3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::ampl#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a
|
|
Statement [60] divr16u::dividend#1 = lin16u_gen::ampl#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a
|
|
Statement [62] divr16u::return#2 = divr16u::return#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#0 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#2 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a
|
|
Statement [63] lin16u_gen::stepi#0 = divr16u::return#2 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#0 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [64] divr16u::rem#4 = rem16u#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::rem#4 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [66] divr16u::return#3 = divr16u::return#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#3 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [67] lin16u_gen::stepf#0 = divr16u::return#3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] { } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] { } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] { } ) always clobbers reg byte a
|
|
Statement [68] lin16u_gen::step#0 = lin16u_gen::stepi#0 dw= lin16u_gen::stepf#0 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] ( lin16u_gen:1 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] { } lin16u_gen:3 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] { } lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::step#0 ] { } ) always clobbers reg byte a
|
|
Statement [69] lin16u_gen::val#0 = lin16u_gen::min#3 dw= 0 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] ( lin16u_gen:1 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] { } lin16u_gen:3 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] { } lin16u_gen:5 [ lin16u_gen::lintab#6 lin16u_gen::step#0 lin16u_gen::val#0 ] { } ) always clobbers reg byte a
|
|
Statement [71] if(lin16u_gen::i#2<$14) goto lin16u_gen::@2 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] ( lin16u_gen:1 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } lin16u_gen:3 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } ) always clobbers reg byte a
|
|
Statement [73] lin16u_gen::$8 = word1 lin16u_gen::val#2 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$8 ] ( lin16u_gen:1 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$8 ] { } lin16u_gen:3 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$8 ] { } lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::$8 ] { } ) always clobbers reg byte a
|
|
Statement [74] *lin16u_gen::lintab#4 = lin16u_gen::$8 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] ( lin16u_gen:1 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } lin16u_gen:3 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#2 lin16u_gen::lintab#4 ] { } ) always clobbers reg byte a reg byte y
|
|
Statement [75] lin16u_gen::val#1 = lin16u_gen::val#2 + lin16u_gen::step#0 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] ( lin16u_gen:1 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] { } lin16u_gen:3 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] { } lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::lintab#4 lin16u_gen::val#1 ] { } ) always clobbers reg byte a
|
|
Statement [76] lin16u_gen::lintab#3 = lin16u_gen::lintab#4 + SIZEOF_UNSIGNED_INT [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] ( lin16u_gen:1 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] { } lin16u_gen:3 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] { } lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] { } ) always clobbers reg byte a
|
|
Statement [83] if(0!=*print_str::str#10) goto print_str::@2 [ print_str::str#10 print_char_cursor#1 ] ( print_str:9 [ print_str::str#10 print_char_cursor#1 ] { } print_str:13 [ print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:17 [ print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:25 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#100 = print_char_cursor#89 } } print_str:29 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:33 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:43 [ main::i#10 print_line_cursor#0 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:48 [ main::i#10 print_line_cursor#0 main::$28 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } print_str:52 [ main::i#10 print_line_cursor#0 main::$28 print_str::str#10 print_char_cursor#1 ] { { print_char_cursor#10 = print_char_cursor#89 } } ) always clobbers reg byte a reg byte y
|
|
Statement [85] print_char::ch#0 = *print_str::str#10 [ print_str::str#10 print_char_cursor#1 print_char::ch#0 ] ( print_str:9 [ print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:13 [ print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:17 [ print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:25 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#100 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:29 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:33 [ print_line_cursor#0 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:43 [ main::i#10 print_line_cursor#0 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:48 [ main::i#10 print_line_cursor#0 main::$28 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:52 [ main::i#10 print_line_cursor#0 main::$28 print_str::str#10 print_char_cursor#1 print_char::ch#0 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } ) always clobbers reg byte a reg byte y
|
|
Statement [96] print_line_cursor#0 = print_line_cursor#12 + $28 [ print_line_cursor#0 print_char_cursor#10 ] ( print_ln:21 [ print_line_cursor#0 print_char_cursor#10 ] { } print_ln:37 [ print_line_cursor#0 print_char_cursor#10 ] { { print_line_cursor#0 = print_line_cursor#23 } } print_ln:56 [ main::i#10 print_line_cursor#0 print_char_cursor#10 ] { { print_line_cursor#0 = print_line_cursor#23 } } ) always clobbers reg byte a
|
|
Statement [97] if(print_line_cursor#0<print_char_cursor#10) goto print_ln::@1 [ print_line_cursor#0 print_char_cursor#10 ] ( print_ln:21 [ print_line_cursor#0 print_char_cursor#10 ] { } print_ln:37 [ print_line_cursor#0 print_char_cursor#10 ] { { print_line_cursor#0 = print_line_cursor#23 } } print_ln:56 [ main::i#10 print_line_cursor#0 print_char_cursor#10 ] { { print_line_cursor#0 = print_line_cursor#23 } } ) always clobbers reg byte a
|
|
Statement [100] print_uchar::$0 = print_uchar::b#3 >> 4 [ print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] ( print_uchar:41 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#2 = print_uchar::b#3 main::i#10 } { print_char_cursor#104 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:11::print_uchar:90 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:15::print_uchar:90 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:19::print_uchar:90 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:27::print_uchar:90 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:31::print_uchar:90 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:35::print_uchar:90 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:46::print_uchar:90 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:50::print_uchar:90 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:54::print_uchar:90 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:11::print_uchar:92 [ print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:15::print_uchar:92 [ print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:19::print_uchar:92 [ print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:27::print_uchar:92 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:31::print_uchar:92 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:35::print_uchar:92 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:46::print_uchar:92 [ main::i#10 print_line_cursor#0 main::$28 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:50::print_uchar:92 [ main::i#10 print_line_cursor#0 main::$28 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:54::print_uchar:92 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#84 print_uchar::$0 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } ) always clobbers reg byte a
|
|
Statement [103] print_uchar::$2 = print_uchar::b#3 & $f [ print_char_cursor#10 print_uchar::$2 ] ( print_uchar:41 [ main::i#10 print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#2 = print_uchar::b#3 main::i#10 } { print_char_cursor#104 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:11::print_uchar:90 [ print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:15::print_uchar:90 [ print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:19::print_uchar:90 [ print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:27::print_uchar:90 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:31::print_uchar:90 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:35::print_uchar:90 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:46::print_uchar:90 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:50::print_uchar:90 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:54::print_uchar:90 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:11::print_uchar:92 [ print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:15::print_uchar:92 [ print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:19::print_uchar:92 [ print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:27::print_uchar:92 [ print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:31::print_uchar:92 [ print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:35::print_uchar:92 [ print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:46::print_uchar:92 [ main::i#10 print_line_cursor#0 main::$28 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:50::print_uchar:92 [ main::i#10 print_line_cursor#0 main::$28 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:54::print_uchar:92 [ main::i#10 print_line_cursor#0 print_char_cursor#10 print_uchar::$2 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } ) always clobbers reg byte a
|
|
Statement [113] divr16u::rem#1 = divr16u::rem#0 | 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( lin16u_gen:1::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:1::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [117] if(divr16u::rem#6<$14-1) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( lin16u_gen:1::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:1::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [119] divr16u::rem#2 = divr16u::rem#6 - $14-1 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( lin16u_gen:1::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:1::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [123] rem16u#0 = divr16u::rem#11 [ divr16u::return#0 rem16u#0 ] ( lin16u_gen:1::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#0 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:3::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#0 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:5::divr16u:61 [ lin16u_gen::min#3 lin16u_gen::lintab#6 divr16u::return#0 rem16u#0 ] { { divr16u::dividend#1 = divr16u::dividend#5 lin16u_gen::ampl#0 } { divr16u::return#0 = divr16u::return#2 } } lin16u_gen:1::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:3::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } lin16u_gen:5::divr16u:65 [ lin16u_gen::min#3 lin16u_gen::lintab#6 lin16u_gen::stepi#0 divr16u::return#0 rem16u#0 ] { { divr16u::rem#10 = divr16u::rem#4 rem16u#0 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [127] if(memset::dst#2!=memset::end#0) goto memset::@2 [ memset::dst#2 ] ( print_cls:7::memset:79 [ memset::dst#2 ] { } ) always clobbers reg byte a
|
|
Statement [129] *memset::dst#2 = memset::c#0 [ memset::dst#2 ] ( print_cls:7::memset:79 [ memset::dst#2 ] { } ) always clobbers reg byte a reg byte y
|
|
Statement [132] *print_char_cursor#51 = print_char::ch#3 [ print_char_cursor#51 ] ( print_str:9::print_char:86 [ print_str::str#10 print_char_cursor#51 ] { { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:13::print_char:86 [ print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:17::print_char:86 [ print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:25::print_char:86 [ print_line_cursor#0 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#100 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:29::print_char:86 [ print_line_cursor#0 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:33::print_char:86 [ print_line_cursor#0 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:43::print_char:86 [ main::i#10 print_line_cursor#0 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:48::print_char:86 [ main::i#10 print_line_cursor#0 main::$28 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_str:52::print_char:86 [ main::i#10 print_line_cursor#0 main::$28 print_str::str#10 print_char_cursor#51 ] { { print_char_cursor#10 = print_char_cursor#89 } { print_char::ch#0 = print_char::ch#3 } { print_char_cursor#1 = print_char_cursor#51 } } print_uchar:41::print_char:102 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#2 = print_uchar::b#3 main::i#10 } { print_char_cursor#104 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:11::print_uchar:90::print_char:102 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:15::print_uchar:90::print_char:102 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:19::print_uchar:90::print_char:102 [ print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:27::print_uchar:90::print_char:102 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:31::print_uchar:90::print_char:102 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:35::print_uchar:90::print_char:102 [ print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:46::print_uchar:90::print_char:102 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:50::print_uchar:90::print_char:102 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:54::print_uchar:90::print_char:102 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:11::print_uchar:92::print_char:102 [ print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:15::print_uchar:92::print_char:102 [ print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:19::print_uchar:92::print_char:102 [ print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:27::print_uchar:92::print_char:102 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:31::print_uchar:92::print_char:102 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:35::print_uchar:92::print_char:102 [ print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:46::print_uchar:92::print_char:102 [ main::i#10 print_line_cursor#0 main::$28 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:50::print_uchar:92::print_char:102 [ main::i#10 print_line_cursor#0 main::$28 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uint:54::print_uchar:92::print_char:102 [ main::i#10 print_line_cursor#0 print_uchar::b#3 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#1 = print_char::ch#3 } } print_uchar:41::print_char:105 [ main::i#10 print_line_cursor#0 print_char_cursor#51 ] { { print_uchar::b#2 = print_uchar::b#3 main::i#10 } { print_char_cursor#104 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:11::print_uchar:90::print_char:105 [ print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:15::print_uchar:90::print_char:105 [ print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:19::print_uchar:90::print_char:105 [ print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:27::print_uchar:90::print_char:105 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:31::print_uchar:90::print_char:105 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:35::print_uchar:90::print_char:105 [ print_line_cursor#0 print_uint::w#10 print_char_cursor#51 ] { { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:46::print_uchar:90::print_char:105 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:50::print_uchar:90::print_char:105 [ main::i#10 print_line_cursor#0 main::$28 print_uint::w#10 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:54::print_uchar:90::print_char:105 [ main::i#10 print_line_cursor#0 print_uint::w#10 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#0 = print_uchar::b#3 } { print_char_cursor#1 = print_char_cursor#84 } { print_char::ch#2 = print_char::ch#3 } { print_char_cursor#10 = print_char_cursor#51 } } print_uint:11::print_uchar:92::print_char:105 [ print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:15::print_uchar:92::print_char:105 [ print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:19::print_uchar:92::print_char:105 [ print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:27::print_uchar:92::print_char:105 [ print_line_cursor#0 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:31::print_uchar:92::print_char:105 [ print_line_cursor#0 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:35::print_uchar:92::print_char:105 [ print_line_cursor#0 print_char_cursor#51 ] { { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:46::print_uchar:92::print_char:105 [ main::i#10 print_line_cursor#0 main::$28 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#3 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:50::print_uchar:92::print_char:105 [ main::i#10 print_line_cursor#0 main::$28 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#4 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } print_uint:54::print_uchar:92::print_char:105 [ main::i#10 print_line_cursor#0 print_char_cursor#51 ] { { print_uint::w#10 = print_uint::w#5 } { print_uchar::b#1 = print_uchar::b#3 } { print_char_cursor#10 = print_char_cursor#84 print_char_cursor#51 } { print_char::ch#2 = print_char::ch#3 } } ) always clobbers reg byte y
|
|
Potential registers zp[1]:35 [ main::i#10 main::i#1 ] : zp[1]:35 , reg byte x ,
|
|
Potential registers zp[2]:50 [ lin16u_gen::max#3 ] : zp[2]:50 ,
|
|
Potential registers zp[2]:55 [ lin16u_gen::min#3 ] : zp[2]:55 ,
|
|
Potential registers zp[2]:23 [ lin16u_gen::i#2 lin16u_gen::i#1 ] : zp[2]:23 ,
|
|
Potential registers zp[4]:27 [ lin16u_gen::val#2 lin16u_gen::val#1 lin16u_gen::val#0 ] : zp[4]:27 ,
|
|
Potential registers zp[2]:31 [ lin16u_gen::lintab#4 lin16u_gen::lintab#3 lin16u_gen::lintab#6 ] : zp[2]:31 ,
|
|
Potential registers zp[2]:5 [ print_str::str#10 print_str::str#13 print_str::str#0 ] : zp[2]:5 ,
|
|
Potential registers zp[2]:33 [ print_uint::w#10 print_uint::w#3 print_uint::w#4 print_uint::w#5 ] : zp[2]:33 ,
|
|
Potential registers zp[2]:7 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#0 ] : zp[2]:7 ,
|
|
Potential registers zp[1]:20 [ print_uchar::b#3 print_uchar::b#2 print_uchar::b#0 print_uchar::b#1 ] : zp[1]:20 , reg byte x ,
|
|
Potential registers zp[2]:9 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] : zp[2]:9 ,
|
|
Potential registers zp[2]:21 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ] : zp[2]:21 ,
|
|
Potential registers zp[2]:13 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] : zp[2]:13 ,
|
|
Potential registers zp[1]:19 [ divr16u::i#2 divr16u::i#1 ] : zp[1]:19 , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:11 [ memset::dst#2 memset::dst#1 ] : zp[2]:11 ,
|
|
Potential registers zp[1]:2 [ print_char::ch#3 print_char::ch#0 print_char::ch#1 print_char::ch#2 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:3 [ print_char_cursor#51 print_char_cursor#84 print_char_cursor#104 print_char_cursor#1 print_char_cursor#89 print_char_cursor#10 print_char_cursor#100 ] : zp[2]:3 ,
|
|
Potential registers zp[1]:52 [ main::$28 ] : zp[1]:52 , reg byte x ,
|
|
Potential registers zp[2]:38 [ lin16u_gen::ampl#0 ] : zp[2]:38 ,
|
|
Potential registers zp[2]:40 [ divr16u::return#2 ] : zp[2]:40 ,
|
|
Potential registers zp[2]:53 [ lin16u_gen::stepi#0 ] : zp[2]:53 ,
|
|
Potential registers zp[2]:42 [ divr16u::return#3 ] : zp[2]:42 ,
|
|
Potential registers zp[2]:44 [ lin16u_gen::stepf#0 ] : zp[2]:44 ,
|
|
Potential registers zp[4]:46 [ lin16u_gen::step#0 ] : zp[4]:46 ,
|
|
Potential registers zp[2]:25 [ lin16u_gen::$8 ] : zp[2]:25 ,
|
|
Potential registers zp[1]:15 [ print_uchar::$0 ] : zp[1]:15 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:16 [ print_uchar::$2 ] : zp[1]:16 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:17 [ divr16u::$1 ] : zp[1]:17 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:18 [ divr16u::$2 ] : zp[1]:18 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:36 [ rem16u#0 ] : zp[2]:36 ,
|
|
|
|
REGISTER UPLIFT SCOPES
|
|
Uplift Scope [print_char] 136,010: zp[1]:2 [ print_char::ch#3 print_char::ch#0 print_char::ch#1 print_char::ch#2 ]
|
|
Uplift Scope [] 110,659.54: zp[2]:3 [ print_char_cursor#51 print_char_cursor#84 print_char_cursor#104 print_char_cursor#1 print_char_cursor#89 print_char_cursor#10 print_char_cursor#100 ] 21,007.24: zp[2]:7 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#0 ] 22.4: zp[2]:36 [ rem16u#0 ]
|
|
Uplift Scope [print_str] 30,129.25: zp[2]:5 [ print_str::str#10 print_str::str#13 print_str::str#0 ]
|
|
Uplift Scope [divr16u] 9,027.42: zp[2]:9 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 3,184.89: zp[2]:13 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 2,002: zp[1]:17 [ divr16u::$1 ] 2,002: zp[1]:18 [ divr16u::$2 ] 1,655.5: zp[1]:19 [ divr16u::i#2 divr16u::i#1 ] 827.68: zp[2]:21 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ] 22: zp[2]:40 [ divr16u::return#2 ] 22: zp[2]:42 [ divr16u::return#3 ]
|
|
Uplift Scope [print_uchar] 2,002: zp[1]:15 [ print_uchar::$0 ] 2,002: zp[1]:16 [ print_uchar::$2 ] 968.75: zp[1]:20 [ print_uchar::b#3 print_uchar::b#2 print_uchar::b#0 print_uchar::b#1 ]
|
|
Uplift Scope [memset] 3,336.67: zp[2]:11 [ memset::dst#2 memset::dst#1 ]
|
|
Uplift Scope [lin16u_gen] 252.5: zp[2]:23 [ lin16u_gen::i#2 lin16u_gen::i#1 ] 202: zp[2]:25 [ lin16u_gen::$8 ] 167.83: zp[4]:27 [ lin16u_gen::val#2 lin16u_gen::val#1 lin16u_gen::val#0 ] 164.72: zp[2]:31 [ lin16u_gen::lintab#4 lin16u_gen::lintab#3 lin16u_gen::lintab#6 ] 22: zp[2]:38 [ lin16u_gen::ampl#0 ] 22: zp[2]:44 [ lin16u_gen::stepf#0 ] 12.44: zp[4]:46 [ lin16u_gen::step#0 ] 11: zp[2]:50 [ lin16u_gen::max#3 ] 4.4: zp[2]:53 [ lin16u_gen::stepi#0 ] 2: zp[2]:55 [ lin16u_gen::min#3 ]
|
|
Uplift Scope [print_uint] 144.33: zp[2]:33 [ print_uint::w#10 print_uint::w#3 print_uint::w#4 print_uint::w#5 ]
|
|
Uplift Scope [main] 24.75: zp[1]:35 [ main::i#10 main::i#1 ] 4.89: zp[1]:52 [ main::$28 ]
|
|
Uplift Scope [print_ln]
|
|
Uplift Scope [print_cls]
|
|
Uplift Scope [RADIX]
|
|
|
|
Uplifting [print_char] best 13852 combination reg byte a [ print_char::ch#3 print_char::ch#0 print_char::ch#1 print_char::ch#2 ]
|
|
Uplifting [] best 13852 combination zp[2]:3 [ print_char_cursor#51 print_char_cursor#84 print_char_cursor#104 print_char_cursor#1 print_char_cursor#89 print_char_cursor#10 print_char_cursor#100 ] zp[2]:7 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#0 ] zp[2]:36 [ rem16u#0 ]
|
|
Uplifting [print_str] best 13852 combination zp[2]:5 [ print_str::str#10 print_str::str#13 print_str::str#0 ]
|
|
Uplifting [divr16u] best 13662 combination zp[2]:9 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp[2]:13 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp[2]:21 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ] zp[2]:40 [ divr16u::return#2 ] zp[2]:42 [ divr16u::return#3 ]
|
|
Uplifting [print_uchar] best 13614 combination reg byte a [ print_uchar::$0 ] reg byte x [ print_uchar::$2 ] reg byte x [ print_uchar::b#3 print_uchar::b#2 print_uchar::b#0 print_uchar::b#1 ]
|
|
Uplifting [memset] best 13614 combination zp[2]:11 [ memset::dst#2 memset::dst#1 ]
|
|
Uplifting [lin16u_gen] best 13614 combination zp[2]:23 [ lin16u_gen::i#2 lin16u_gen::i#1 ] zp[2]:25 [ lin16u_gen::$8 ] zp[4]:27 [ lin16u_gen::val#2 lin16u_gen::val#1 lin16u_gen::val#0 ] zp[2]:31 [ lin16u_gen::lintab#4 lin16u_gen::lintab#3 lin16u_gen::lintab#6 ] zp[2]:38 [ lin16u_gen::ampl#0 ] zp[2]:44 [ lin16u_gen::stepf#0 ] zp[4]:46 [ lin16u_gen::step#0 ] zp[2]:50 [ lin16u_gen::max#3 ] zp[2]:53 [ lin16u_gen::stepi#0 ] zp[2]:55 [ lin16u_gen::min#3 ]
|
|
Uplifting [print_uint] best 13614 combination zp[2]:33 [ print_uint::w#10 print_uint::w#3 print_uint::w#4 print_uint::w#5 ]
|
|
Uplifting [main] best 13614 combination zp[1]:35 [ main::i#10 main::i#1 ] zp[1]:52 [ main::$28 ]
|
|
Uplifting [print_ln] best 13614 combination
|
|
Uplifting [print_cls] best 13614 combination
|
|
Uplifting [RADIX] best 13614 combination
|
|
Attempting to uplift remaining variables inzp[1]:35 [ main::i#10 main::i#1 ]
|
|
Uplifting [main] best 13614 combination zp[1]:35 [ main::i#10 main::i#1 ]
|
|
Attempting to uplift remaining variables inzp[1]:52 [ main::$28 ]
|
|
Uplifting [main] best 13614 combination zp[1]:52 [ main::$28 ]
|
|
Coalescing zero page register [ zp[2]:9 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp[2]:36 [ rem16u#0 ] ] - score: 2
|
|
Coalescing zero page register [ zp[2]:50 [ lin16u_gen::max#3 ] ] with [ zp[2]:38 [ lin16u_gen::ampl#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:13 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp[2]:40 [ divr16u::return#2 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:13 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp[2]:42 [ divr16u::return#3 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:50 [ lin16u_gen::max#3 lin16u_gen::ampl#0 ] ] with [ zp[2]:21 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:13 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 ] ] with [ zp[2]:44 [ lin16u_gen::stepf#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:5 [ print_str::str#10 print_str::str#13 print_str::str#0 ] ] with [ zp[2]:50 [ lin16u_gen::max#3 lin16u_gen::ampl#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ] ]
|
|
Coalescing zero page register [ zp[2]:33 [ print_uint::w#10 print_uint::w#3 print_uint::w#4 print_uint::w#5 ] ] with [ zp[2]:55 [ lin16u_gen::min#3 ] ]
|
|
Coalescing zero page register [ zp[2]:7 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#0 ] ] with [ zp[2]:23 [ lin16u_gen::i#2 lin16u_gen::i#1 ] ]
|
|
Coalescing zero page register [ zp[2]:11 [ memset::dst#2 memset::dst#1 ] ] with [ zp[2]:31 [ lin16u_gen::lintab#4 lin16u_gen::lintab#3 lin16u_gen::lintab#6 ] ]
|
|
Coalescing zero page register [ zp[2]:3 [ print_char_cursor#51 print_char_cursor#84 print_char_cursor#104 print_char_cursor#1 print_char_cursor#89 print_char_cursor#10 print_char_cursor#100 ] ] with [ zp[2]:13 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 lin16u_gen::stepf#0 ] ]
|
|
Coalescing zero page register [ zp[2]:25 [ lin16u_gen::$8 ] ] with [ zp[2]:9 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#0 ] ]
|
|
Allocated (was zp[2]:3) zp[2]:2 [ print_char_cursor#51 print_char_cursor#84 print_char_cursor#104 print_char_cursor#1 print_char_cursor#89 print_char_cursor#10 print_char_cursor#100 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 lin16u_gen::stepf#0 ]
|
|
Allocated (was zp[2]:5) zp[2]:4 [ print_str::str#10 print_str::str#13 print_str::str#0 lin16u_gen::max#3 lin16u_gen::ampl#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ]
|
|
Allocated (was zp[2]:7) zp[2]:6 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#0 lin16u_gen::i#2 lin16u_gen::i#1 ]
|
|
Allocated (was zp[2]:25) zp[2]:8 [ lin16u_gen::$8 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#0 ]
|
|
Allocated (was zp[2]:11) zp[2]:10 [ memset::dst#2 memset::dst#1 lin16u_gen::lintab#4 lin16u_gen::lintab#3 lin16u_gen::lintab#6 ]
|
|
Allocated (was zp[4]:27) zp[4]:12 [ lin16u_gen::val#2 lin16u_gen::val#1 lin16u_gen::val#0 ]
|
|
Allocated (was zp[2]:33) zp[2]:16 [ print_uint::w#10 print_uint::w#3 print_uint::w#4 print_uint::w#5 lin16u_gen::min#3 ]
|
|
Allocated (was zp[1]:35) zp[1]:18 [ main::i#10 main::i#1 ]
|
|
Allocated (was zp[4]:46) zp[4]:19 [ lin16u_gen::step#0 ]
|
|
Allocated (was zp[1]:52) zp[1]:23 [ main::$28 ]
|
|
Allocated (was zp[2]:53) zp[2]:24 [ lin16u_gen::stepi#0 ]
|
|
|
|
ASSEMBLER BEFORE OPTIMIZATION
|
|
// File Comments
|
|
// Linear table generator
|
|
// Work in progress towards a sine generator
|
|
/// @file
|
|
/// Simple binary division implementation
|
|
///
|
|
/// Follows the C99 standard by truncating toward zero on negative results.
|
|
/// See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5
|
|
// Upstart
|
|
// Commodore 64 PRG executable file
|
|
.file [name="linegen.prg", type="prg", segments="Program"]
|
|
.segmentdef Program [segments="Basic, Code, Data"]
|
|
.segmentdef Basic [start=$0801]
|
|
.segmentdef Code [start=$80d]
|
|
.segmentdef Data [startAfter="Code"]
|
|
.segment Basic
|
|
:BasicUpstart(main)
|
|
// Global Constants & labels
|
|
.const SIZEOF_UNSIGNED_INT = 2
|
|
.label print_screen = $400
|
|
// Remainder after unsigned 16-bit division
|
|
.label rem16u = 8
|
|
.label print_char_cursor = 2
|
|
.label print_line_cursor = 6
|
|
.segment Code
|
|
// main
|
|
main: {
|
|
.label __28 = $17
|
|
.label i = $12
|
|
// [1] call lin16u_gen
|
|
// [58] phi from main to lin16u_gen [phi:main->lin16u_gen]
|
|
lin16u_gen_from_main:
|
|
// [58] phi lin16u_gen::lintab#6 = main::lintab1 [phi:main->lin16u_gen#0] -- pwuz1=pwuc1
|
|
lda #<lintab1
|
|
sta.z lin16u_gen.lintab
|
|
lda #>lintab1
|
|
sta.z lin16u_gen.lintab+1
|
|
// [58] phi lin16u_gen::min#3 = $22d [phi:main->lin16u_gen#1] -- vwuz1=vwuc1
|
|
lda #<$22d
|
|
sta.z lin16u_gen.min
|
|
lda #>$22d
|
|
sta.z lin16u_gen.min+1
|
|
// [58] phi lin16u_gen::max#3 = $7461 [phi:main->lin16u_gen#2] -- vwuz1=vwuc1
|
|
lda #<$7461
|
|
sta.z lin16u_gen.max
|
|
lda #>$7461
|
|
sta.z lin16u_gen.max+1
|
|
jsr lin16u_gen
|
|
// [2] phi from main to main::@4 [phi:main->main::@4]
|
|
__b4_from_main:
|
|
jmp __b4
|
|
// main::@4
|
|
__b4:
|
|
// [3] call lin16u_gen
|
|
// [58] phi from main::@4 to lin16u_gen [phi:main::@4->lin16u_gen]
|
|
lin16u_gen_from___b4:
|
|
// [58] phi lin16u_gen::lintab#6 = main::lintab2 [phi:main::@4->lin16u_gen#0] -- pwuz1=pwuc1
|
|
lda #<lintab2
|
|
sta.z lin16u_gen.lintab
|
|
lda #>lintab2
|
|
sta.z lin16u_gen.lintab+1
|
|
// [58] phi lin16u_gen::min#3 = $79cb [phi:main::@4->lin16u_gen#1] -- vwuz1=vwuc1
|
|
lda #<$79cb
|
|
sta.z lin16u_gen.min
|
|
lda #>$79cb
|
|
sta.z lin16u_gen.min+1
|
|
// [58] phi lin16u_gen::max#3 = $f781 [phi:main::@4->lin16u_gen#2] -- vwuz1=vwuc1
|
|
lda #<$f781
|
|
sta.z lin16u_gen.max
|
|
lda #>$f781
|
|
sta.z lin16u_gen.max+1
|
|
jsr lin16u_gen
|
|
// [4] phi from main::@4 to main::@5 [phi:main::@4->main::@5]
|
|
__b5_from___b4:
|
|
jmp __b5
|
|
// main::@5
|
|
__b5:
|
|
// [5] call lin16u_gen
|
|
// [58] phi from main::@5 to lin16u_gen [phi:main::@5->lin16u_gen]
|
|
lin16u_gen_from___b5:
|
|
// [58] phi lin16u_gen::lintab#6 = main::lintab3 [phi:main::@5->lin16u_gen#0] -- pwuz1=pwuc1
|
|
lda #<lintab3
|
|
sta.z lin16u_gen.lintab
|
|
lda #>lintab3
|
|
sta.z lin16u_gen.lintab+1
|
|
// [58] phi lin16u_gen::min#3 = 0 [phi:main::@5->lin16u_gen#1] -- vwuz1=vbuc1
|
|
lda #<0
|
|
sta.z lin16u_gen.min
|
|
lda #>0
|
|
sta.z lin16u_gen.min+1
|
|
// [58] phi lin16u_gen::max#3 = $6488 [phi:main::@5->lin16u_gen#2] -- vwuz1=vwuc1
|
|
lda #<$6488
|
|
sta.z lin16u_gen.max
|
|
lda #>$6488
|
|
sta.z lin16u_gen.max+1
|
|
jsr lin16u_gen
|
|
// [6] phi from main::@5 to main::@6 [phi:main::@5->main::@6]
|
|
__b6_from___b5:
|
|
jmp __b6
|
|
// main::@6
|
|
__b6:
|
|
// [7] call print_cls
|
|
// [78] phi from main::@6 to print_cls [phi:main::@6->print_cls]
|
|
print_cls_from___b6:
|
|
jsr print_cls
|
|
// [8] phi from main::@6 to main::@7 [phi:main::@6->main::@7]
|
|
__b7_from___b6:
|
|
jmp __b7
|
|
// main::@7
|
|
__b7:
|
|
// [9] call print_str
|
|
// [81] phi from main::@7 to print_str [phi:main::@7->print_str]
|
|
print_str_from___b7:
|
|
// [81] phi print_char_cursor#89 = print_screen#0 [phi:main::@7->print_str#0] -- pbuz1=pbuc1
|
|
lda #<print_screen
|
|
sta.z print_char_cursor
|
|
lda #>print_screen
|
|
sta.z print_char_cursor+1
|
|
// [81] phi print_str::str#13 = main::str [phi:main::@7->print_str#1] -- pbuz1=pbuc1
|
|
lda #<str
|
|
sta.z print_str.str
|
|
lda #>str
|
|
sta.z print_str.str+1
|
|
jsr print_str
|
|
// [10] phi from main::@7 to main::@8 [phi:main::@7->main::@8]
|
|
__b8_from___b7:
|
|
jmp __b8
|
|
// main::@8
|
|
__b8:
|
|
// [11] call print_uint
|
|
// [88] phi from main::@8 to print_uint [phi:main::@8->print_uint]
|
|
print_uint_from___b8:
|
|
// [88] phi print_uint::w#10 = $22d [phi:main::@8->print_uint#0] -- vwuz1=vwuc1
|
|
lda #<$22d
|
|
sta.z print_uint.w
|
|
lda #>$22d
|
|
sta.z print_uint.w+1
|
|
jsr print_uint
|
|
// [12] phi from main::@8 to main::@9 [phi:main::@8->main::@9]
|
|
__b9_from___b8:
|
|
jmp __b9
|
|
// main::@9
|
|
__b9:
|
|
// [13] call print_str
|
|
// [81] phi from main::@9 to print_str [phi:main::@9->print_str]
|
|
print_str_from___b9:
|
|
// [81] phi print_char_cursor#89 = print_char_cursor#10 [phi:main::@9->print_str#0] -- register_copy
|
|
// [81] phi print_str::str#13 = main::str1 [phi:main::@9->print_str#1] -- pbuz1=pbuc1
|
|
lda #<str1
|
|
sta.z print_str.str
|
|
lda #>str1
|
|
sta.z print_str.str+1
|
|
jsr print_str
|
|
// [14] phi from main::@9 to main::@10 [phi:main::@9->main::@10]
|
|
__b10_from___b9:
|
|
jmp __b10
|
|
// main::@10
|
|
__b10:
|
|
// [15] call print_uint
|
|
// [88] phi from main::@10 to print_uint [phi:main::@10->print_uint]
|
|
print_uint_from___b10:
|
|
// [88] phi print_uint::w#10 = $79cb [phi:main::@10->print_uint#0] -- vwuz1=vwuc1
|
|
lda #<$79cb
|
|
sta.z print_uint.w
|
|
lda #>$79cb
|
|
sta.z print_uint.w+1
|
|
jsr print_uint
|
|
// [16] phi from main::@10 to main::@11 [phi:main::@10->main::@11]
|
|
__b11_from___b10:
|
|
jmp __b11
|
|
// main::@11
|
|
__b11:
|
|
// [17] call print_str
|
|
// [81] phi from main::@11 to print_str [phi:main::@11->print_str]
|
|
print_str_from___b11:
|
|
// [81] phi print_char_cursor#89 = print_char_cursor#10 [phi:main::@11->print_str#0] -- register_copy
|
|
// [81] phi print_str::str#13 = main::str1 [phi:main::@11->print_str#1] -- pbuz1=pbuc1
|
|
lda #<str1
|
|
sta.z print_str.str
|
|
lda #>str1
|
|
sta.z print_str.str+1
|
|
jsr print_str
|
|
// [18] phi from main::@11 to main::@12 [phi:main::@11->main::@12]
|
|
__b12_from___b11:
|
|
jmp __b12
|
|
// main::@12
|
|
__b12:
|
|
// [19] call print_uint
|
|
// [88] phi from main::@12 to print_uint [phi:main::@12->print_uint]
|
|
print_uint_from___b12:
|
|
// [88] phi print_uint::w#10 = 0 [phi:main::@12->print_uint#0] -- vwuz1=vbuc1
|
|
lda #<0
|
|
sta.z print_uint.w
|
|
lda #>0
|
|
sta.z print_uint.w+1
|
|
jsr print_uint
|
|
// [20] phi from main::@12 to main::@13 [phi:main::@12->main::@13]
|
|
__b13_from___b12:
|
|
jmp __b13
|
|
// main::@13
|
|
__b13:
|
|
// [21] call print_ln
|
|
// [94] phi from main::@13 to print_ln [phi:main::@13->print_ln]
|
|
print_ln_from___b13:
|
|
// [94] phi print_line_cursor#23 = print_screen#0 [phi:main::@13->print_ln#0] -- pbuz1=pbuc1
|
|
lda #<print_screen
|
|
sta.z print_line_cursor
|
|
lda #>print_screen
|
|
sta.z print_line_cursor+1
|
|
jsr print_ln
|
|
// [22] phi from main::@13 to main::@1 [phi:main::@13->main::@1]
|
|
__b1_from___b13:
|
|
// [22] phi main::i#10 = 0 [phi:main::@13->main::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z i
|
|
jmp __b1
|
|
// main::@1
|
|
__b1:
|
|
// [23] if(main::i#10<$14) goto main::@2 -- vbuz1_lt_vbuc1_then_la1
|
|
lda.z i
|
|
cmp #$14
|
|
bcc __b2
|
|
jmp __b3
|
|
// main::@3
|
|
__b3:
|
|
// [24] print_char_cursor#100 = print_line_cursor#0 -- pbuz1=pbuz2
|
|
lda.z print_line_cursor
|
|
sta.z print_char_cursor
|
|
lda.z print_line_cursor+1
|
|
sta.z print_char_cursor+1
|
|
// [25] call print_str
|
|
// [81] phi from main::@3 to print_str [phi:main::@3->print_str]
|
|
print_str_from___b3:
|
|
// [81] phi print_char_cursor#89 = print_char_cursor#100 [phi:main::@3->print_str#0] -- register_copy
|
|
// [81] phi print_str::str#13 = main::str [phi:main::@3->print_str#1] -- pbuz1=pbuc1
|
|
lda #<str
|
|
sta.z print_str.str
|
|
lda #>str
|
|
sta.z print_str.str+1
|
|
jsr print_str
|
|
// [26] phi from main::@3 to main::@22 [phi:main::@3->main::@22]
|
|
__b22_from___b3:
|
|
jmp __b22
|
|
// main::@22
|
|
__b22:
|
|
// [27] call print_uint
|
|
// [88] phi from main::@22 to print_uint [phi:main::@22->print_uint]
|
|
print_uint_from___b22:
|
|
// [88] phi print_uint::w#10 = $7461 [phi:main::@22->print_uint#0] -- vwuz1=vwuc1
|
|
lda #<$7461
|
|
sta.z print_uint.w
|
|
lda #>$7461
|
|
sta.z print_uint.w+1
|
|
jsr print_uint
|
|
// [28] phi from main::@22 to main::@23 [phi:main::@22->main::@23]
|
|
__b23_from___b22:
|
|
jmp __b23
|
|
// main::@23
|
|
__b23:
|
|
// [29] call print_str
|
|
// [81] phi from main::@23 to print_str [phi:main::@23->print_str]
|
|
print_str_from___b23:
|
|
// [81] phi print_char_cursor#89 = print_char_cursor#10 [phi:main::@23->print_str#0] -- register_copy
|
|
// [81] phi print_str::str#13 = main::str1 [phi:main::@23->print_str#1] -- pbuz1=pbuc1
|
|
lda #<str1
|
|
sta.z print_str.str
|
|
lda #>str1
|
|
sta.z print_str.str+1
|
|
jsr print_str
|
|
// [30] phi from main::@23 to main::@24 [phi:main::@23->main::@24]
|
|
__b24_from___b23:
|
|
jmp __b24
|
|
// main::@24
|
|
__b24:
|
|
// [31] call print_uint
|
|
// [88] phi from main::@24 to print_uint [phi:main::@24->print_uint]
|
|
print_uint_from___b24:
|
|
// [88] phi print_uint::w#10 = $f781 [phi:main::@24->print_uint#0] -- vwuz1=vwuc1
|
|
lda #<$f781
|
|
sta.z print_uint.w
|
|
lda #>$f781
|
|
sta.z print_uint.w+1
|
|
jsr print_uint
|
|
// [32] phi from main::@24 to main::@25 [phi:main::@24->main::@25]
|
|
__b25_from___b24:
|
|
jmp __b25
|
|
// main::@25
|
|
__b25:
|
|
// [33] call print_str
|
|
// [81] phi from main::@25 to print_str [phi:main::@25->print_str]
|
|
print_str_from___b25:
|
|
// [81] phi print_char_cursor#89 = print_char_cursor#10 [phi:main::@25->print_str#0] -- register_copy
|
|
// [81] phi print_str::str#13 = main::str1 [phi:main::@25->print_str#1] -- pbuz1=pbuc1
|
|
lda #<str1
|
|
sta.z print_str.str
|
|
lda #>str1
|
|
sta.z print_str.str+1
|
|
jsr print_str
|
|
// [34] phi from main::@25 to main::@26 [phi:main::@25->main::@26]
|
|
__b26_from___b25:
|
|
jmp __b26
|
|
// main::@26
|
|
__b26:
|
|
// [35] call print_uint
|
|
// [88] phi from main::@26 to print_uint [phi:main::@26->print_uint]
|
|
print_uint_from___b26:
|
|
// [88] phi print_uint::w#10 = $6488 [phi:main::@26->print_uint#0] -- vwuz1=vwuc1
|
|
lda #<$6488
|
|
sta.z print_uint.w
|
|
lda #>$6488
|
|
sta.z print_uint.w+1
|
|
jsr print_uint
|
|
// [36] phi from main::@26 to main::@27 [phi:main::@26->main::@27]
|
|
__b27_from___b26:
|
|
jmp __b27
|
|
// main::@27
|
|
__b27:
|
|
// [37] call print_ln
|
|
// [94] phi from main::@27 to print_ln [phi:main::@27->print_ln]
|
|
print_ln_from___b27:
|
|
// [94] phi print_line_cursor#23 = print_line_cursor#0 [phi:main::@27->print_ln#0] -- register_copy
|
|
jsr print_ln
|
|
jmp __breturn
|
|
// main::@return
|
|
__breturn:
|
|
// [38] return
|
|
rts
|
|
// main::@2
|
|
__b2:
|
|
// [39] print_uchar::b#2 = main::i#10 -- vbuxx=vbuz1
|
|
ldx.z i
|
|
// [40] print_char_cursor#104 = print_line_cursor#0 -- pbuz1=pbuz2
|
|
lda.z print_line_cursor
|
|
sta.z print_char_cursor
|
|
lda.z print_line_cursor+1
|
|
sta.z print_char_cursor+1
|
|
// [41] call print_uchar
|
|
// [99] phi from main::@2 to print_uchar [phi:main::@2->print_uchar]
|
|
print_uchar_from___b2:
|
|
// [99] phi print_char_cursor#84 = print_char_cursor#104 [phi:main::@2->print_uchar#0] -- register_copy
|
|
// [99] phi print_uchar::b#3 = print_uchar::b#2 [phi:main::@2->print_uchar#1] -- register_copy
|
|
jsr print_uchar
|
|
// [42] phi from main::@2 to main::@14 [phi:main::@2->main::@14]
|
|
__b14_from___b2:
|
|
jmp __b14
|
|
// main::@14
|
|
__b14:
|
|
// [43] call print_str
|
|
// [81] phi from main::@14 to print_str [phi:main::@14->print_str]
|
|
print_str_from___b14:
|
|
// [81] phi print_char_cursor#89 = print_char_cursor#10 [phi:main::@14->print_str#0] -- register_copy
|
|
// [81] phi print_str::str#13 = main::str1 [phi:main::@14->print_str#1] -- pbuz1=pbuc1
|
|
lda #<str1
|
|
sta.z print_str.str
|
|
lda #>str1
|
|
sta.z print_str.str+1
|
|
jsr print_str
|
|
jmp __b15
|
|
// main::@15
|
|
__b15:
|
|
// [44] main::$28 = main::i#10 << 1 -- vbuz1=vbuz2_rol_1
|
|
lda.z i
|
|
asl
|
|
sta.z __28
|
|
// [45] print_uint::w#3 = main::lintab1[main::$28] -- vwuz1=pwuc1_derefidx_vbuz2
|
|
ldy.z __28
|
|
lda lintab1,y
|
|
sta.z print_uint.w
|
|
lda lintab1+1,y
|
|
sta.z print_uint.w+1
|
|
// [46] call print_uint
|
|
// [88] phi from main::@15 to print_uint [phi:main::@15->print_uint]
|
|
print_uint_from___b15:
|
|
// [88] phi print_uint::w#10 = print_uint::w#3 [phi:main::@15->print_uint#0] -- register_copy
|
|
jsr print_uint
|
|
// [47] phi from main::@15 to main::@16 [phi:main::@15->main::@16]
|
|
__b16_from___b15:
|
|
jmp __b16
|
|
// main::@16
|
|
__b16:
|
|
// [48] call print_str
|
|
// [81] phi from main::@16 to print_str [phi:main::@16->print_str]
|
|
print_str_from___b16:
|
|
// [81] phi print_char_cursor#89 = print_char_cursor#10 [phi:main::@16->print_str#0] -- register_copy
|
|
// [81] phi print_str::str#13 = main::str1 [phi:main::@16->print_str#1] -- pbuz1=pbuc1
|
|
lda #<str1
|
|
sta.z print_str.str
|
|
lda #>str1
|
|
sta.z print_str.str+1
|
|
jsr print_str
|
|
jmp __b17
|
|
// main::@17
|
|
__b17:
|
|
// [49] print_uint::w#4 = main::lintab2[main::$28] -- vwuz1=pwuc1_derefidx_vbuz2
|
|
ldy.z __28
|
|
lda lintab2,y
|
|
sta.z print_uint.w
|
|
lda lintab2+1,y
|
|
sta.z print_uint.w+1
|
|
// [50] call print_uint
|
|
// [88] phi from main::@17 to print_uint [phi:main::@17->print_uint]
|
|
print_uint_from___b17:
|
|
// [88] phi print_uint::w#10 = print_uint::w#4 [phi:main::@17->print_uint#0] -- register_copy
|
|
jsr print_uint
|
|
// [51] phi from main::@17 to main::@18 [phi:main::@17->main::@18]
|
|
__b18_from___b17:
|
|
jmp __b18
|
|
// main::@18
|
|
__b18:
|
|
// [52] call print_str
|
|
// [81] phi from main::@18 to print_str [phi:main::@18->print_str]
|
|
print_str_from___b18:
|
|
// [81] phi print_char_cursor#89 = print_char_cursor#10 [phi:main::@18->print_str#0] -- register_copy
|
|
// [81] phi print_str::str#13 = main::str1 [phi:main::@18->print_str#1] -- pbuz1=pbuc1
|
|
lda #<str1
|
|
sta.z print_str.str
|
|
lda #>str1
|
|
sta.z print_str.str+1
|
|
jsr print_str
|
|
jmp __b19
|
|
// main::@19
|
|
__b19:
|
|
// [53] print_uint::w#5 = main::lintab3[main::$28] -- vwuz1=pwuc1_derefidx_vbuz2
|
|
ldy.z __28
|
|
lda lintab3,y
|
|
sta.z print_uint.w
|
|
lda lintab3+1,y
|
|
sta.z print_uint.w+1
|
|
// [54] call print_uint
|
|
// [88] phi from main::@19 to print_uint [phi:main::@19->print_uint]
|
|
print_uint_from___b19:
|
|
// [88] phi print_uint::w#10 = print_uint::w#5 [phi:main::@19->print_uint#0] -- register_copy
|
|
jsr print_uint
|
|
// [55] phi from main::@19 to main::@20 [phi:main::@19->main::@20]
|
|
__b20_from___b19:
|
|
jmp __b20
|
|
// main::@20
|
|
__b20:
|
|
// [56] call print_ln
|
|
// [94] phi from main::@20 to print_ln [phi:main::@20->print_ln]
|
|
print_ln_from___b20:
|
|
// [94] phi print_line_cursor#23 = print_line_cursor#0 [phi:main::@20->print_ln#0] -- register_copy
|
|
jsr print_ln
|
|
jmp __b21
|
|
// main::@21
|
|
__b21:
|
|
// [57] main::i#1 = ++ main::i#10 -- vbuz1=_inc_vbuz1
|
|
inc.z i
|
|
// [22] phi from main::@21 to main::@1 [phi:main::@21->main::@1]
|
|
__b1_from___b21:
|
|
// [22] phi main::i#10 = main::i#1 [phi:main::@21->main::@1#0] -- register_copy
|
|
jmp __b1
|
|
.segment Data
|
|
lintab1: .fill 2*$14, 0
|
|
lintab2: .fill 2*$14, 0
|
|
lintab3: .fill 2*$14, 0
|
|
str: .text " "
|
|
.byte 0
|
|
str1: .text " "
|
|
.byte 0
|
|
}
|
|
.segment Code
|
|
// lin16u_gen
|
|
// Generate word linear table
|
|
// lintab - the table to generate into
|
|
// length - the number of points in a total sine wavelength (the size of the table)
|
|
// void lin16u_gen(__zp($10) unsigned int min, __zp(4) unsigned int max, __zp($a) unsigned int *lintab, unsigned int length)
|
|
lin16u_gen: {
|
|
.label __8 = 8
|
|
.label ampl = 4
|
|
.label stepi = $18
|
|
.label stepf = 2
|
|
.label step = $13
|
|
.label val = $c
|
|
.label lintab = $a
|
|
.label i = 6
|
|
.label max = 4
|
|
.label min = $10
|
|
// [59] lin16u_gen::ampl#0 = lin16u_gen::max#3 - lin16u_gen::min#3 -- vwuz1=vwuz1_minus_vwuz2
|
|
lda.z ampl
|
|
sec
|
|
sbc.z min
|
|
sta.z ampl
|
|
lda.z ampl+1
|
|
sbc.z min+1
|
|
sta.z ampl+1
|
|
// [60] divr16u::dividend#1 = lin16u_gen::ampl#0
|
|
// [61] call divr16u
|
|
// [107] phi from lin16u_gen to divr16u [phi:lin16u_gen->divr16u]
|
|
divr16u_from_lin16u_gen:
|
|
// [107] phi divr16u::dividend#5 = divr16u::dividend#1 [phi:lin16u_gen->divr16u#0] -- register_copy
|
|
// [107] phi divr16u::rem#10 = 0 [phi:lin16u_gen->divr16u#1] -- vwuz1=vbuc1
|
|
lda #<0
|
|
sta.z divr16u.rem
|
|
lda #>0
|
|
sta.z divr16u.rem+1
|
|
jsr divr16u
|
|
// [62] divr16u::return#2 = divr16u::return#0
|
|
jmp __b3
|
|
// lin16u_gen::@3
|
|
__b3:
|
|
// [63] lin16u_gen::stepi#0 = divr16u::return#2 -- vwuz1=vwuz2
|
|
lda.z divr16u.return
|
|
sta.z stepi
|
|
lda.z divr16u.return+1
|
|
sta.z stepi+1
|
|
// [64] divr16u::rem#4 = rem16u#0
|
|
// [65] call divr16u
|
|
// [107] phi from lin16u_gen::@3 to divr16u [phi:lin16u_gen::@3->divr16u]
|
|
divr16u_from___b3:
|
|
// [107] phi divr16u::dividend#5 = 0 [phi:lin16u_gen::@3->divr16u#0] -- vwuz1=vbuc1
|
|
lda #<0
|
|
sta.z divr16u.dividend
|
|
lda #>0
|
|
sta.z divr16u.dividend+1
|
|
// [107] phi divr16u::rem#10 = divr16u::rem#4 [phi:lin16u_gen::@3->divr16u#1] -- register_copy
|
|
jsr divr16u
|
|
// [66] divr16u::return#3 = divr16u::return#0
|
|
jmp __b4
|
|
// lin16u_gen::@4
|
|
__b4:
|
|
// [67] lin16u_gen::stepf#0 = divr16u::return#3
|
|
// [68] lin16u_gen::step#0 = lin16u_gen::stepi#0 dw= lin16u_gen::stepf#0 -- vduz1=vwuz2_dword_vwuz3
|
|
lda.z stepi
|
|
sta.z step+2
|
|
lda.z stepi+1
|
|
sta.z step+3
|
|
lda.z stepf
|
|
sta.z step
|
|
lda.z stepf+1
|
|
sta.z step+1
|
|
// [69] lin16u_gen::val#0 = lin16u_gen::min#3 dw= 0 -- vduz1=vwuz2_dword_vbuc1
|
|
lda.z min
|
|
sta.z val+2
|
|
lda.z min+1
|
|
sta.z val+3
|
|
lda #0
|
|
sta.z val
|
|
lda #0
|
|
sta.z val+1
|
|
// [70] phi from lin16u_gen::@4 to lin16u_gen::@1 [phi:lin16u_gen::@4->lin16u_gen::@1]
|
|
__b1_from___b4:
|
|
// [70] phi lin16u_gen::lintab#4 = lin16u_gen::lintab#6 [phi:lin16u_gen::@4->lin16u_gen::@1#0] -- register_copy
|
|
// [70] phi lin16u_gen::val#2 = lin16u_gen::val#0 [phi:lin16u_gen::@4->lin16u_gen::@1#1] -- register_copy
|
|
// [70] phi lin16u_gen::i#2 = 0 [phi:lin16u_gen::@4->lin16u_gen::@1#2] -- vwuz1=vwuc1
|
|
lda #<0
|
|
sta.z i
|
|
lda #>0
|
|
sta.z i+1
|
|
jmp __b1
|
|
// lin16u_gen::@1
|
|
__b1:
|
|
// [71] if(lin16u_gen::i#2<$14) goto lin16u_gen::@2 -- vwuz1_lt_vbuc1_then_la1
|
|
lda.z i+1
|
|
bne !+
|
|
lda.z i
|
|
cmp #$14
|
|
bcc __b2
|
|
!:
|
|
jmp __breturn
|
|
// lin16u_gen::@return
|
|
__breturn:
|
|
// [72] return
|
|
rts
|
|
// lin16u_gen::@2
|
|
__b2:
|
|
// [73] lin16u_gen::$8 = word1 lin16u_gen::val#2 -- vwuz1=_word1_vduz2
|
|
lda.z val+2
|
|
sta.z __8
|
|
lda.z val+3
|
|
sta.z __8+1
|
|
// [74] *lin16u_gen::lintab#4 = lin16u_gen::$8 -- _deref_pwuz1=vwuz2
|
|
ldy #0
|
|
lda.z __8
|
|
sta (lintab),y
|
|
iny
|
|
lda.z __8+1
|
|
sta (lintab),y
|
|
// [75] lin16u_gen::val#1 = lin16u_gen::val#2 + lin16u_gen::step#0 -- vduz1=vduz1_plus_vduz2
|
|
clc
|
|
lda.z val
|
|
adc.z step
|
|
sta.z val
|
|
lda.z val+1
|
|
adc.z step+1
|
|
sta.z val+1
|
|
lda.z val+2
|
|
adc.z step+2
|
|
sta.z val+2
|
|
lda.z val+3
|
|
adc.z step+3
|
|
sta.z val+3
|
|
// [76] lin16u_gen::lintab#3 = lin16u_gen::lintab#4 + SIZEOF_UNSIGNED_INT -- pwuz1=pwuz1_plus_vbuc1
|
|
lda #SIZEOF_UNSIGNED_INT
|
|
clc
|
|
adc.z lintab
|
|
sta.z lintab
|
|
bcc !+
|
|
inc.z lintab+1
|
|
!:
|
|
// [77] lin16u_gen::i#1 = ++ lin16u_gen::i#2 -- vwuz1=_inc_vwuz1
|
|
inc.z i
|
|
bne !+
|
|
inc.z i+1
|
|
!:
|
|
// [70] phi from lin16u_gen::@2 to lin16u_gen::@1 [phi:lin16u_gen::@2->lin16u_gen::@1]
|
|
__b1_from___b2:
|
|
// [70] phi lin16u_gen::lintab#4 = lin16u_gen::lintab#3 [phi:lin16u_gen::@2->lin16u_gen::@1#0] -- register_copy
|
|
// [70] phi lin16u_gen::val#2 = lin16u_gen::val#1 [phi:lin16u_gen::@2->lin16u_gen::@1#1] -- register_copy
|
|
// [70] phi lin16u_gen::i#2 = lin16u_gen::i#1 [phi:lin16u_gen::@2->lin16u_gen::@1#2] -- register_copy
|
|
jmp __b1
|
|
}
|
|
// print_cls
|
|
// Clear the screen. Also resets current line/char cursor.
|
|
print_cls: {
|
|
// [79] call memset
|
|
// [125] phi from print_cls to memset [phi:print_cls->memset]
|
|
memset_from_print_cls:
|
|
jsr memset
|
|
jmp __breturn
|
|
// print_cls::@return
|
|
__breturn:
|
|
// [80] return
|
|
rts
|
|
}
|
|
// print_str
|
|
// Print a zero-terminated string
|
|
// void print_str(__zp(4) char *str)
|
|
print_str: {
|
|
.label str = 4
|
|
// [82] phi from print_str print_str::@3 to print_str::@1 [phi:print_str/print_str::@3->print_str::@1]
|
|
__b1_from_print_str:
|
|
__b1_from___b3:
|
|
// [82] phi print_char_cursor#1 = print_char_cursor#89 [phi:print_str/print_str::@3->print_str::@1#0] -- register_copy
|
|
// [82] phi print_str::str#10 = print_str::str#13 [phi:print_str/print_str::@3->print_str::@1#1] -- register_copy
|
|
jmp __b1
|
|
// print_str::@1
|
|
__b1:
|
|
// [83] if(0!=*print_str::str#10) goto print_str::@2 -- 0_neq__deref_pbuz1_then_la1
|
|
ldy #0
|
|
lda (str),y
|
|
cmp #0
|
|
bne __b2
|
|
jmp __breturn
|
|
// print_str::@return
|
|
__breturn:
|
|
// [84] return
|
|
rts
|
|
// print_str::@2
|
|
__b2:
|
|
// [85] print_char::ch#0 = *print_str::str#10 -- vbuaa=_deref_pbuz1
|
|
ldy #0
|
|
lda (str),y
|
|
// [86] call print_char
|
|
// [131] phi from print_str::@2 to print_char [phi:print_str::@2->print_char]
|
|
print_char_from___b2:
|
|
// [131] phi print_char_cursor#51 = print_char_cursor#1 [phi:print_str::@2->print_char#0] -- register_copy
|
|
// [131] phi print_char::ch#3 = print_char::ch#0 [phi:print_str::@2->print_char#1] -- register_copy
|
|
jsr print_char
|
|
jmp __b3
|
|
// print_str::@3
|
|
__b3:
|
|
// [87] print_str::str#0 = ++ print_str::str#10 -- pbuz1=_inc_pbuz1
|
|
inc.z str
|
|
bne !+
|
|
inc.z str+1
|
|
!:
|
|
jmp __b1_from___b3
|
|
}
|
|
// print_uint
|
|
// Print a unsigned int as HEX
|
|
// void print_uint(__zp($10) unsigned int w)
|
|
print_uint: {
|
|
.label w = $10
|
|
// [89] print_uchar::b#0 = byte1 print_uint::w#10 -- vbuxx=_byte1_vwuz1
|
|
ldx.z w+1
|
|
// [90] call print_uchar
|
|
// [99] phi from print_uint to print_uchar [phi:print_uint->print_uchar]
|
|
print_uchar_from_print_uint:
|
|
// [99] phi print_char_cursor#84 = print_char_cursor#1 [phi:print_uint->print_uchar#0] -- register_copy
|
|
// [99] phi print_uchar::b#3 = print_uchar::b#0 [phi:print_uint->print_uchar#1] -- register_copy
|
|
jsr print_uchar
|
|
jmp __b1
|
|
// print_uint::@1
|
|
__b1:
|
|
// [91] print_uchar::b#1 = byte0 print_uint::w#10 -- vbuxx=_byte0_vwuz1
|
|
ldx.z w
|
|
// [92] call print_uchar
|
|
// [99] phi from print_uint::@1 to print_uchar [phi:print_uint::@1->print_uchar]
|
|
print_uchar_from___b1:
|
|
// [99] phi print_char_cursor#84 = print_char_cursor#10 [phi:print_uint::@1->print_uchar#0] -- register_copy
|
|
// [99] phi print_uchar::b#3 = print_uchar::b#1 [phi:print_uint::@1->print_uchar#1] -- register_copy
|
|
jsr print_uchar
|
|
jmp __breturn
|
|
// print_uint::@return
|
|
__breturn:
|
|
// [93] return
|
|
rts
|
|
}
|
|
// print_ln
|
|
// Print a newline
|
|
print_ln: {
|
|
// [95] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1]
|
|
__b1_from_print_ln:
|
|
__b1_from___b1:
|
|
// [95] phi print_line_cursor#12 = print_line_cursor#23 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy
|
|
jmp __b1
|
|
// print_ln::@1
|
|
__b1:
|
|
// [96] print_line_cursor#0 = print_line_cursor#12 + $28 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #$28
|
|
clc
|
|
adc.z print_line_cursor
|
|
sta.z print_line_cursor
|
|
bcc !+
|
|
inc.z print_line_cursor+1
|
|
!:
|
|
// [97] if(print_line_cursor#0<print_char_cursor#10) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1
|
|
lda.z print_line_cursor+1
|
|
cmp.z print_char_cursor+1
|
|
bcc __b1_from___b1
|
|
bne !+
|
|
lda.z print_line_cursor
|
|
cmp.z print_char_cursor
|
|
bcc __b1_from___b1
|
|
!:
|
|
jmp __breturn
|
|
// print_ln::@return
|
|
__breturn:
|
|
// [98] return
|
|
rts
|
|
}
|
|
// print_uchar
|
|
// Print a char as HEX
|
|
// void print_uchar(__register(X) char b)
|
|
print_uchar: {
|
|
// [100] print_uchar::$0 = print_uchar::b#3 >> 4 -- vbuaa=vbuxx_ror_4
|
|
txa
|
|
lsr
|
|
lsr
|
|
lsr
|
|
lsr
|
|
// [101] print_char::ch#1 = print_hextab[print_uchar::$0] -- vbuaa=pbuc1_derefidx_vbuaa
|
|
tay
|
|
lda print_hextab,y
|
|
// [102] call print_char
|
|
// Table of hexadecimal digits
|
|
// [131] phi from print_uchar to print_char [phi:print_uchar->print_char]
|
|
print_char_from_print_uchar:
|
|
// [131] phi print_char_cursor#51 = print_char_cursor#84 [phi:print_uchar->print_char#0] -- register_copy
|
|
// [131] phi print_char::ch#3 = print_char::ch#1 [phi:print_uchar->print_char#1] -- register_copy
|
|
jsr print_char
|
|
jmp __b1
|
|
// print_uchar::@1
|
|
__b1:
|
|
// [103] print_uchar::$2 = print_uchar::b#3 & $f -- vbuxx=vbuxx_band_vbuc1
|
|
lda #$f
|
|
axs #0
|
|
// [104] print_char::ch#2 = print_hextab[print_uchar::$2] -- vbuaa=pbuc1_derefidx_vbuxx
|
|
lda print_hextab,x
|
|
// [105] call print_char
|
|
// [131] phi from print_uchar::@1 to print_char [phi:print_uchar::@1->print_char]
|
|
print_char_from___b1:
|
|
// [131] phi print_char_cursor#51 = print_char_cursor#10 [phi:print_uchar::@1->print_char#0] -- register_copy
|
|
// [131] phi print_char::ch#3 = print_char::ch#2 [phi:print_uchar::@1->print_char#1] -- register_copy
|
|
jsr print_char
|
|
jmp __breturn
|
|
// print_uchar::@return
|
|
__breturn:
|
|
// [106] return
|
|
rts
|
|
}
|
|
// divr16u
|
|
// Performs division on two 16 bit unsigned ints and an initial remainder
|
|
// Returns the quotient dividend/divisor.
|
|
// The final remainder will be set into the global variable rem16u
|
|
// Implemented using simple binary division
|
|
// __zp(2) unsigned int divr16u(__zp(4) unsigned int dividend, unsigned int divisor, __zp(8) unsigned int rem)
|
|
divr16u: {
|
|
.label rem = 8
|
|
.label dividend = 4
|
|
.label quotient = 2
|
|
.label return = 2
|
|
// [108] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1]
|
|
__b1_from_divr16u:
|
|
// [108] phi divr16u::i#2 = 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
// [108] phi divr16u::quotient#3 = 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vwuc1
|
|
lda #<0
|
|
sta.z quotient
|
|
lda #>0
|
|
sta.z quotient+1
|
|
// [108] phi divr16u::dividend#3 = divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy
|
|
// [108] phi divr16u::rem#5 = divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy
|
|
jmp __b1
|
|
// [108] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1]
|
|
__b1_from___b3:
|
|
// [108] phi divr16u::i#2 = divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy
|
|
// [108] phi divr16u::quotient#3 = divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy
|
|
// [108] phi divr16u::dividend#3 = divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy
|
|
// [108] phi divr16u::rem#5 = divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy
|
|
jmp __b1
|
|
// divr16u::@1
|
|
__b1:
|
|
// [109] divr16u::rem#0 = divr16u::rem#5 << 1 -- vwuz1=vwuz1_rol_1
|
|
asl.z rem
|
|
rol.z rem+1
|
|
// [110] divr16u::$1 = byte1 divr16u::dividend#3 -- vbuaa=_byte1_vwuz1
|
|
lda.z dividend+1
|
|
// [111] divr16u::$2 = divr16u::$1 & $80 -- vbuaa=vbuaa_band_vbuc1
|
|
and #$80
|
|
// [112] if(divr16u::$2==0) goto divr16u::@2 -- vbuaa_eq_0_then_la1
|
|
cmp #0
|
|
beq __b2_from___b1
|
|
jmp __b4
|
|
// divr16u::@4
|
|
__b4:
|
|
// [113] divr16u::rem#1 = divr16u::rem#0 | 1 -- vwuz1=vwuz1_bor_vbuc1
|
|
lda #1
|
|
ora.z rem
|
|
sta.z rem
|
|
// [114] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2]
|
|
__b2_from___b1:
|
|
__b2_from___b4:
|
|
// [114] phi divr16u::rem#6 = divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy
|
|
jmp __b2
|
|
// divr16u::@2
|
|
__b2:
|
|
// [115] divr16u::dividend#0 = divr16u::dividend#3 << 1 -- vwuz1=vwuz1_rol_1
|
|
asl.z dividend
|
|
rol.z dividend+1
|
|
// [116] divr16u::quotient#1 = divr16u::quotient#3 << 1 -- vwuz1=vwuz1_rol_1
|
|
asl.z quotient
|
|
rol.z quotient+1
|
|
// [117] if(divr16u::rem#6<$14-1) goto divr16u::@3 -- vwuz1_lt_vbuc1_then_la1
|
|
lda.z rem+1
|
|
bne !+
|
|
lda.z rem
|
|
cmp #$14-1
|
|
bcc __b3_from___b2
|
|
!:
|
|
jmp __b5
|
|
// divr16u::@5
|
|
__b5:
|
|
// [118] divr16u::quotient#2 = ++ divr16u::quotient#1 -- vwuz1=_inc_vwuz1
|
|
inc.z quotient
|
|
bne !+
|
|
inc.z quotient+1
|
|
!:
|
|
// [119] divr16u::rem#2 = divr16u::rem#6 - $14-1 -- vwuz1=vwuz1_minus_vbuc1
|
|
sec
|
|
lda.z rem
|
|
sbc #$14-1
|
|
sta.z rem
|
|
lda.z rem+1
|
|
sbc #0
|
|
sta.z rem+1
|
|
// [120] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3]
|
|
__b3_from___b2:
|
|
__b3_from___b5:
|
|
// [120] phi divr16u::return#0 = divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy
|
|
// [120] phi divr16u::rem#11 = divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy
|
|
jmp __b3
|
|
// divr16u::@3
|
|
__b3:
|
|
// [121] divr16u::i#1 = ++ divr16u::i#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
// [122] if(divr16u::i#1!=$10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1
|
|
cpx #$10
|
|
bne __b1_from___b3
|
|
jmp __b6
|
|
// divr16u::@6
|
|
__b6:
|
|
// [123] rem16u#0 = divr16u::rem#11
|
|
jmp __breturn
|
|
// divr16u::@return
|
|
__breturn:
|
|
// [124] return
|
|
rts
|
|
}
|
|
// memset
|
|
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
|
// void * memset(void *str, char c, unsigned int num)
|
|
memset: {
|
|
.const c = ' '
|
|
.const num = $3e8
|
|
.label str = print_screen
|
|
.label end = str+num
|
|
.label dst = $a
|
|
// [126] phi from memset to memset::@1 [phi:memset->memset::@1]
|
|
__b1_from_memset:
|
|
// [126] phi memset::dst#2 = (char *)memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1
|
|
lda #<str
|
|
sta.z dst
|
|
lda #>str
|
|
sta.z dst+1
|
|
jmp __b1
|
|
// memset::@1
|
|
__b1:
|
|
// [127] if(memset::dst#2!=memset::end#0) goto memset::@2 -- pbuz1_neq_pbuc1_then_la1
|
|
lda.z dst+1
|
|
cmp #>end
|
|
bne __b2
|
|
lda.z dst
|
|
cmp #<end
|
|
bne __b2
|
|
jmp __breturn
|
|
// memset::@return
|
|
__breturn:
|
|
// [128] return
|
|
rts
|
|
// memset::@2
|
|
__b2:
|
|
// [129] *memset::dst#2 = memset::c#0 -- _deref_pbuz1=vbuc1
|
|
lda #c
|
|
ldy #0
|
|
sta (dst),y
|
|
// [130] memset::dst#1 = ++ memset::dst#2 -- pbuz1=_inc_pbuz1
|
|
inc.z dst
|
|
bne !+
|
|
inc.z dst+1
|
|
!:
|
|
// [126] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1]
|
|
__b1_from___b2:
|
|
// [126] phi memset::dst#2 = memset::dst#1 [phi:memset::@2->memset::@1#0] -- register_copy
|
|
jmp __b1
|
|
}
|
|
// print_char
|
|
// Print a single char
|
|
// void print_char(__register(A) char ch)
|
|
print_char: {
|
|
// [132] *print_char_cursor#51 = print_char::ch#3 -- _deref_pbuz1=vbuaa
|
|
ldy #0
|
|
sta (print_char_cursor),y
|
|
// [133] print_char_cursor#10 = ++ print_char_cursor#51 -- pbuz1=_inc_pbuz1
|
|
inc.z print_char_cursor
|
|
bne !+
|
|
inc.z print_char_cursor+1
|
|
!:
|
|
jmp __breturn
|
|
// print_char::@return
|
|
__breturn:
|
|
// [134] return
|
|
rts
|
|
}
|
|
// File Data
|
|
.segment Data
|
|
print_hextab: .text "0123456789abcdef"
|
|
|
|
ASSEMBLER OPTIMIZATIONS
|
|
Removing instruction jmp __b4
|
|
Removing instruction jmp __b5
|
|
Removing instruction jmp __b6
|
|
Removing instruction jmp __b7
|
|
Removing instruction jmp __b8
|
|
Removing instruction jmp __b9
|
|
Removing instruction jmp __b10
|
|
Removing instruction jmp __b11
|
|
Removing instruction jmp __b12
|
|
Removing instruction jmp __b13
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b22
|
|
Removing instruction jmp __b23
|
|
Removing instruction jmp __b24
|
|
Removing instruction jmp __b25
|
|
Removing instruction jmp __b26
|
|
Removing instruction jmp __b27
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b14
|
|
Removing instruction jmp __b15
|
|
Removing instruction jmp __b16
|
|
Removing instruction jmp __b17
|
|
Removing instruction jmp __b18
|
|
Removing instruction jmp __b19
|
|
Removing instruction jmp __b20
|
|
Removing instruction jmp __b21
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b4
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b4
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __b5
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b6
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __breturn
|
|
Succesful ASM optimization Pass5NextJumpElimination
|
|
Removing instruction lda #>0
|
|
Removing instruction lda #>0
|
|
Replacing instruction ldy.z __28 with TAY
|
|
Removing instruction lda #>0
|
|
Removing instruction lda #>0
|
|
Removing instruction lda #0
|
|
Removing instruction lda #>0
|
|
Replacing instruction lda #<0 with TXA
|
|
Removing instruction lda #>0
|
|
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
|
Replacing label __b1_from___b3 with __b1
|
|
Replacing label __b1_from___b1 with __b1
|
|
Replacing label __b1_from___b1 with __b1
|
|
Replacing label __b2_from___b1 with __b2
|
|
Replacing label __b3_from___b2 with __b3
|
|
Replacing label __b1_from___b3 with __b1
|
|
Removing instruction __b4_from_main:
|
|
Removing instruction lin16u_gen_from___b4:
|
|
Removing instruction __b5_from___b4:
|
|
Removing instruction lin16u_gen_from___b5:
|
|
Removing instruction __b6_from___b5:
|
|
Removing instruction print_cls_from___b6:
|
|
Removing instruction __b7_from___b6:
|
|
Removing instruction print_str_from___b7:
|
|
Removing instruction __b8_from___b7:
|
|
Removing instruction print_uint_from___b8:
|
|
Removing instruction __b9_from___b8:
|
|
Removing instruction print_str_from___b9:
|
|
Removing instruction __b10_from___b9:
|
|
Removing instruction print_uint_from___b10:
|
|
Removing instruction __b11_from___b10:
|
|
Removing instruction print_str_from___b11:
|
|
Removing instruction __b12_from___b11:
|
|
Removing instruction print_uint_from___b12:
|
|
Removing instruction __b13_from___b12:
|
|
Removing instruction print_ln_from___b13:
|
|
Removing instruction __b22_from___b3:
|
|
Removing instruction print_uint_from___b22:
|
|
Removing instruction __b23_from___b22:
|
|
Removing instruction print_str_from___b23:
|
|
Removing instruction __b24_from___b23:
|
|
Removing instruction print_uint_from___b24:
|
|
Removing instruction __b25_from___b24:
|
|
Removing instruction print_str_from___b25:
|
|
Removing instruction __b26_from___b25:
|
|
Removing instruction print_uint_from___b26:
|
|
Removing instruction __b27_from___b26:
|
|
Removing instruction print_ln_from___b27:
|
|
Removing instruction __b14_from___b2:
|
|
Removing instruction print_str_from___b14:
|
|
Removing instruction __b16_from___b15:
|
|
Removing instruction print_str_from___b16:
|
|
Removing instruction __b18_from___b17:
|
|
Removing instruction print_str_from___b18:
|
|
Removing instruction __b20_from___b19:
|
|
Removing instruction print_ln_from___b20:
|
|
Removing instruction __b1_from_print_str:
|
|
Removing instruction __b1_from___b3:
|
|
Removing instruction __b1_from_print_ln:
|
|
Removing instruction __b1_from___b1:
|
|
Removing instruction __b1_from___b3:
|
|
Removing instruction __b2_from___b1:
|
|
Removing instruction __b2_from___b4:
|
|
Removing instruction __b3_from___b2:
|
|
Removing instruction __b3_from___b5:
|
|
Removing instruction __breturn:
|
|
Succesful ASM optimization Pass5RedundantLabelElimination
|
|
Removing instruction lin16u_gen_from_main:
|
|
Removing instruction __b4:
|
|
Removing instruction __b5:
|
|
Removing instruction __b6:
|
|
Removing instruction __b7:
|
|
Removing instruction __b8:
|
|
Removing instruction __b9:
|
|
Removing instruction __b10:
|
|
Removing instruction __b11:
|
|
Removing instruction __b12:
|
|
Removing instruction __b13:
|
|
Removing instruction __b1_from___b13:
|
|
Removing instruction __b3:
|
|
Removing instruction print_str_from___b3:
|
|
Removing instruction __b22:
|
|
Removing instruction __b23:
|
|
Removing instruction __b24:
|
|
Removing instruction __b25:
|
|
Removing instruction __b26:
|
|
Removing instruction __b27:
|
|
Removing instruction __breturn:
|
|
Removing instruction print_uchar_from___b2:
|
|
Removing instruction __b14:
|
|
Removing instruction __b15:
|
|
Removing instruction print_uint_from___b15:
|
|
Removing instruction __b16:
|
|
Removing instruction __b17:
|
|
Removing instruction print_uint_from___b17:
|
|
Removing instruction __b18:
|
|
Removing instruction __b19:
|
|
Removing instruction print_uint_from___b19:
|
|
Removing instruction __b20:
|
|
Removing instruction __b21:
|
|
Removing instruction __b1_from___b21:
|
|
Removing instruction divr16u_from_lin16u_gen:
|
|
Removing instruction __b3:
|
|
Removing instruction divr16u_from___b3:
|
|
Removing instruction __b4:
|
|
Removing instruction __b1_from___b4:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b1_from___b2:
|
|
Removing instruction memset_from_print_cls:
|
|
Removing instruction __breturn:
|
|
Removing instruction __breturn:
|
|
Removing instruction print_char_from___b2:
|
|
Removing instruction __b3:
|
|
Removing instruction print_uchar_from_print_uint:
|
|
Removing instruction __b1:
|
|
Removing instruction print_uchar_from___b1:
|
|
Removing instruction __breturn:
|
|
Removing instruction __breturn:
|
|
Removing instruction print_char_from_print_uchar:
|
|
Removing instruction __b1:
|
|
Removing instruction print_char_from___b1:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b1_from_divr16u:
|
|
Removing instruction __b4:
|
|
Removing instruction __b5:
|
|
Removing instruction __b6:
|
|
Removing instruction __b1_from_memset:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b1_from___b2:
|
|
Removing instruction __breturn:
|
|
Succesful ASM optimization Pass5UnusedLabelElimination
|
|
Removing instruction jmp __b1
|
|
Succesful ASM optimization Pass5NextJumpElimination
|
|
Removing instruction lda #<0
|
|
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
|
|
|
FINAL SYMBOL TABLE
|
|
__constant char RADIX::BINARY = 2
|
|
__constant char RADIX::DECIMAL = $a
|
|
__constant char RADIX::HEXADECIMAL = $10
|
|
__constant char RADIX::OCTAL = 8
|
|
__constant char SIZEOF_UNSIGNED_INT = 2
|
|
unsigned int divr16u(unsigned int dividend , unsigned int divisor , unsigned int rem)
|
|
char divr16u::$1 // reg byte a 2002.0
|
|
char divr16u::$2 // reg byte a 2002.0
|
|
unsigned int divr16u::dividend
|
|
unsigned int divr16u::dividend#0 // dividend zp[2]:4 250.25
|
|
unsigned int divr16u::dividend#1 // dividend zp[2]:4 22.0
|
|
unsigned int divr16u::dividend#3 // dividend zp[2]:4 443.42857142857144
|
|
unsigned int divr16u::dividend#5 // dividend zp[2]:4 112.0
|
|
unsigned int divr16u::divisor
|
|
char divr16u::i
|
|
char divr16u::i#1 // reg byte x 1501.5
|
|
char divr16u::i#2 // reg byte x 154.0
|
|
unsigned int divr16u::quotient
|
|
unsigned int divr16u::quotient#1 // quotient zp[2]:2 1501.5
|
|
unsigned int divr16u::quotient#2 // quotient zp[2]:2 1001.0
|
|
unsigned int divr16u::quotient#3 // quotient zp[2]:2 250.25
|
|
unsigned int divr16u::rem
|
|
unsigned int divr16u::rem#0 // rem zp[2]:8 750.75
|
|
unsigned int divr16u::rem#1 // rem zp[2]:8 2002.0
|
|
unsigned int divr16u::rem#10 // rem zp[2]:8 112.0
|
|
unsigned int divr16u::rem#11 // rem zp[2]:8 1034.6666666666667
|
|
unsigned int divr16u::rem#2 // rem zp[2]:8 2002.0
|
|
unsigned int divr16u::rem#4 // rem zp[2]:8 22.0
|
|
unsigned int divr16u::rem#5 // rem zp[2]:8 2103.0
|
|
unsigned int divr16u::rem#6 // rem zp[2]:8 1001.0
|
|
unsigned int divr16u::return
|
|
unsigned int divr16u::return#0 // return zp[2]:2 432.1428571428571
|
|
unsigned int divr16u::return#2 // return zp[2]:2 22.0
|
|
unsigned int divr16u::return#3 // return zp[2]:2 22.0
|
|
void lin16u_gen(unsigned int min , unsigned int max , unsigned int *lintab , unsigned int length)
|
|
unsigned int lin16u_gen::$8 // zp[2]:8 202.0
|
|
unsigned int lin16u_gen::ampl
|
|
unsigned int lin16u_gen::ampl#0 // ampl zp[2]:4 22.0
|
|
unsigned int lin16u_gen::i
|
|
unsigned int lin16u_gen::i#1 // i zp[2]:6 202.0
|
|
unsigned int lin16u_gen::i#2 // i zp[2]:6 50.5
|
|
unsigned int lin16u_gen::length
|
|
unsigned int *lin16u_gen::lintab
|
|
unsigned int *lin16u_gen::lintab#3 // lintab zp[2]:10 101.0
|
|
unsigned int *lin16u_gen::lintab#4 // lintab zp[2]:10 62.8
|
|
unsigned int *lin16u_gen::lintab#6 // lintab zp[2]:10 0.9166666666666666
|
|
unsigned int lin16u_gen::max
|
|
unsigned int lin16u_gen::max#3 // max zp[2]:4 11.0
|
|
unsigned int lin16u_gen::min
|
|
unsigned int lin16u_gen::min#3 // min zp[2]:16 2.0
|
|
unsigned long lin16u_gen::step
|
|
unsigned long lin16u_gen::step#0 // step zp[4]:19 12.444444444444443
|
|
unsigned int lin16u_gen::stepf
|
|
unsigned int lin16u_gen::stepf#0 // stepf zp[2]:2 22.0
|
|
unsigned int lin16u_gen::stepi
|
|
unsigned int lin16u_gen::stepi#0 // stepi zp[2]:24 4.4
|
|
unsigned long lin16u_gen::val
|
|
unsigned long lin16u_gen::val#0 // val zp[4]:12 22.0
|
|
unsigned long lin16u_gen::val#1 // val zp[4]:12 67.33333333333333
|
|
unsigned long lin16u_gen::val#2 // val zp[4]:12 78.5
|
|
void main()
|
|
char main::$28 // zp[1]:23 4.888888888888889
|
|
char main::i
|
|
char main::i#1 // i zp[1]:18 22.0
|
|
char main::i#10 // i zp[1]:18 2.75
|
|
__constant unsigned int main::lintab1[$14] = { fill( $14, 0) }
|
|
__constant unsigned int main::lintab2[$14] = { fill( $14, 0) }
|
|
__constant unsigned int main::lintab3[$14] = { fill( $14, 0) }
|
|
__constant char main::str[4] = " "
|
|
__constant char main::str1[2] = " "
|
|
void * memset(void *str , char c , unsigned int num)
|
|
char memset::c
|
|
__constant char memset::c#0 = ' ' // c
|
|
char *memset::dst
|
|
char *memset::dst#1 // dst zp[2]:10 2002.0
|
|
char *memset::dst#2 // dst zp[2]:10 1334.6666666666667
|
|
char *memset::end
|
|
__constant char *memset::end#0 = (char *)memset::str#0+memset::num#0 // end
|
|
unsigned int memset::num
|
|
__constant unsigned int memset::num#0 = $3e8 // num
|
|
void *memset::return
|
|
void *memset::str
|
|
__constant void *memset::str#0 = (void *)print_screen#0 // str
|
|
void print_char(char ch)
|
|
char print_char::ch
|
|
char print_char::ch#0 // reg byte a 20002.0
|
|
char print_char::ch#1 // reg byte a 2002.0
|
|
char print_char::ch#2 // reg byte a 2002.0
|
|
char print_char::ch#3 // reg byte a 112004.0
|
|
char *print_char_cursor
|
|
char *print_char_cursor#1 // print_char_cursor zp[2]:2 808.1600000000001
|
|
char *print_char_cursor#10 // print_char_cursor zp[2]:2 3274.216216216216
|
|
char *print_char_cursor#100 // print_char_cursor zp[2]:2 4.0
|
|
char *print_char_cursor#104 // print_char_cursor zp[2]:2 22.0
|
|
char *print_char_cursor#51 // print_char_cursor zp[2]:2 106002.5
|
|
char *print_char_cursor#84 // print_char_cursor zp[2]:2 404.6666666666667
|
|
char *print_char_cursor#89 // print_char_cursor zp[2]:2 144.0
|
|
void print_cls()
|
|
__constant const char print_hextab[] = "0123456789abcdef"z
|
|
char *print_line_cursor
|
|
char *print_line_cursor#0 // print_line_cursor zp[2]:6 790.2368421052631
|
|
char *print_line_cursor#12 // print_line_cursor zp[2]:6 20103.0
|
|
char *print_line_cursor#23 // print_line_cursor zp[2]:6 114.0
|
|
void print_ln()
|
|
char *print_screen
|
|
__constant char *print_screen#0 = (char *) 1024 // print_screen
|
|
void print_str(char *str)
|
|
char *print_str::str
|
|
char *print_str::str#0 // str zp[2]:4 20002.0
|
|
char *print_str::str#10 // str zp[2]:4 10026.25
|
|
char *print_str::str#13 // str zp[2]:4 101.0
|
|
void print_uchar(char b)
|
|
char print_uchar::$0 // reg byte a 2002.0
|
|
char print_uchar::$2 // reg byte x 2002.0
|
|
char print_uchar::b
|
|
char print_uchar::b#0 // reg byte x 202.0
|
|
char print_uchar::b#1 // reg byte x 202.0
|
|
char print_uchar::b#2 // reg byte x 11.0
|
|
char print_uchar::b#3 // reg byte x 553.75
|
|
void print_uint(unsigned int w)
|
|
unsigned int print_uint::w
|
|
unsigned int print_uint::w#10 // w zp[2]:16 78.33333333333333
|
|
unsigned int print_uint::w#3 // w zp[2]:16 22.0
|
|
unsigned int print_uint::w#4 // w zp[2]:16 22.0
|
|
unsigned int print_uint::w#5 // w zp[2]:16 22.0
|
|
unsigned int rem16u
|
|
unsigned int rem16u#0 // rem16u zp[2]:8 22.4
|
|
|
|
zp[1]:18 [ main::i#10 main::i#1 ]
|
|
zp[4]:12 [ lin16u_gen::val#2 lin16u_gen::val#1 lin16u_gen::val#0 ]
|
|
zp[2]:4 [ print_str::str#10 print_str::str#13 print_str::str#0 lin16u_gen::max#3 lin16u_gen::ampl#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 ]
|
|
zp[2]:16 [ print_uint::w#10 print_uint::w#3 print_uint::w#4 print_uint::w#5 lin16u_gen::min#3 ]
|
|
zp[2]:6 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#0 lin16u_gen::i#2 lin16u_gen::i#1 ]
|
|
reg byte x [ print_uchar::b#3 print_uchar::b#2 print_uchar::b#0 print_uchar::b#1 ]
|
|
reg byte x [ divr16u::i#2 divr16u::i#1 ]
|
|
zp[2]:10 [ memset::dst#2 memset::dst#1 lin16u_gen::lintab#4 lin16u_gen::lintab#3 lin16u_gen::lintab#6 ]
|
|
reg byte a [ print_char::ch#3 print_char::ch#0 print_char::ch#1 print_char::ch#2 ]
|
|
zp[2]:2 [ print_char_cursor#51 print_char_cursor#84 print_char_cursor#104 print_char_cursor#1 print_char_cursor#89 print_char_cursor#10 print_char_cursor#100 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 lin16u_gen::stepf#0 ]
|
|
zp[1]:23 [ main::$28 ]
|
|
zp[2]:24 [ lin16u_gen::stepi#0 ]
|
|
zp[4]:19 [ lin16u_gen::step#0 ]
|
|
zp[2]:8 [ lin16u_gen::$8 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#0 ]
|
|
reg byte a [ print_uchar::$0 ]
|
|
reg byte x [ print_uchar::$2 ]
|
|
reg byte a [ divr16u::$1 ]
|
|
reg byte a [ divr16u::$2 ]
|
|
|
|
|
|
FINAL ASSEMBLER
|
|
Score: 11659
|
|
|
|
// File Comments
|
|
// Linear table generator
|
|
// Work in progress towards a sine generator
|
|
/// @file
|
|
/// Simple binary division implementation
|
|
///
|
|
/// Follows the C99 standard by truncating toward zero on negative results.
|
|
/// See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5
|
|
// Upstart
|
|
// Commodore 64 PRG executable file
|
|
.file [name="linegen.prg", type="prg", segments="Program"]
|
|
.segmentdef Program [segments="Basic, Code, Data"]
|
|
.segmentdef Basic [start=$0801]
|
|
.segmentdef Code [start=$80d]
|
|
.segmentdef Data [startAfter="Code"]
|
|
.segment Basic
|
|
:BasicUpstart(main)
|
|
// Global Constants & labels
|
|
.const SIZEOF_UNSIGNED_INT = 2
|
|
.label print_screen = $400
|
|
// Remainder after unsigned 16-bit division
|
|
.label rem16u = 8
|
|
.label print_char_cursor = 2
|
|
.label print_line_cursor = 6
|
|
.segment Code
|
|
// main
|
|
main: {
|
|
.label __28 = $17
|
|
.label i = $12
|
|
// lin16u_gen(557, 29793, lintab1, 20)
|
|
// [1] call lin16u_gen
|
|
// [58] phi from main to lin16u_gen [phi:main->lin16u_gen]
|
|
// [58] phi lin16u_gen::lintab#6 = main::lintab1 [phi:main->lin16u_gen#0] -- pwuz1=pwuc1
|
|
lda #<lintab1
|
|
sta.z lin16u_gen.lintab
|
|
lda #>lintab1
|
|
sta.z lin16u_gen.lintab+1
|
|
// [58] phi lin16u_gen::min#3 = $22d [phi:main->lin16u_gen#1] -- vwuz1=vwuc1
|
|
lda #<$22d
|
|
sta.z lin16u_gen.min
|
|
lda #>$22d
|
|
sta.z lin16u_gen.min+1
|
|
// [58] phi lin16u_gen::max#3 = $7461 [phi:main->lin16u_gen#2] -- vwuz1=vwuc1
|
|
lda #<$7461
|
|
sta.z lin16u_gen.max
|
|
lda #>$7461
|
|
sta.z lin16u_gen.max+1
|
|
jsr lin16u_gen
|
|
// [2] phi from main to main::@4 [phi:main->main::@4]
|
|
// main::@4
|
|
// lin16u_gen(31179, 63361, lintab2, 20)
|
|
// [3] call lin16u_gen
|
|
// [58] phi from main::@4 to lin16u_gen [phi:main::@4->lin16u_gen]
|
|
// [58] phi lin16u_gen::lintab#6 = main::lintab2 [phi:main::@4->lin16u_gen#0] -- pwuz1=pwuc1
|
|
lda #<lintab2
|
|
sta.z lin16u_gen.lintab
|
|
lda #>lintab2
|
|
sta.z lin16u_gen.lintab+1
|
|
// [58] phi lin16u_gen::min#3 = $79cb [phi:main::@4->lin16u_gen#1] -- vwuz1=vwuc1
|
|
lda #<$79cb
|
|
sta.z lin16u_gen.min
|
|
lda #>$79cb
|
|
sta.z lin16u_gen.min+1
|
|
// [58] phi lin16u_gen::max#3 = $f781 [phi:main::@4->lin16u_gen#2] -- vwuz1=vwuc1
|
|
lda #<$f781
|
|
sta.z lin16u_gen.max
|
|
lda #>$f781
|
|
sta.z lin16u_gen.max+1
|
|
jsr lin16u_gen
|
|
// [4] phi from main::@4 to main::@5 [phi:main::@4->main::@5]
|
|
// main::@5
|
|
// lin16u_gen(0, $6488, lintab3, 20)
|
|
// [5] call lin16u_gen
|
|
// [58] phi from main::@5 to lin16u_gen [phi:main::@5->lin16u_gen]
|
|
// [58] phi lin16u_gen::lintab#6 = main::lintab3 [phi:main::@5->lin16u_gen#0] -- pwuz1=pwuc1
|
|
lda #<lintab3
|
|
sta.z lin16u_gen.lintab
|
|
lda #>lintab3
|
|
sta.z lin16u_gen.lintab+1
|
|
// [58] phi lin16u_gen::min#3 = 0 [phi:main::@5->lin16u_gen#1] -- vwuz1=vbuc1
|
|
lda #<0
|
|
sta.z lin16u_gen.min
|
|
sta.z lin16u_gen.min+1
|
|
// [58] phi lin16u_gen::max#3 = $6488 [phi:main::@5->lin16u_gen#2] -- vwuz1=vwuc1
|
|
lda #<$6488
|
|
sta.z lin16u_gen.max
|
|
lda #>$6488
|
|
sta.z lin16u_gen.max+1
|
|
jsr lin16u_gen
|
|
// [6] phi from main::@5 to main::@6 [phi:main::@5->main::@6]
|
|
// main::@6
|
|
// print_cls()
|
|
// [7] call print_cls
|
|
// [78] phi from main::@6 to print_cls [phi:main::@6->print_cls]
|
|
jsr print_cls
|
|
// [8] phi from main::@6 to main::@7 [phi:main::@6->main::@7]
|
|
// main::@7
|
|
// print_str(" ")
|
|
// [9] call print_str
|
|
// [81] phi from main::@7 to print_str [phi:main::@7->print_str]
|
|
// [81] phi print_char_cursor#89 = print_screen#0 [phi:main::@7->print_str#0] -- pbuz1=pbuc1
|
|
lda #<print_screen
|
|
sta.z print_char_cursor
|
|
lda #>print_screen
|
|
sta.z print_char_cursor+1
|
|
// [81] phi print_str::str#13 = main::str [phi:main::@7->print_str#1] -- pbuz1=pbuc1
|
|
lda #<str
|
|
sta.z print_str.str
|
|
lda #>str
|
|
sta.z print_str.str+1
|
|
jsr print_str
|
|
// [10] phi from main::@7 to main::@8 [phi:main::@7->main::@8]
|
|
// main::@8
|
|
// print_uint(557)
|
|
// [11] call print_uint
|
|
// [88] phi from main::@8 to print_uint [phi:main::@8->print_uint]
|
|
// [88] phi print_uint::w#10 = $22d [phi:main::@8->print_uint#0] -- vwuz1=vwuc1
|
|
lda #<$22d
|
|
sta.z print_uint.w
|
|
lda #>$22d
|
|
sta.z print_uint.w+1
|
|
jsr print_uint
|
|
// [12] phi from main::@8 to main::@9 [phi:main::@8->main::@9]
|
|
// main::@9
|
|
// print_str(" ")
|
|
// [13] call print_str
|
|
// [81] phi from main::@9 to print_str [phi:main::@9->print_str]
|
|
// [81] phi print_char_cursor#89 = print_char_cursor#10 [phi:main::@9->print_str#0] -- register_copy
|
|
// [81] phi print_str::str#13 = main::str1 [phi:main::@9->print_str#1] -- pbuz1=pbuc1
|
|
lda #<str1
|
|
sta.z print_str.str
|
|
lda #>str1
|
|
sta.z print_str.str+1
|
|
jsr print_str
|
|
// [14] phi from main::@9 to main::@10 [phi:main::@9->main::@10]
|
|
// main::@10
|
|
// print_uint(31179)
|
|
// [15] call print_uint
|
|
// [88] phi from main::@10 to print_uint [phi:main::@10->print_uint]
|
|
// [88] phi print_uint::w#10 = $79cb [phi:main::@10->print_uint#0] -- vwuz1=vwuc1
|
|
lda #<$79cb
|
|
sta.z print_uint.w
|
|
lda #>$79cb
|
|
sta.z print_uint.w+1
|
|
jsr print_uint
|
|
// [16] phi from main::@10 to main::@11 [phi:main::@10->main::@11]
|
|
// main::@11
|
|
// print_str(" ")
|
|
// [17] call print_str
|
|
// [81] phi from main::@11 to print_str [phi:main::@11->print_str]
|
|
// [81] phi print_char_cursor#89 = print_char_cursor#10 [phi:main::@11->print_str#0] -- register_copy
|
|
// [81] phi print_str::str#13 = main::str1 [phi:main::@11->print_str#1] -- pbuz1=pbuc1
|
|
lda #<str1
|
|
sta.z print_str.str
|
|
lda #>str1
|
|
sta.z print_str.str+1
|
|
jsr print_str
|
|
// [18] phi from main::@11 to main::@12 [phi:main::@11->main::@12]
|
|
// main::@12
|
|
// print_uint(0)
|
|
// [19] call print_uint
|
|
// [88] phi from main::@12 to print_uint [phi:main::@12->print_uint]
|
|
// [88] phi print_uint::w#10 = 0 [phi:main::@12->print_uint#0] -- vwuz1=vbuc1
|
|
lda #<0
|
|
sta.z print_uint.w
|
|
sta.z print_uint.w+1
|
|
jsr print_uint
|
|
// [20] phi from main::@12 to main::@13 [phi:main::@12->main::@13]
|
|
// main::@13
|
|
// print_ln()
|
|
// [21] call print_ln
|
|
// [94] phi from main::@13 to print_ln [phi:main::@13->print_ln]
|
|
// [94] phi print_line_cursor#23 = print_screen#0 [phi:main::@13->print_ln#0] -- pbuz1=pbuc1
|
|
lda #<print_screen
|
|
sta.z print_line_cursor
|
|
lda #>print_screen
|
|
sta.z print_line_cursor+1
|
|
jsr print_ln
|
|
// [22] phi from main::@13 to main::@1 [phi:main::@13->main::@1]
|
|
// [22] phi main::i#10 = 0 [phi:main::@13->main::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z i
|
|
// main::@1
|
|
__b1:
|
|
// for(byte i=0; i<20; i++)
|
|
// [23] if(main::i#10<$14) goto main::@2 -- vbuz1_lt_vbuc1_then_la1
|
|
lda.z i
|
|
cmp #$14
|
|
bcc __b2
|
|
// main::@3
|
|
// [24] print_char_cursor#100 = print_line_cursor#0 -- pbuz1=pbuz2
|
|
lda.z print_line_cursor
|
|
sta.z print_char_cursor
|
|
lda.z print_line_cursor+1
|
|
sta.z print_char_cursor+1
|
|
// print_str(" ")
|
|
// [25] call print_str
|
|
// [81] phi from main::@3 to print_str [phi:main::@3->print_str]
|
|
// [81] phi print_char_cursor#89 = print_char_cursor#100 [phi:main::@3->print_str#0] -- register_copy
|
|
// [81] phi print_str::str#13 = main::str [phi:main::@3->print_str#1] -- pbuz1=pbuc1
|
|
lda #<str
|
|
sta.z print_str.str
|
|
lda #>str
|
|
sta.z print_str.str+1
|
|
jsr print_str
|
|
// [26] phi from main::@3 to main::@22 [phi:main::@3->main::@22]
|
|
// main::@22
|
|
// print_uint(29793)
|
|
// [27] call print_uint
|
|
// [88] phi from main::@22 to print_uint [phi:main::@22->print_uint]
|
|
// [88] phi print_uint::w#10 = $7461 [phi:main::@22->print_uint#0] -- vwuz1=vwuc1
|
|
lda #<$7461
|
|
sta.z print_uint.w
|
|
lda #>$7461
|
|
sta.z print_uint.w+1
|
|
jsr print_uint
|
|
// [28] phi from main::@22 to main::@23 [phi:main::@22->main::@23]
|
|
// main::@23
|
|
// print_str(" ")
|
|
// [29] call print_str
|
|
// [81] phi from main::@23 to print_str [phi:main::@23->print_str]
|
|
// [81] phi print_char_cursor#89 = print_char_cursor#10 [phi:main::@23->print_str#0] -- register_copy
|
|
// [81] phi print_str::str#13 = main::str1 [phi:main::@23->print_str#1] -- pbuz1=pbuc1
|
|
lda #<str1
|
|
sta.z print_str.str
|
|
lda #>str1
|
|
sta.z print_str.str+1
|
|
jsr print_str
|
|
// [30] phi from main::@23 to main::@24 [phi:main::@23->main::@24]
|
|
// main::@24
|
|
// print_uint(63361)
|
|
// [31] call print_uint
|
|
// [88] phi from main::@24 to print_uint [phi:main::@24->print_uint]
|
|
// [88] phi print_uint::w#10 = $f781 [phi:main::@24->print_uint#0] -- vwuz1=vwuc1
|
|
lda #<$f781
|
|
sta.z print_uint.w
|
|
lda #>$f781
|
|
sta.z print_uint.w+1
|
|
jsr print_uint
|
|
// [32] phi from main::@24 to main::@25 [phi:main::@24->main::@25]
|
|
// main::@25
|
|
// print_str(" ")
|
|
// [33] call print_str
|
|
// [81] phi from main::@25 to print_str [phi:main::@25->print_str]
|
|
// [81] phi print_char_cursor#89 = print_char_cursor#10 [phi:main::@25->print_str#0] -- register_copy
|
|
// [81] phi print_str::str#13 = main::str1 [phi:main::@25->print_str#1] -- pbuz1=pbuc1
|
|
lda #<str1
|
|
sta.z print_str.str
|
|
lda #>str1
|
|
sta.z print_str.str+1
|
|
jsr print_str
|
|
// [34] phi from main::@25 to main::@26 [phi:main::@25->main::@26]
|
|
// main::@26
|
|
// print_uint($6488)
|
|
// [35] call print_uint
|
|
// [88] phi from main::@26 to print_uint [phi:main::@26->print_uint]
|
|
// [88] phi print_uint::w#10 = $6488 [phi:main::@26->print_uint#0] -- vwuz1=vwuc1
|
|
lda #<$6488
|
|
sta.z print_uint.w
|
|
lda #>$6488
|
|
sta.z print_uint.w+1
|
|
jsr print_uint
|
|
// [36] phi from main::@26 to main::@27 [phi:main::@26->main::@27]
|
|
// main::@27
|
|
// print_ln()
|
|
// [37] call print_ln
|
|
// [94] phi from main::@27 to print_ln [phi:main::@27->print_ln]
|
|
// [94] phi print_line_cursor#23 = print_line_cursor#0 [phi:main::@27->print_ln#0] -- register_copy
|
|
jsr print_ln
|
|
// main::@return
|
|
// }
|
|
// [38] return
|
|
rts
|
|
// main::@2
|
|
__b2:
|
|
// print_uchar(i)
|
|
// [39] print_uchar::b#2 = main::i#10 -- vbuxx=vbuz1
|
|
ldx.z i
|
|
// [40] print_char_cursor#104 = print_line_cursor#0 -- pbuz1=pbuz2
|
|
lda.z print_line_cursor
|
|
sta.z print_char_cursor
|
|
lda.z print_line_cursor+1
|
|
sta.z print_char_cursor+1
|
|
// print_uchar(i)
|
|
// [41] call print_uchar
|
|
// [99] phi from main::@2 to print_uchar [phi:main::@2->print_uchar]
|
|
// [99] phi print_char_cursor#84 = print_char_cursor#104 [phi:main::@2->print_uchar#0] -- register_copy
|
|
// [99] phi print_uchar::b#3 = print_uchar::b#2 [phi:main::@2->print_uchar#1] -- register_copy
|
|
jsr print_uchar
|
|
// [42] phi from main::@2 to main::@14 [phi:main::@2->main::@14]
|
|
// main::@14
|
|
// print_str(" ")
|
|
// [43] call print_str
|
|
// [81] phi from main::@14 to print_str [phi:main::@14->print_str]
|
|
// [81] phi print_char_cursor#89 = print_char_cursor#10 [phi:main::@14->print_str#0] -- register_copy
|
|
// [81] phi print_str::str#13 = main::str1 [phi:main::@14->print_str#1] -- pbuz1=pbuc1
|
|
lda #<str1
|
|
sta.z print_str.str
|
|
lda #>str1
|
|
sta.z print_str.str+1
|
|
jsr print_str
|
|
// main::@15
|
|
// print_uint(lintab1[i])
|
|
// [44] main::$28 = main::i#10 << 1 -- vbuz1=vbuz2_rol_1
|
|
lda.z i
|
|
asl
|
|
sta.z __28
|
|
// [45] print_uint::w#3 = main::lintab1[main::$28] -- vwuz1=pwuc1_derefidx_vbuz2
|
|
tay
|
|
lda lintab1,y
|
|
sta.z print_uint.w
|
|
lda lintab1+1,y
|
|
sta.z print_uint.w+1
|
|
// [46] call print_uint
|
|
// [88] phi from main::@15 to print_uint [phi:main::@15->print_uint]
|
|
// [88] phi print_uint::w#10 = print_uint::w#3 [phi:main::@15->print_uint#0] -- register_copy
|
|
jsr print_uint
|
|
// [47] phi from main::@15 to main::@16 [phi:main::@15->main::@16]
|
|
// main::@16
|
|
// print_str(" ")
|
|
// [48] call print_str
|
|
// [81] phi from main::@16 to print_str [phi:main::@16->print_str]
|
|
// [81] phi print_char_cursor#89 = print_char_cursor#10 [phi:main::@16->print_str#0] -- register_copy
|
|
// [81] phi print_str::str#13 = main::str1 [phi:main::@16->print_str#1] -- pbuz1=pbuc1
|
|
lda #<str1
|
|
sta.z print_str.str
|
|
lda #>str1
|
|
sta.z print_str.str+1
|
|
jsr print_str
|
|
// main::@17
|
|
// print_uint(lintab2[i])
|
|
// [49] print_uint::w#4 = main::lintab2[main::$28] -- vwuz1=pwuc1_derefidx_vbuz2
|
|
ldy.z __28
|
|
lda lintab2,y
|
|
sta.z print_uint.w
|
|
lda lintab2+1,y
|
|
sta.z print_uint.w+1
|
|
// [50] call print_uint
|
|
// [88] phi from main::@17 to print_uint [phi:main::@17->print_uint]
|
|
// [88] phi print_uint::w#10 = print_uint::w#4 [phi:main::@17->print_uint#0] -- register_copy
|
|
jsr print_uint
|
|
// [51] phi from main::@17 to main::@18 [phi:main::@17->main::@18]
|
|
// main::@18
|
|
// print_str(" ")
|
|
// [52] call print_str
|
|
// [81] phi from main::@18 to print_str [phi:main::@18->print_str]
|
|
// [81] phi print_char_cursor#89 = print_char_cursor#10 [phi:main::@18->print_str#0] -- register_copy
|
|
// [81] phi print_str::str#13 = main::str1 [phi:main::@18->print_str#1] -- pbuz1=pbuc1
|
|
lda #<str1
|
|
sta.z print_str.str
|
|
lda #>str1
|
|
sta.z print_str.str+1
|
|
jsr print_str
|
|
// main::@19
|
|
// print_uint(lintab3[i])
|
|
// [53] print_uint::w#5 = main::lintab3[main::$28] -- vwuz1=pwuc1_derefidx_vbuz2
|
|
ldy.z __28
|
|
lda lintab3,y
|
|
sta.z print_uint.w
|
|
lda lintab3+1,y
|
|
sta.z print_uint.w+1
|
|
// [54] call print_uint
|
|
// [88] phi from main::@19 to print_uint [phi:main::@19->print_uint]
|
|
// [88] phi print_uint::w#10 = print_uint::w#5 [phi:main::@19->print_uint#0] -- register_copy
|
|
jsr print_uint
|
|
// [55] phi from main::@19 to main::@20 [phi:main::@19->main::@20]
|
|
// main::@20
|
|
// print_ln()
|
|
// [56] call print_ln
|
|
// [94] phi from main::@20 to print_ln [phi:main::@20->print_ln]
|
|
// [94] phi print_line_cursor#23 = print_line_cursor#0 [phi:main::@20->print_ln#0] -- register_copy
|
|
jsr print_ln
|
|
// main::@21
|
|
// for(byte i=0; i<20; i++)
|
|
// [57] main::i#1 = ++ main::i#10 -- vbuz1=_inc_vbuz1
|
|
inc.z i
|
|
// [22] phi from main::@21 to main::@1 [phi:main::@21->main::@1]
|
|
// [22] phi main::i#10 = main::i#1 [phi:main::@21->main::@1#0] -- register_copy
|
|
jmp __b1
|
|
.segment Data
|
|
lintab1: .fill 2*$14, 0
|
|
lintab2: .fill 2*$14, 0
|
|
lintab3: .fill 2*$14, 0
|
|
str: .text " "
|
|
.byte 0
|
|
str1: .text " "
|
|
.byte 0
|
|
}
|
|
.segment Code
|
|
// lin16u_gen
|
|
// Generate word linear table
|
|
// lintab - the table to generate into
|
|
// length - the number of points in a total sine wavelength (the size of the table)
|
|
// void lin16u_gen(__zp($10) unsigned int min, __zp(4) unsigned int max, __zp($a) unsigned int *lintab, unsigned int length)
|
|
lin16u_gen: {
|
|
.label __8 = 8
|
|
.label ampl = 4
|
|
.label stepi = $18
|
|
.label stepf = 2
|
|
.label step = $13
|
|
.label val = $c
|
|
.label lintab = $a
|
|
.label i = 6
|
|
.label max = 4
|
|
.label min = $10
|
|
// word ampl = max-min
|
|
// [59] lin16u_gen::ampl#0 = lin16u_gen::max#3 - lin16u_gen::min#3 -- vwuz1=vwuz1_minus_vwuz2
|
|
lda.z ampl
|
|
sec
|
|
sbc.z min
|
|
sta.z ampl
|
|
lda.z ampl+1
|
|
sbc.z min+1
|
|
sta.z ampl+1
|
|
// word stepi = divr16u(ampl, length-1, 0)
|
|
// [60] divr16u::dividend#1 = lin16u_gen::ampl#0
|
|
// [61] call divr16u
|
|
// [107] phi from lin16u_gen to divr16u [phi:lin16u_gen->divr16u]
|
|
// [107] phi divr16u::dividend#5 = divr16u::dividend#1 [phi:lin16u_gen->divr16u#0] -- register_copy
|
|
// [107] phi divr16u::rem#10 = 0 [phi:lin16u_gen->divr16u#1] -- vwuz1=vbuc1
|
|
lda #<0
|
|
sta.z divr16u.rem
|
|
sta.z divr16u.rem+1
|
|
jsr divr16u
|
|
// word stepi = divr16u(ampl, length-1, 0)
|
|
// [62] divr16u::return#2 = divr16u::return#0
|
|
// lin16u_gen::@3
|
|
// [63] lin16u_gen::stepi#0 = divr16u::return#2 -- vwuz1=vwuz2
|
|
lda.z divr16u.return
|
|
sta.z stepi
|
|
lda.z divr16u.return+1
|
|
sta.z stepi+1
|
|
// word stepf = divr16u(0, length-1, rem16u)
|
|
// [64] divr16u::rem#4 = rem16u#0
|
|
// [65] call divr16u
|
|
// [107] phi from lin16u_gen::@3 to divr16u [phi:lin16u_gen::@3->divr16u]
|
|
// [107] phi divr16u::dividend#5 = 0 [phi:lin16u_gen::@3->divr16u#0] -- vwuz1=vbuc1
|
|
lda #<0
|
|
sta.z divr16u.dividend
|
|
sta.z divr16u.dividend+1
|
|
// [107] phi divr16u::rem#10 = divr16u::rem#4 [phi:lin16u_gen::@3->divr16u#1] -- register_copy
|
|
jsr divr16u
|
|
// word stepf = divr16u(0, length-1, rem16u)
|
|
// [66] divr16u::return#3 = divr16u::return#0
|
|
// lin16u_gen::@4
|
|
// [67] lin16u_gen::stepf#0 = divr16u::return#3
|
|
// dword step = MAKELONG( stepi, stepf )
|
|
// [68] lin16u_gen::step#0 = lin16u_gen::stepi#0 dw= lin16u_gen::stepf#0 -- vduz1=vwuz2_dword_vwuz3
|
|
lda.z stepi
|
|
sta.z step+2
|
|
lda.z stepi+1
|
|
sta.z step+3
|
|
lda.z stepf
|
|
sta.z step
|
|
lda.z stepf+1
|
|
sta.z step+1
|
|
// dword val = MAKELONG( min, 0 )
|
|
// [69] lin16u_gen::val#0 = lin16u_gen::min#3 dw= 0 -- vduz1=vwuz2_dword_vbuc1
|
|
lda.z min
|
|
sta.z val+2
|
|
lda.z min+1
|
|
sta.z val+3
|
|
lda #0
|
|
sta.z val
|
|
sta.z val+1
|
|
// [70] phi from lin16u_gen::@4 to lin16u_gen::@1 [phi:lin16u_gen::@4->lin16u_gen::@1]
|
|
// [70] phi lin16u_gen::lintab#4 = lin16u_gen::lintab#6 [phi:lin16u_gen::@4->lin16u_gen::@1#0] -- register_copy
|
|
// [70] phi lin16u_gen::val#2 = lin16u_gen::val#0 [phi:lin16u_gen::@4->lin16u_gen::@1#1] -- register_copy
|
|
// [70] phi lin16u_gen::i#2 = 0 [phi:lin16u_gen::@4->lin16u_gen::@1#2] -- vwuz1=vwuc1
|
|
sta.z i
|
|
sta.z i+1
|
|
// lin16u_gen::@1
|
|
__b1:
|
|
// for(word i=0; i<length; i++)
|
|
// [71] if(lin16u_gen::i#2<$14) goto lin16u_gen::@2 -- vwuz1_lt_vbuc1_then_la1
|
|
lda.z i+1
|
|
bne !+
|
|
lda.z i
|
|
cmp #$14
|
|
bcc __b2
|
|
!:
|
|
// lin16u_gen::@return
|
|
// }
|
|
// [72] return
|
|
rts
|
|
// lin16u_gen::@2
|
|
__b2:
|
|
// WORD1(val)
|
|
// [73] lin16u_gen::$8 = word1 lin16u_gen::val#2 -- vwuz1=_word1_vduz2
|
|
lda.z val+2
|
|
sta.z __8
|
|
lda.z val+3
|
|
sta.z __8+1
|
|
// *lintab = WORD1(val)
|
|
// [74] *lin16u_gen::lintab#4 = lin16u_gen::$8 -- _deref_pwuz1=vwuz2
|
|
ldy #0
|
|
lda.z __8
|
|
sta (lintab),y
|
|
iny
|
|
lda.z __8+1
|
|
sta (lintab),y
|
|
// val = val + step
|
|
// [75] lin16u_gen::val#1 = lin16u_gen::val#2 + lin16u_gen::step#0 -- vduz1=vduz1_plus_vduz2
|
|
clc
|
|
lda.z val
|
|
adc.z step
|
|
sta.z val
|
|
lda.z val+1
|
|
adc.z step+1
|
|
sta.z val+1
|
|
lda.z val+2
|
|
adc.z step+2
|
|
sta.z val+2
|
|
lda.z val+3
|
|
adc.z step+3
|
|
sta.z val+3
|
|
// lintab++;
|
|
// [76] lin16u_gen::lintab#3 = lin16u_gen::lintab#4 + SIZEOF_UNSIGNED_INT -- pwuz1=pwuz1_plus_vbuc1
|
|
lda #SIZEOF_UNSIGNED_INT
|
|
clc
|
|
adc.z lintab
|
|
sta.z lintab
|
|
bcc !+
|
|
inc.z lintab+1
|
|
!:
|
|
// for(word i=0; i<length; i++)
|
|
// [77] lin16u_gen::i#1 = ++ lin16u_gen::i#2 -- vwuz1=_inc_vwuz1
|
|
inc.z i
|
|
bne !+
|
|
inc.z i+1
|
|
!:
|
|
// [70] phi from lin16u_gen::@2 to lin16u_gen::@1 [phi:lin16u_gen::@2->lin16u_gen::@1]
|
|
// [70] phi lin16u_gen::lintab#4 = lin16u_gen::lintab#3 [phi:lin16u_gen::@2->lin16u_gen::@1#0] -- register_copy
|
|
// [70] phi lin16u_gen::val#2 = lin16u_gen::val#1 [phi:lin16u_gen::@2->lin16u_gen::@1#1] -- register_copy
|
|
// [70] phi lin16u_gen::i#2 = lin16u_gen::i#1 [phi:lin16u_gen::@2->lin16u_gen::@1#2] -- register_copy
|
|
jmp __b1
|
|
}
|
|
// print_cls
|
|
// Clear the screen. Also resets current line/char cursor.
|
|
print_cls: {
|
|
// memset(print_screen, ' ', 1000)
|
|
// [79] call memset
|
|
// [125] phi from print_cls to memset [phi:print_cls->memset]
|
|
jsr memset
|
|
// print_cls::@return
|
|
// }
|
|
// [80] return
|
|
rts
|
|
}
|
|
// print_str
|
|
// Print a zero-terminated string
|
|
// void print_str(__zp(4) char *str)
|
|
print_str: {
|
|
.label str = 4
|
|
// [82] phi from print_str print_str::@3 to print_str::@1 [phi:print_str/print_str::@3->print_str::@1]
|
|
// [82] phi print_char_cursor#1 = print_char_cursor#89 [phi:print_str/print_str::@3->print_str::@1#0] -- register_copy
|
|
// [82] phi print_str::str#10 = print_str::str#13 [phi:print_str/print_str::@3->print_str::@1#1] -- register_copy
|
|
// print_str::@1
|
|
__b1:
|
|
// while(*str)
|
|
// [83] if(0!=*print_str::str#10) goto print_str::@2 -- 0_neq__deref_pbuz1_then_la1
|
|
ldy #0
|
|
lda (str),y
|
|
cmp #0
|
|
bne __b2
|
|
// print_str::@return
|
|
// }
|
|
// [84] return
|
|
rts
|
|
// print_str::@2
|
|
__b2:
|
|
// print_char(*(str++))
|
|
// [85] print_char::ch#0 = *print_str::str#10 -- vbuaa=_deref_pbuz1
|
|
ldy #0
|
|
lda (str),y
|
|
// [86] call print_char
|
|
// [131] phi from print_str::@2 to print_char [phi:print_str::@2->print_char]
|
|
// [131] phi print_char_cursor#51 = print_char_cursor#1 [phi:print_str::@2->print_char#0] -- register_copy
|
|
// [131] phi print_char::ch#3 = print_char::ch#0 [phi:print_str::@2->print_char#1] -- register_copy
|
|
jsr print_char
|
|
// print_str::@3
|
|
// print_char(*(str++));
|
|
// [87] print_str::str#0 = ++ print_str::str#10 -- pbuz1=_inc_pbuz1
|
|
inc.z str
|
|
bne !+
|
|
inc.z str+1
|
|
!:
|
|
jmp __b1
|
|
}
|
|
// print_uint
|
|
// Print a unsigned int as HEX
|
|
// void print_uint(__zp($10) unsigned int w)
|
|
print_uint: {
|
|
.label w = $10
|
|
// print_uchar(BYTE1(w))
|
|
// [89] print_uchar::b#0 = byte1 print_uint::w#10 -- vbuxx=_byte1_vwuz1
|
|
ldx.z w+1
|
|
// [90] call print_uchar
|
|
// [99] phi from print_uint to print_uchar [phi:print_uint->print_uchar]
|
|
// [99] phi print_char_cursor#84 = print_char_cursor#1 [phi:print_uint->print_uchar#0] -- register_copy
|
|
// [99] phi print_uchar::b#3 = print_uchar::b#0 [phi:print_uint->print_uchar#1] -- register_copy
|
|
jsr print_uchar
|
|
// print_uint::@1
|
|
// print_uchar(BYTE0(w))
|
|
// [91] print_uchar::b#1 = byte0 print_uint::w#10 -- vbuxx=_byte0_vwuz1
|
|
ldx.z w
|
|
// [92] call print_uchar
|
|
// [99] phi from print_uint::@1 to print_uchar [phi:print_uint::@1->print_uchar]
|
|
// [99] phi print_char_cursor#84 = print_char_cursor#10 [phi:print_uint::@1->print_uchar#0] -- register_copy
|
|
// [99] phi print_uchar::b#3 = print_uchar::b#1 [phi:print_uint::@1->print_uchar#1] -- register_copy
|
|
jsr print_uchar
|
|
// print_uint::@return
|
|
// }
|
|
// [93] return
|
|
rts
|
|
}
|
|
// print_ln
|
|
// Print a newline
|
|
print_ln: {
|
|
// [95] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1]
|
|
// [95] phi print_line_cursor#12 = print_line_cursor#23 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy
|
|
// print_ln::@1
|
|
__b1:
|
|
// print_line_cursor + 0x28
|
|
// [96] print_line_cursor#0 = print_line_cursor#12 + $28 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #$28
|
|
clc
|
|
adc.z print_line_cursor
|
|
sta.z print_line_cursor
|
|
bcc !+
|
|
inc.z print_line_cursor+1
|
|
!:
|
|
// while (print_line_cursor<print_char_cursor)
|
|
// [97] if(print_line_cursor#0<print_char_cursor#10) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1
|
|
lda.z print_line_cursor+1
|
|
cmp.z print_char_cursor+1
|
|
bcc __b1
|
|
bne !+
|
|
lda.z print_line_cursor
|
|
cmp.z print_char_cursor
|
|
bcc __b1
|
|
!:
|
|
// print_ln::@return
|
|
// }
|
|
// [98] return
|
|
rts
|
|
}
|
|
// print_uchar
|
|
// Print a char as HEX
|
|
// void print_uchar(__register(X) char b)
|
|
print_uchar: {
|
|
// b>>4
|
|
// [100] print_uchar::$0 = print_uchar::b#3 >> 4 -- vbuaa=vbuxx_ror_4
|
|
txa
|
|
lsr
|
|
lsr
|
|
lsr
|
|
lsr
|
|
// print_char(print_hextab[b>>4])
|
|
// [101] print_char::ch#1 = print_hextab[print_uchar::$0] -- vbuaa=pbuc1_derefidx_vbuaa
|
|
tay
|
|
lda print_hextab,y
|
|
// [102] call print_char
|
|
// Table of hexadecimal digits
|
|
// [131] phi from print_uchar to print_char [phi:print_uchar->print_char]
|
|
// [131] phi print_char_cursor#51 = print_char_cursor#84 [phi:print_uchar->print_char#0] -- register_copy
|
|
// [131] phi print_char::ch#3 = print_char::ch#1 [phi:print_uchar->print_char#1] -- register_copy
|
|
jsr print_char
|
|
// print_uchar::@1
|
|
// b&0xf
|
|
// [103] print_uchar::$2 = print_uchar::b#3 & $f -- vbuxx=vbuxx_band_vbuc1
|
|
lda #$f
|
|
axs #0
|
|
// print_char(print_hextab[b&0xf])
|
|
// [104] print_char::ch#2 = print_hextab[print_uchar::$2] -- vbuaa=pbuc1_derefidx_vbuxx
|
|
lda print_hextab,x
|
|
// [105] call print_char
|
|
// [131] phi from print_uchar::@1 to print_char [phi:print_uchar::@1->print_char]
|
|
// [131] phi print_char_cursor#51 = print_char_cursor#10 [phi:print_uchar::@1->print_char#0] -- register_copy
|
|
// [131] phi print_char::ch#3 = print_char::ch#2 [phi:print_uchar::@1->print_char#1] -- register_copy
|
|
jsr print_char
|
|
// print_uchar::@return
|
|
// }
|
|
// [106] return
|
|
rts
|
|
}
|
|
// divr16u
|
|
// Performs division on two 16 bit unsigned ints and an initial remainder
|
|
// Returns the quotient dividend/divisor.
|
|
// The final remainder will be set into the global variable rem16u
|
|
// Implemented using simple binary division
|
|
// __zp(2) unsigned int divr16u(__zp(4) unsigned int dividend, unsigned int divisor, __zp(8) unsigned int rem)
|
|
divr16u: {
|
|
.label rem = 8
|
|
.label dividend = 4
|
|
.label quotient = 2
|
|
.label return = 2
|
|
// [108] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1]
|
|
// [108] phi divr16u::i#2 = 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
// [108] phi divr16u::quotient#3 = 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vwuc1
|
|
txa
|
|
sta.z quotient
|
|
sta.z quotient+1
|
|
// [108] phi divr16u::dividend#3 = divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy
|
|
// [108] phi divr16u::rem#5 = divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy
|
|
// [108] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1]
|
|
// [108] phi divr16u::i#2 = divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy
|
|
// [108] phi divr16u::quotient#3 = divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy
|
|
// [108] phi divr16u::dividend#3 = divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy
|
|
// [108] phi divr16u::rem#5 = divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy
|
|
// divr16u::@1
|
|
__b1:
|
|
// rem = rem << 1
|
|
// [109] divr16u::rem#0 = divr16u::rem#5 << 1 -- vwuz1=vwuz1_rol_1
|
|
asl.z rem
|
|
rol.z rem+1
|
|
// BYTE1(dividend)
|
|
// [110] divr16u::$1 = byte1 divr16u::dividend#3 -- vbuaa=_byte1_vwuz1
|
|
lda.z dividend+1
|
|
// BYTE1(dividend) & 0x80
|
|
// [111] divr16u::$2 = divr16u::$1 & $80 -- vbuaa=vbuaa_band_vbuc1
|
|
and #$80
|
|
// if( (BYTE1(dividend) & 0x80) != 0 )
|
|
// [112] if(divr16u::$2==0) goto divr16u::@2 -- vbuaa_eq_0_then_la1
|
|
cmp #0
|
|
beq __b2
|
|
// divr16u::@4
|
|
// rem = rem | 1
|
|
// [113] divr16u::rem#1 = divr16u::rem#0 | 1 -- vwuz1=vwuz1_bor_vbuc1
|
|
lda #1
|
|
ora.z rem
|
|
sta.z rem
|
|
// [114] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2]
|
|
// [114] phi divr16u::rem#6 = divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy
|
|
// divr16u::@2
|
|
__b2:
|
|
// dividend = dividend << 1
|
|
// [115] divr16u::dividend#0 = divr16u::dividend#3 << 1 -- vwuz1=vwuz1_rol_1
|
|
asl.z dividend
|
|
rol.z dividend+1
|
|
// quotient = quotient << 1
|
|
// [116] divr16u::quotient#1 = divr16u::quotient#3 << 1 -- vwuz1=vwuz1_rol_1
|
|
asl.z quotient
|
|
rol.z quotient+1
|
|
// if(rem>=divisor)
|
|
// [117] if(divr16u::rem#6<$14-1) goto divr16u::@3 -- vwuz1_lt_vbuc1_then_la1
|
|
lda.z rem+1
|
|
bne !+
|
|
lda.z rem
|
|
cmp #$14-1
|
|
bcc __b3
|
|
!:
|
|
// divr16u::@5
|
|
// quotient++;
|
|
// [118] divr16u::quotient#2 = ++ divr16u::quotient#1 -- vwuz1=_inc_vwuz1
|
|
inc.z quotient
|
|
bne !+
|
|
inc.z quotient+1
|
|
!:
|
|
// rem = rem - divisor
|
|
// [119] divr16u::rem#2 = divr16u::rem#6 - $14-1 -- vwuz1=vwuz1_minus_vbuc1
|
|
sec
|
|
lda.z rem
|
|
sbc #$14-1
|
|
sta.z rem
|
|
lda.z rem+1
|
|
sbc #0
|
|
sta.z rem+1
|
|
// [120] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3]
|
|
// [120] phi divr16u::return#0 = divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy
|
|
// [120] phi divr16u::rem#11 = divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy
|
|
// divr16u::@3
|
|
__b3:
|
|
// for( char i : 0..15)
|
|
// [121] divr16u::i#1 = ++ divr16u::i#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
// [122] if(divr16u::i#1!=$10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1
|
|
cpx #$10
|
|
bne __b1
|
|
// divr16u::@6
|
|
// rem16u = rem
|
|
// [123] rem16u#0 = divr16u::rem#11
|
|
// divr16u::@return
|
|
// }
|
|
// [124] return
|
|
rts
|
|
}
|
|
// memset
|
|
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
|
// void * memset(void *str, char c, unsigned int num)
|
|
memset: {
|
|
.const c = ' '
|
|
.const num = $3e8
|
|
.label str = print_screen
|
|
.label end = str+num
|
|
.label dst = $a
|
|
// [126] phi from memset to memset::@1 [phi:memset->memset::@1]
|
|
// [126] phi memset::dst#2 = (char *)memset::str#0 [phi:memset->memset::@1#0] -- pbuz1=pbuc1
|
|
lda #<str
|
|
sta.z dst
|
|
lda #>str
|
|
sta.z dst+1
|
|
// memset::@1
|
|
__b1:
|
|
// for(char* dst = str; dst!=end; dst++)
|
|
// [127] if(memset::dst#2!=memset::end#0) goto memset::@2 -- pbuz1_neq_pbuc1_then_la1
|
|
lda.z dst+1
|
|
cmp #>end
|
|
bne __b2
|
|
lda.z dst
|
|
cmp #<end
|
|
bne __b2
|
|
// memset::@return
|
|
// }
|
|
// [128] return
|
|
rts
|
|
// memset::@2
|
|
__b2:
|
|
// *dst = c
|
|
// [129] *memset::dst#2 = memset::c#0 -- _deref_pbuz1=vbuc1
|
|
lda #c
|
|
ldy #0
|
|
sta (dst),y
|
|
// for(char* dst = str; dst!=end; dst++)
|
|
// [130] memset::dst#1 = ++ memset::dst#2 -- pbuz1=_inc_pbuz1
|
|
inc.z dst
|
|
bne !+
|
|
inc.z dst+1
|
|
!:
|
|
// [126] phi from memset::@2 to memset::@1 [phi:memset::@2->memset::@1]
|
|
// [126] phi memset::dst#2 = memset::dst#1 [phi:memset::@2->memset::@1#0] -- register_copy
|
|
jmp __b1
|
|
}
|
|
// print_char
|
|
// Print a single char
|
|
// void print_char(__register(A) char ch)
|
|
print_char: {
|
|
// *(print_char_cursor++) = ch
|
|
// [132] *print_char_cursor#51 = print_char::ch#3 -- _deref_pbuz1=vbuaa
|
|
ldy #0
|
|
sta (print_char_cursor),y
|
|
// *(print_char_cursor++) = ch;
|
|
// [133] print_char_cursor#10 = ++ print_char_cursor#51 -- pbuz1=_inc_pbuz1
|
|
inc.z print_char_cursor
|
|
bne !+
|
|
inc.z print_char_cursor+1
|
|
!:
|
|
// print_char::@return
|
|
// }
|
|
// [134] return
|
|
rts
|
|
}
|
|
// File Data
|
|
.segment Data
|
|
print_hextab: .text "0123456789abcdef"
|
|
|