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