2020-04-18 18:54:39 +00:00
|
|
|
@begin: scope:[] from
|
|
|
|
[0] phi()
|
|
|
|
to:@1
|
|
|
|
@1: scope:[] from @begin
|
2020-04-21 22:14:30 +00:00
|
|
|
[1] (byte) printf_cursor_x ← (byte) 0
|
|
|
|
[2] (byte) printf_cursor_y ← (byte) 0
|
|
|
|
[3] (byte*) printf_cursor_ptr ← (byte*) 1024
|
2020-04-18 18:54:39 +00:00
|
|
|
to:@2
|
|
|
|
@2: scope:[] from @1
|
2020-04-21 22:14:30 +00:00
|
|
|
[4] phi()
|
|
|
|
[5] call main
|
2020-04-18 18:54:39 +00:00
|
|
|
to:@end
|
|
|
|
@end: scope:[] from @2
|
2020-04-21 22:14:30 +00:00
|
|
|
[6] phi()
|
2020-04-18 18:54:39 +00:00
|
|
|
|
|
|
|
(void()) main()
|
|
|
|
main: scope:[main] from @2
|
2020-04-21 22:14:30 +00:00
|
|
|
[7] phi()
|
|
|
|
[8] call printf_cls
|
2020-04-18 18:54:39 +00:00
|
|
|
to:main::@1
|
|
|
|
main::@1: scope:[main] from main
|
2020-04-21 22:14:30 +00:00
|
|
|
[9] phi()
|
|
|
|
[10] call printf_string
|
2020-04-18 18:54:39 +00:00
|
|
|
to:main::@2
|
|
|
|
main::@2: scope:[main] from main::@1
|
2020-04-21 22:14:30 +00:00
|
|
|
[11] phi()
|
|
|
|
[12] call printf_ln
|
2020-04-18 18:54:39 +00:00
|
|
|
to:main::@3
|
|
|
|
main::@3: scope:[main] from main::@2
|
2020-04-21 22:14:30 +00:00
|
|
|
[13] phi()
|
|
|
|
[14] call printf_string
|
2020-04-18 18:54:39 +00:00
|
|
|
to:main::@4
|
|
|
|
main::@4: scope:[main] from main::@3
|
2020-04-21 22:14:30 +00:00
|
|
|
[15] phi()
|
|
|
|
[16] call printf_ln
|
2020-04-18 18:54:39 +00:00
|
|
|
to:main::@5
|
|
|
|
main::@5: scope:[main] from main::@4
|
2020-04-21 22:14:30 +00:00
|
|
|
[17] phi()
|
|
|
|
[18] call printf_string
|
2020-04-18 18:54:39 +00:00
|
|
|
to:main::@6
|
|
|
|
main::@6: scope:[main] from main::@5
|
2020-04-21 22:14:30 +00:00
|
|
|
[19] phi()
|
|
|
|
[20] call printf_ln
|
2020-04-18 18:54:39 +00:00
|
|
|
to:main::@7
|
|
|
|
main::@7: scope:[main] from main::@6
|
2020-04-21 22:14:30 +00:00
|
|
|
[21] phi()
|
|
|
|
[22] call printf_string
|
2020-04-18 18:54:39 +00:00
|
|
|
to:main::@return
|
|
|
|
main::@return: scope:[main] from main::@7
|
2020-04-21 22:14:30 +00:00
|
|
|
[23] return
|
2020-04-18 18:54:39 +00:00
|
|
|
to:@return
|
|
|
|
|
|
|
|
(void()) printf_string((byte*) printf_string::str , (byte) printf_string::format_min_length , (byte) printf_string::format_justify_left)
|
|
|
|
printf_string: scope:[printf_string] from main::@1 main::@3 main::@5 main::@7
|
2020-04-21 22:14:30 +00:00
|
|
|
[24] (byte*) printf_string::str#10 ← phi( main::@1/(const byte*) main::str main::@3/(const byte*) main::str1 main::@5/(const byte*) main::str main::@7/(const byte*) main::str1 )
|
|
|
|
[24] (byte) printf_string::format_justify_left#10 ← phi( main::@1/(byte) 0 main::@3/(byte) 0 main::@5/(byte) 1 main::@7/(byte) 1 )
|
2020-04-18 18:54:39 +00:00
|
|
|
to:printf_string::@3
|
|
|
|
printf_string::@3: scope:[printf_string] from printf_string
|
2020-04-21 22:14:30 +00:00
|
|
|
[25] (byte*) strlen::str#1 ← (byte*) printf_string::str#10
|
|
|
|
[26] call strlen
|
|
|
|
[27] (word) strlen::return#2 ← (word) strlen::len#2
|
2020-04-18 18:54:39 +00:00
|
|
|
to:printf_string::@6
|
|
|
|
printf_string::@6: scope:[printf_string] from printf_string::@3
|
2020-04-21 22:14:30 +00:00
|
|
|
[28] (word~) printf_string::$9 ← (word) strlen::return#2
|
|
|
|
[29] (signed byte) printf_string::len#0 ← (signed byte)(word~) printf_string::$9
|
|
|
|
[30] (signed byte) printf_string::padding#1 ← (signed byte) $a - (signed byte) printf_string::len#0
|
|
|
|
[31] if((signed byte) printf_string::padding#1>=(signed byte) 0) goto printf_string::@10
|
2020-04-18 18:54:39 +00:00
|
|
|
to:printf_string::@1
|
|
|
|
printf_string::@10: scope:[printf_string] from printf_string::@6
|
2020-04-21 22:14:30 +00:00
|
|
|
[32] phi()
|
2020-04-18 18:54:39 +00:00
|
|
|
to:printf_string::@1
|
|
|
|
printf_string::@1: scope:[printf_string] from printf_string::@10 printf_string::@6
|
2020-04-21 22:14:30 +00:00
|
|
|
[33] (signed byte) printf_string::padding#3 ← phi( printf_string::@6/(signed byte) 0 printf_string::@10/(signed byte) printf_string::padding#1 )
|
|
|
|
[34] if((byte) 0!=(byte) printf_string::format_justify_left#10) goto printf_string::@2
|
2020-04-18 18:54:39 +00:00
|
|
|
to:printf_string::@8
|
|
|
|
printf_string::@8: scope:[printf_string] from printf_string::@1
|
2020-04-21 22:14:30 +00:00
|
|
|
[35] if((signed byte) 0!=(signed byte) printf_string::padding#3) goto printf_string::@4
|
2020-04-18 18:54:39 +00:00
|
|
|
to:printf_string::@2
|
|
|
|
printf_string::@4: scope:[printf_string] from printf_string::@8
|
2020-04-21 22:14:30 +00:00
|
|
|
[36] (byte) printf_padding::length#0 ← (byte)(signed byte) printf_string::padding#3
|
|
|
|
[37] call printf_padding
|
2020-04-18 18:54:39 +00:00
|
|
|
to:printf_string::@2
|
|
|
|
printf_string::@2: scope:[printf_string] from printf_string::@1 printf_string::@4 printf_string::@8
|
2020-04-21 22:14:30 +00:00
|
|
|
[38] (byte*) printf_str::str#1 ← (byte*) printf_string::str#10
|
|
|
|
[39] call printf_str
|
2020-04-18 18:54:39 +00:00
|
|
|
to:printf_string::@7
|
|
|
|
printf_string::@7: scope:[printf_string] from printf_string::@2
|
2020-04-21 22:14:30 +00:00
|
|
|
[40] if((byte) 0==(byte) printf_string::format_justify_left#10) goto printf_string::@return
|
2020-04-18 18:54:39 +00:00
|
|
|
to:printf_string::@9
|
|
|
|
printf_string::@9: scope:[printf_string] from printf_string::@7
|
2020-04-21 22:14:30 +00:00
|
|
|
[41] if((signed byte) 0!=(signed byte) printf_string::padding#3) goto printf_string::@5
|
2020-04-18 18:54:39 +00:00
|
|
|
to:printf_string::@return
|
|
|
|
printf_string::@5: scope:[printf_string] from printf_string::@9
|
2020-04-21 22:14:30 +00:00
|
|
|
[42] (byte) printf_padding::length#1 ← (byte)(signed byte) printf_string::padding#3
|
|
|
|
[43] call printf_padding
|
2020-04-18 18:54:39 +00:00
|
|
|
to:printf_string::@return
|
|
|
|
printf_string::@return: scope:[printf_string] from printf_string::@5 printf_string::@7 printf_string::@9
|
2020-04-21 22:14:30 +00:00
|
|
|
[44] return
|
2020-04-18 18:54:39 +00:00
|
|
|
to:@return
|
|
|
|
|
|
|
|
(void()) printf_padding((byte) printf_padding::pad , (byte) printf_padding::length)
|
|
|
|
printf_padding: scope:[printf_padding] from printf_string::@4 printf_string::@5
|
2020-04-21 22:14:30 +00:00
|
|
|
[45] (byte) printf_padding::pad#4 ← phi( printf_string::@4/(byte) ' ' printf_string::@5/(byte) ' ' )
|
|
|
|
[45] (byte) printf_padding::length#3 ← phi( printf_string::@4/(byte) printf_padding::length#0 printf_string::@5/(byte) printf_padding::length#1 )
|
2020-04-18 18:54:39 +00:00
|
|
|
to:printf_padding::@1
|
|
|
|
printf_padding::@1: scope:[printf_padding] from printf_padding printf_padding::@3
|
2020-04-21 22:14:30 +00:00
|
|
|
[46] (byte) printf_padding::i#2 ← phi( printf_padding/(byte) 0 printf_padding::@3/(byte) printf_padding::i#1 )
|
|
|
|
[47] if((byte) printf_padding::i#2<(byte) printf_padding::length#3) goto printf_padding::@2
|
2020-04-18 18:54:39 +00:00
|
|
|
to:printf_padding::@return
|
|
|
|
printf_padding::@return: scope:[printf_padding] from printf_padding::@1
|
2020-04-21 22:14:30 +00:00
|
|
|
[48] return
|
2020-04-18 18:54:39 +00:00
|
|
|
to:@return
|
|
|
|
printf_padding::@2: scope:[printf_padding] from printf_padding::@1
|
2020-04-21 22:14:30 +00:00
|
|
|
[49] (byte) printf_char::ch#0 ← (byte) printf_padding::pad#4
|
|
|
|
[50] call printf_char
|
2020-04-18 18:54:39 +00:00
|
|
|
to:printf_padding::@3
|
|
|
|
printf_padding::@3: scope:[printf_padding] from printf_padding::@2
|
2020-04-21 22:14:30 +00:00
|
|
|
[51] (byte) printf_padding::i#1 ← ++ (byte) printf_padding::i#2
|
2020-04-18 18:54:39 +00:00
|
|
|
to:printf_padding::@1
|
|
|
|
|
|
|
|
(void()) printf_char((byte) printf_char::ch)
|
2020-04-21 07:50:36 +00:00
|
|
|
printf_char: scope:[printf_char] from printf_padding::@2 printf_str::@5
|
2020-04-21 22:14:30 +00:00
|
|
|
[52] (byte) printf_char::ch#2 ← phi( printf_padding::@2/(byte) printf_char::ch#0 printf_str::@5/(byte) printf_char::ch#1 )
|
|
|
|
[53] *((byte*) printf_cursor_ptr) ← (byte) printf_char::ch#2
|
|
|
|
[54] (byte*) printf_cursor_ptr ← ++ (byte*) printf_cursor_ptr
|
|
|
|
[55] (byte) printf_cursor_x ← ++ (byte) printf_cursor_x
|
|
|
|
[56] if((byte) printf_cursor_x!=(byte) $28) goto printf_char::@return
|
2020-04-18 18:54:39 +00:00
|
|
|
to:printf_char::@1
|
|
|
|
printf_char::@1: scope:[printf_char] from printf_char
|
2020-04-21 22:14:30 +00:00
|
|
|
[57] (byte) printf_cursor_x ← (byte) 0
|
|
|
|
[58] (byte) printf_cursor_y ← ++ (byte) printf_cursor_y
|
2020-04-25 21:28:38 +00:00
|
|
|
[59] call printf_scroll
|
2020-04-18 18:54:39 +00:00
|
|
|
to:printf_char::@return
|
2020-04-25 21:28:38 +00:00
|
|
|
printf_char::@return: scope:[printf_char] from printf_char printf_char::@1
|
|
|
|
[60] return
|
|
|
|
to:@return
|
|
|
|
|
|
|
|
(void()) printf_scroll()
|
|
|
|
printf_scroll: scope:[printf_scroll] from printf_char::@1 printf_ln
|
|
|
|
[61] if((byte) printf_cursor_y!=(byte) $19) goto printf_scroll::@return
|
|
|
|
to:printf_scroll::@1
|
|
|
|
printf_scroll::@1: scope:[printf_scroll] from printf_scroll
|
|
|
|
[62] phi()
|
|
|
|
[63] call memcpy
|
|
|
|
to:printf_scroll::@2
|
|
|
|
printf_scroll::@2: scope:[printf_scroll] from printf_scroll::@1
|
|
|
|
[64] phi()
|
|
|
|
[65] call memset
|
|
|
|
to:printf_scroll::@3
|
|
|
|
printf_scroll::@3: scope:[printf_scroll] from printf_scroll::@2
|
|
|
|
[66] (byte*~) printf_scroll::$4 ← (byte*) printf_cursor_ptr - (byte) $28
|
|
|
|
[67] (byte*) printf_cursor_ptr ← (byte*~) printf_scroll::$4
|
|
|
|
[68] (byte) printf_cursor_y ← -- (byte) printf_cursor_y
|
|
|
|
to:printf_scroll::@return
|
|
|
|
printf_scroll::@return: scope:[printf_scroll] from printf_scroll printf_scroll::@3
|
|
|
|
[69] return
|
2020-04-18 18:54:39 +00:00
|
|
|
to:@return
|
|
|
|
|
|
|
|
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
2020-04-25 21:28:38 +00:00
|
|
|
memset: scope:[memset] from printf_cls printf_scroll::@2
|
|
|
|
[70] (byte) memset::c#4 ← phi( printf_cls/(byte) ' ' printf_scroll::@2/(byte) ' ' )
|
|
|
|
[70] (void*) memset::str#3 ← phi( printf_cls/(void*) 1024 printf_scroll::@2/(void*)(number) $400+(number) $28*(number) $19-(number) $28 )
|
|
|
|
[70] (word) memset::num#2 ← phi( printf_cls/(word)(number) $28*(number) $19 printf_scroll::@2/(byte) $28 )
|
|
|
|
[71] if((word) memset::num#2<=(byte) 0) goto memset::@return
|
2020-04-18 18:54:39 +00:00
|
|
|
to:memset::@1
|
|
|
|
memset::@1: scope:[memset] from memset
|
2020-04-25 21:28:38 +00:00
|
|
|
[72] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2
|
|
|
|
[73] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3
|
2020-04-18 18:54:39 +00:00
|
|
|
to:memset::@2
|
|
|
|
memset::@2: scope:[memset] from memset::@1 memset::@3
|
2020-04-25 21:28:38 +00:00
|
|
|
[74] (byte*) memset::dst#2 ← phi( memset::@1/(byte*) memset::dst#4 memset::@3/(byte*) memset::dst#1 )
|
|
|
|
[75] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3
|
2020-04-18 18:54:39 +00:00
|
|
|
to:memset::@return
|
|
|
|
memset::@return: scope:[memset] from memset memset::@2
|
2020-04-25 21:28:38 +00:00
|
|
|
[76] return
|
2020-04-18 18:54:39 +00:00
|
|
|
to:@return
|
|
|
|
memset::@3: scope:[memset] from memset::@2
|
2020-04-25 21:28:38 +00:00
|
|
|
[77] *((byte*) memset::dst#2) ← (byte) memset::c#4
|
|
|
|
[78] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
|
2020-04-18 18:54:39 +00:00
|
|
|
to:memset::@2
|
|
|
|
|
|
|
|
(void*()) memcpy((void*) memcpy::destination , (void*) memcpy::source , (word) memcpy::num)
|
2020-04-25 21:28:38 +00:00
|
|
|
memcpy: scope:[memcpy] from printf_scroll::@1
|
|
|
|
[79] phi()
|
2020-04-18 18:54:39 +00:00
|
|
|
to:memcpy::@1
|
|
|
|
memcpy::@1: scope:[memcpy] from memcpy memcpy::@2
|
2020-04-25 21:28:38 +00:00
|
|
|
[80] (byte*) memcpy::dst#2 ← phi( memcpy/(byte*)(const void*) memcpy::destination#0 memcpy::@2/(byte*) memcpy::dst#1 )
|
|
|
|
[80] (byte*) memcpy::src#2 ← phi( memcpy/(byte*)(const void*) memcpy::source#0 memcpy::@2/(byte*) memcpy::src#1 )
|
|
|
|
[81] if((byte*) memcpy::src#2!=(const byte*) memcpy::src_end#0) goto memcpy::@2
|
2020-04-18 18:54:39 +00:00
|
|
|
to:memcpy::@return
|
|
|
|
memcpy::@return: scope:[memcpy] from memcpy::@1
|
2020-04-25 21:28:38 +00:00
|
|
|
[82] return
|
2020-04-18 18:54:39 +00:00
|
|
|
to:@return
|
|
|
|
memcpy::@2: scope:[memcpy] from memcpy::@1
|
2020-04-25 21:28:38 +00:00
|
|
|
[83] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2)
|
|
|
|
[84] (byte*) memcpy::dst#1 ← ++ (byte*) memcpy::dst#2
|
|
|
|
[85] (byte*) memcpy::src#1 ← ++ (byte*) memcpy::src#2
|
2020-04-18 18:54:39 +00:00
|
|
|
to:memcpy::@1
|
|
|
|
|
|
|
|
(void()) printf_str((byte*) printf_str::str)
|
|
|
|
printf_str: scope:[printf_str] from printf_string::@2
|
2020-04-25 21:28:38 +00:00
|
|
|
[86] phi()
|
2020-04-18 18:54:39 +00:00
|
|
|
to:printf_str::@1
|
2020-04-21 07:50:36 +00:00
|
|
|
printf_str::@1: scope:[printf_str] from printf_str printf_str::@4 printf_str::@5
|
2020-04-25 21:28:38 +00:00
|
|
|
[87] (byte*) printf_str::str#2 ← phi( printf_str/(byte*) printf_str::str#1 printf_str::@4/(byte*) printf_str::str#0 printf_str::@5/(byte*) printf_str::str#0 )
|
2020-04-21 07:50:36 +00:00
|
|
|
to:printf_str::@2
|
|
|
|
printf_str::@2: scope:[printf_str] from printf_str::@1
|
2020-04-25 21:28:38 +00:00
|
|
|
[88] (byte) printf_str::ch#0 ← *((byte*) printf_str::str#2)
|
|
|
|
[89] (byte*) printf_str::str#0 ← ++ (byte*) printf_str::str#2
|
|
|
|
[90] if((byte) printf_str::ch#0!=(byte) 0) goto printf_str::@3
|
2020-04-18 18:54:39 +00:00
|
|
|
to:printf_str::@return
|
2020-04-21 07:50:36 +00:00
|
|
|
printf_str::@return: scope:[printf_str] from printf_str::@2
|
2020-04-25 21:28:38 +00:00
|
|
|
[91] return
|
2020-04-18 18:54:39 +00:00
|
|
|
to:@return
|
|
|
|
printf_str::@3: scope:[printf_str] from printf_str::@2
|
2020-04-25 21:28:38 +00:00
|
|
|
[92] if((byte) printf_str::ch#0==(byte) '
|
2020-04-21 07:50:36 +00:00
|
|
|
') goto printf_str::@4
|
|
|
|
to:printf_str::@5
|
|
|
|
printf_str::@5: scope:[printf_str] from printf_str::@3
|
2020-04-25 21:28:38 +00:00
|
|
|
[93] (byte) printf_char::ch#1 ← (byte) printf_str::ch#0
|
|
|
|
[94] call printf_char
|
2020-04-21 07:50:36 +00:00
|
|
|
to:printf_str::@1
|
|
|
|
printf_str::@4: scope:[printf_str] from printf_str::@3
|
2020-04-25 21:28:38 +00:00
|
|
|
[95] phi()
|
|
|
|
[96] call printf_ln
|
2020-04-18 18:54:39 +00:00
|
|
|
to:printf_str::@1
|
|
|
|
|
2020-04-21 07:50:36 +00:00
|
|
|
(void()) printf_ln()
|
|
|
|
printf_ln: scope:[printf_ln] from main::@2 main::@4 main::@6 printf_str::@4
|
2020-04-25 21:28:38 +00:00
|
|
|
[97] (byte*~) printf_ln::$0 ← (byte*) printf_cursor_ptr - (byte) printf_cursor_x
|
|
|
|
[98] (byte*~) printf_ln::$1 ← (byte*~) printf_ln::$0 + (byte) $28
|
|
|
|
[99] (byte*) printf_cursor_ptr ← (byte*~) printf_ln::$1
|
|
|
|
[100] (byte) printf_cursor_x ← (byte) 0
|
|
|
|
[101] (byte) printf_cursor_y ← ++ (byte) printf_cursor_y
|
|
|
|
[102] call printf_scroll
|
2020-04-21 07:50:36 +00:00
|
|
|
to:printf_ln::@return
|
2020-04-21 22:14:30 +00:00
|
|
|
printf_ln::@return: scope:[printf_ln] from printf_ln
|
2020-04-25 21:28:38 +00:00
|
|
|
[103] return
|
2020-04-21 07:50:36 +00:00
|
|
|
to:@return
|
|
|
|
|
2020-04-18 18:54:39 +00:00
|
|
|
(word()) strlen((byte*) strlen::str)
|
|
|
|
strlen: scope:[strlen] from printf_string::@3
|
2020-04-25 21:28:38 +00:00
|
|
|
[104] phi()
|
2020-04-18 18:54:39 +00:00
|
|
|
to:strlen::@1
|
|
|
|
strlen::@1: scope:[strlen] from strlen strlen::@2
|
2020-04-25 21:28:38 +00:00
|
|
|
[105] (word) strlen::len#2 ← phi( strlen/(word) 0 strlen::@2/(word) strlen::len#1 )
|
|
|
|
[105] (byte*) strlen::str#2 ← phi( strlen/(byte*) strlen::str#1 strlen::@2/(byte*) strlen::str#0 )
|
|
|
|
[106] if((byte) 0!=*((byte*) strlen::str#2)) goto strlen::@2
|
2020-04-18 18:54:39 +00:00
|
|
|
to:strlen::@return
|
|
|
|
strlen::@return: scope:[strlen] from strlen::@1
|
2020-04-25 21:28:38 +00:00
|
|
|
[107] return
|
2020-04-18 18:54:39 +00:00
|
|
|
to:@return
|
|
|
|
strlen::@2: scope:[strlen] from strlen::@1
|
2020-04-25 21:28:38 +00:00
|
|
|
[108] (word) strlen::len#1 ← ++ (word) strlen::len#2
|
|
|
|
[109] (byte*) strlen::str#0 ← ++ (byte*) strlen::str#2
|
2020-04-18 18:54:39 +00:00
|
|
|
to:strlen::@1
|
|
|
|
|
|
|
|
(void()) printf_cls()
|
|
|
|
printf_cls: scope:[printf_cls] from main
|
2020-04-25 21:28:38 +00:00
|
|
|
[110] phi()
|
|
|
|
[111] call memset
|
2020-04-18 18:54:39 +00:00
|
|
|
to:printf_cls::@1
|
|
|
|
printf_cls::@1: scope:[printf_cls] from printf_cls
|
2020-04-25 21:28:38 +00:00
|
|
|
[112] (byte*) printf_cursor_ptr ← (byte*) 1024
|
|
|
|
[113] (byte) printf_cursor_x ← (byte) 0
|
|
|
|
[114] (byte) printf_cursor_y ← (byte) 0
|
2020-04-18 18:54:39 +00:00
|
|
|
to:printf_cls::@return
|
|
|
|
printf_cls::@return: scope:[printf_cls] from printf_cls::@1
|
2020-04-25 21:28:38 +00:00
|
|
|
[115] return
|
2020-04-18 18:54:39 +00:00
|
|
|
to:@return
|