mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-04-11 20:37:40 +00:00
This commit is contained in:
parent
d7143771ba
commit
f6ee599d79
src
main
test
@ -6,6 +6,7 @@ import dk.camelot64.kickc.model.ControlFlowBlock;
|
||||
import dk.camelot64.kickc.model.Program;
|
||||
import dk.camelot64.kickc.model.statements.Statement;
|
||||
import dk.camelot64.kickc.model.statements.StatementCall;
|
||||
import dk.camelot64.kickc.model.symbols.Procedure;
|
||||
import dk.camelot64.kickc.model.types.SymbolType;
|
||||
import dk.camelot64.kickc.model.values.*;
|
||||
|
||||
@ -22,10 +23,14 @@ public class Pass1PrintfIntrinsicRewrite extends Pass2SsaOptimization {
|
||||
|
||||
/** The printf procedure name. */
|
||||
public static final String INTRINSIC_PRINTF_NAME = "printf";
|
||||
/** The printf routine used to print a raw char */
|
||||
public static final String PRINTF_CHAR = "printf_char";
|
||||
/** The printf routine used to print a raw string */
|
||||
public static final String PRINTF_STR = "printf_str";
|
||||
/** The printf routine used to print formatted strings. */
|
||||
public static final String PRINTF_STRING = "printf_string";
|
||||
/** The printf routine used to print signed chars. */
|
||||
public static final String PRINTF_SCHAR = "printf_schar";
|
||||
public static final String PRINTF_SCHAR = "printf_schar";
|
||||
/** The printf routine used to print unsigned chars. */
|
||||
public static final String PRINTF_UCHAR = "printf_uchar";
|
||||
/** The printf routine used to print signed integers. */
|
||||
@ -36,8 +41,11 @@ public class Pass1PrintfIntrinsicRewrite extends Pass2SsaOptimization {
|
||||
public static final String PRINTF_SLONG = "printf_slong";
|
||||
/** The printf routine used to print unsigned long integers. */
|
||||
public static final String PRINTF_ULONG = "printf_ulong";
|
||||
public static final String DECIMAL = "DECIMAL";
|
||||
/** Hexadecimal Radix name. */
|
||||
public static final String HEXADECIMAL = "HEXADECIMAL";
|
||||
/** Decimal Radix name. */
|
||||
public static final String DECIMAL = "DECIMAL";
|
||||
/** Octal Radix name. */
|
||||
public static final String OCTAL = "OCTAL";
|
||||
|
||||
public Pass1PrintfIntrinsicRewrite(Program program) {
|
||||
@ -100,10 +108,12 @@ public class Pass1PrintfIntrinsicRewrite extends Pass2SsaOptimization {
|
||||
|
||||
// First output the non-matching part before the pattern
|
||||
String prefix = formatString.substring(formatIdx, start);
|
||||
printfConstantString(prefix, printfCall, stmtIt, formatEncoding);
|
||||
addPrintfCall(PRINTF_STR, Arrays.asList(new ConstantString(prefix, formatEncoding, true)), stmtIt, printfCall);
|
||||
formatIdx = end;
|
||||
|
||||
if(typeField.equals("s")) {
|
||||
if(typeField.equals("%")) {
|
||||
addPrintfCall(PRINTF_CHAR, Arrays.asList(new ConstantChar('%', formatEncoding)), stmtIt, printfCall);
|
||||
} else if(typeField.equals("s")) {
|
||||
// A formatted string
|
||||
//struct printf_format_string {
|
||||
// char min_length; // The minimal number of chars to output (used for padding with spaces or 0).
|
||||
@ -114,9 +124,7 @@ public class Pass1PrintfIntrinsicRewrite extends Pass2SsaOptimization {
|
||||
new ConstantInteger(width, SymbolType.BYTE),
|
||||
new ConstantInteger(leftJustify, SymbolType.BYTE)
|
||||
));
|
||||
final StatementCall call_printf_str = new StatementCall(null, PRINTF_STRING, Arrays.asList(parameters.get(paramIdx), format_string_struct), printfCall.getSource(), Comment.NO_COMMENTS);
|
||||
call_printf_str.setProcedure(getScope().getLocalProcedure(call_printf_str.getProcedureName()).getRef());
|
||||
stmtIt.add(call_printf_str);
|
||||
addPrintfCall(PRINTF_STRING, Arrays.asList(parameters.get(paramIdx), format_string_struct), stmtIt, printfCall);
|
||||
paramIdx++;
|
||||
} else if("diuxXo".contains(typeField)) {
|
||||
// A formatted integer
|
||||
@ -177,15 +185,29 @@ public class Pass1PrintfIntrinsicRewrite extends Pass2SsaOptimization {
|
||||
new ConstantInteger(zeroPadding, SymbolType.BYTE),
|
||||
radix
|
||||
));
|
||||
final StatementCall call_printf_str = new StatementCall(null, printf_number_procedure, Arrays.asList(parameters.get(paramIdx), format_number_struct), printfCall.getSource(), Comment.NO_COMMENTS);
|
||||
call_printf_str.setProcedure(getScope().getLocalProcedure(call_printf_str.getProcedureName()).getRef());
|
||||
stmtIt.add(call_printf_str);
|
||||
addPrintfCall(printf_number_procedure, Arrays.asList(parameters.get(paramIdx), format_number_struct), stmtIt, printfCall);
|
||||
paramIdx++;
|
||||
} else if(typeField.equals("c")) {
|
||||
// Print char
|
||||
addPrintfCall(PRINTF_CHAR, Arrays.asList(parameters.get(paramIdx)), stmtIt, printfCall);
|
||||
paramIdx++;
|
||||
} else if(typeField.equals("p")) {
|
||||
// Print a pointer
|
||||
final ValueList format_number_struct =
|
||||
new ValueList(Arrays.asList(
|
||||
new ConstantInteger(width, SymbolType.BYTE),
|
||||
new ConstantInteger(leftJustify, SymbolType.BYTE),
|
||||
new ConstantInteger(signAlways, SymbolType.BYTE),
|
||||
new ConstantInteger(zeroPadding, SymbolType.BYTE),
|
||||
getScope().getLocalConstant(HEXADECIMAL).getRef()
|
||||
));
|
||||
addPrintfCall(PRINTF_UINT, Arrays.asList(new CastValue(SymbolType.WORD, parameters.get(paramIdx)), format_number_struct), stmtIt, printfCall);
|
||||
paramIdx++;
|
||||
}
|
||||
}
|
||||
// Grab the rest
|
||||
String suffix = formatString.substring(formatIdx);
|
||||
printfConstantString(suffix, printfCall, stmtIt, formatEncoding);
|
||||
addPrintfCall(PRINTF_STR, Arrays.asList(new ConstantString(suffix, formatEncoding, true)), stmtIt, printfCall);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -193,17 +215,20 @@ public class Pass1PrintfIntrinsicRewrite extends Pass2SsaOptimization {
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a printf_str() that prints a constant string.
|
||||
*
|
||||
* @param prefix The string to print
|
||||
* @param printfCall The original printf call
|
||||
* Adds a call to a PRINTF sub-function.
|
||||
* @param printfProcedureName The name of ths sub-function to call
|
||||
* @param printfProcedureParameters The parameters to pass
|
||||
* @param stmtIt The statement iterator to add to
|
||||
* @param encoding The string encoding
|
||||
* @param printfCall The original printf call statement
|
||||
*/
|
||||
private void printfConstantString(String prefix, StatementCall printfCall, ListIterator<Statement> stmtIt, StringEncoding encoding) {
|
||||
final StatementCall call_printf_str = new StatementCall(null, "printf_str", Arrays.asList(new ConstantString(prefix, encoding, true)), printfCall.getSource(), Comment.NO_COMMENTS);
|
||||
call_printf_str.setProcedure(getScope().getLocalProcedure(call_printf_str.getProcedureName()).getRef());
|
||||
stmtIt.add(call_printf_str);
|
||||
private void addPrintfCall(String printfProcedureName, List<RValue> printfProcedureParameters, ListIterator<Statement> stmtIt, StatementCall printfCall) {
|
||||
final StatementCall call_printf_str_prefix = new StatementCall(null, printfProcedureName, printfProcedureParameters, printfCall.getSource(), Comment.NO_COMMENTS);
|
||||
final Procedure printfProcedure = getScope().getLocalProcedure(call_printf_str_prefix.getProcedureName());
|
||||
if(printfProcedure==null) {
|
||||
throw new CompileError("Needed printf sub-procedure not found " + printfProcedureName+"().", printfCall.getSource());
|
||||
}
|
||||
call_printf_str_prefix.setProcedure(printfProcedure.getRef());
|
||||
stmtIt.add(call_printf_str_prefix);
|
||||
}
|
||||
|
||||
|
||||
|
@ -3,6 +3,11 @@
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
// Print a formatted string.
|
||||
// https://en.wikipedia.org/wiki/Printf_format_string
|
||||
// This implementation supports decimal, octal and hexadecimal radix. It supports min length, left/right justify, zero-padding and always-sign.
|
||||
__intrinsic void printf(char* format, ...);
|
||||
|
||||
// Clear the screen. Also places cursor at the top left.
|
||||
void printf_cls();
|
||||
|
||||
|
@ -13,6 +13,11 @@ __ma char* printf_char_cursor = PRINTF_SCREEN_ADDRESS;
|
||||
// Buffer used for stringified number being printed
|
||||
struct printf_buffer_number printf_buffer;
|
||||
|
||||
// Print a formatted string.
|
||||
// https://en.wikipedia.org/wiki/Printf_format_string
|
||||
// This implementation supports decimal, octal and hexadecimal radix. It supports min length, left/right justify, zero-padding and always-sign.
|
||||
__intrinsic void printf(char* format, ...);
|
||||
|
||||
// Clear the screen. Also resets current line/char cursor.
|
||||
void printf_cls() {
|
||||
memset(printf_screen, ' ', PRINTF_SCREEN_BYTES);
|
||||
@ -24,7 +29,8 @@ void printf_cls() {
|
||||
// If the end of the screen is reached scroll it up one char and place the cursor at the
|
||||
void printf_char(char ch) {
|
||||
*(printf_char_cursor++) = ch;
|
||||
if(printf_char_cursor==printf_screen+PRINTF_SCREEN_BYTES) {
|
||||
// Scroll the screen if the cursor has moved past the end of the screen
|
||||
if(printf_char_cursor>=(printf_screen+PRINTF_SCREEN_BYTES)) {
|
||||
memcpy(printf_screen, printf_screen+PRINTF_SCREEN_WIDTH, PRINTF_SCREEN_BYTES-PRINTF_SCREEN_WIDTH);
|
||||
memset(printf_screen+PRINTF_SCREEN_BYTES-PRINTF_SCREEN_WIDTH, ' ', PRINTF_SCREEN_WIDTH);
|
||||
printf_char_cursor = printf_char_cursor-PRINTF_SCREEN_WIDTH;
|
||||
@ -47,9 +53,15 @@ void printf_padding(char pad, char length) {
|
||||
}
|
||||
|
||||
// Print a zero-terminated string
|
||||
// Handles escape codes such as newline
|
||||
void printf_str(char* str) {
|
||||
while(*str) {
|
||||
printf_char(*str++);
|
||||
while(true) {
|
||||
char ch = *str++;
|
||||
if(ch==0) break;
|
||||
if(ch=='\n')
|
||||
printf_ln();
|
||||
else
|
||||
printf_char(ch);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -40,6 +40,21 @@ public class TestPrograms {
|
||||
public TestPrograms() {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPrintfError1() throws IOException, URISyntaxException {
|
||||
assertError("printf-error-1.c", "Needed printf sub-procedure not found");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPrintf13() throws IOException, URISyntaxException {
|
||||
compileAndCompare("printf-13.c");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPrintf12() throws IOException, URISyntaxException {
|
||||
compileAndCompare("printf-12.c");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPrintf11() throws IOException, URISyntaxException {
|
||||
compileAndCompare("printf-11.c");
|
||||
|
36
src/test/kc/printf-12.c
Normal file
36
src/test/kc/printf-12.c
Normal file
@ -0,0 +1,36 @@
|
||||
// Tests printf function call rewriting
|
||||
// Print a bunch of different stuff using printf
|
||||
|
||||
#include <printf.h>
|
||||
|
||||
void main() {
|
||||
printf_cls();
|
||||
char c = 'x';
|
||||
signed char sc = -12;
|
||||
unsigned char uc = 34;
|
||||
signed int si = -1234;
|
||||
unsigned int ui = 5678;
|
||||
signed long sl = -123456;
|
||||
unsigned long ul = 567890;
|
||||
|
||||
// char
|
||||
printf("A char: %c\n", c);
|
||||
// pointer
|
||||
printf("A pointer: %p\n", &c);
|
||||
// percent sign
|
||||
printf("A percent: %%\n");
|
||||
// signed char
|
||||
printf("A signed char: %hhd\n", sc);
|
||||
// unsigned char
|
||||
printf("An unsigned char: %hhu\n", uc);
|
||||
// signed int
|
||||
printf("A signed int: %d\n", si);
|
||||
// unsigned int
|
||||
printf("An unsigned int: %u\n", ui);
|
||||
// signed long
|
||||
printf("A signed long: %ld\n", sl);
|
||||
// unsigned long
|
||||
printf("An unsigned long: %lu\n", ul);
|
||||
|
||||
}
|
||||
|
27
src/test/kc/printf-13.c
Normal file
27
src/test/kc/printf-13.c
Normal file
@ -0,0 +1,27 @@
|
||||
// Tests printf function call rewriting
|
||||
// Print using different formats
|
||||
|
||||
#include <printf.h>
|
||||
|
||||
void main() {
|
||||
printf_cls();
|
||||
|
||||
// fixed width - right justify
|
||||
printf("%%3s '%3s' '%3s' '%3s' '%3s'\n", "x", "xx", "xxx", "xxxx");
|
||||
// fixed width - left justify
|
||||
printf("%%-3s '%-3s' '%-3s' '%-3s' '%-3s'\n", "x", "xx", "xxx", "xxxx");
|
||||
// fixed width - right justify
|
||||
printf("%%3d '%3d' '%3d' '%3d' '%3d'\n", 1, 11, 111, 1111);
|
||||
// fixed width - left justify
|
||||
printf("%%-3d '%-3d' '%-3d' '%-3d' '%-3d'\n", -2, -22, -222, -2222);
|
||||
// fixed width - right justify - always sign
|
||||
printf("%%+3d '%+3d' '%+3d' '%+3d' '%+3d'\n", 3, -44, 555, -6666);
|
||||
// fixed width - zero-pad
|
||||
printf("%%03d '%03d' '%03d' '%03d' '%3d'\n", 1, 11, 111, 1111);
|
||||
// octal
|
||||
printf("%%o '%o' '%o' '%o' '%o'\n", 1, 11, 111, 1111);
|
||||
// hexadecimal
|
||||
printf("%%x '%x' '%x' '%x' '%x'\n", 1, 11, 111, 1111);
|
||||
|
||||
}
|
||||
|
9
src/test/kc/printf-error-1.c
Normal file
9
src/test/kc/printf-error-1.c
Normal file
@ -0,0 +1,9 @@
|
||||
// Tests printf function call rewriting
|
||||
// Print a bunch of different stuff using printf
|
||||
|
||||
__intrinsic void printf(char* format, ...);
|
||||
|
||||
void main() {
|
||||
printf("Hello World!");
|
||||
}
|
||||
|
1275
src/test/ref/printf-12.asm
Normal file
1275
src/test/ref/printf-12.asm
Normal file
File diff suppressed because it is too large
Load Diff
702
src/test/ref/printf-12.cfg
Normal file
702
src/test/ref/printf-12.cfg
Normal file
@ -0,0 +1,702 @@
|
||||
@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] (volatile byte) main::c ← (byte) 'x'
|
||||
[9] call printf_str
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1
|
||||
[10] (byte) printf_char::ch#3 ← (volatile byte) main::c
|
||||
[11] call printf_char
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@2
|
||||
[12] phi()
|
||||
[13] call printf_str
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@3
|
||||
[14] phi()
|
||||
[15] call printf_str
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main::@4
|
||||
[16] phi()
|
||||
[17] call printf_uint
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@5
|
||||
[18] phi()
|
||||
[19] call printf_str
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main::@6
|
||||
[20] phi()
|
||||
[21] call printf_str
|
||||
to:main::@8
|
||||
main::@8: scope:[main] from main::@7
|
||||
[22] phi()
|
||||
[23] call printf_char
|
||||
to:main::@9
|
||||
main::@9: scope:[main] from main::@8
|
||||
[24] phi()
|
||||
[25] call printf_str
|
||||
to:main::@10
|
||||
main::@10: scope:[main] from main::@9
|
||||
[26] phi()
|
||||
[27] call printf_str
|
||||
to:main::@11
|
||||
main::@11: scope:[main] from main::@10
|
||||
[28] phi()
|
||||
[29] call printf_schar
|
||||
to:main::@12
|
||||
main::@12: scope:[main] from main::@11
|
||||
[30] phi()
|
||||
[31] call printf_str
|
||||
to:main::@13
|
||||
main::@13: scope:[main] from main::@12
|
||||
[32] phi()
|
||||
[33] call printf_str
|
||||
to:main::@14
|
||||
main::@14: scope:[main] from main::@13
|
||||
[34] phi()
|
||||
[35] call printf_uchar
|
||||
to:main::@15
|
||||
main::@15: scope:[main] from main::@14
|
||||
[36] phi()
|
||||
[37] call printf_str
|
||||
to:main::@16
|
||||
main::@16: scope:[main] from main::@15
|
||||
[38] phi()
|
||||
[39] call printf_str
|
||||
to:main::@17
|
||||
main::@17: scope:[main] from main::@16
|
||||
[40] phi()
|
||||
[41] call printf_sint
|
||||
to:main::@18
|
||||
main::@18: scope:[main] from main::@17
|
||||
[42] phi()
|
||||
[43] call printf_str
|
||||
to:main::@19
|
||||
main::@19: scope:[main] from main::@18
|
||||
[44] phi()
|
||||
[45] call printf_str
|
||||
to:main::@20
|
||||
main::@20: scope:[main] from main::@19
|
||||
[46] phi()
|
||||
[47] call printf_uint
|
||||
to:main::@21
|
||||
main::@21: scope:[main] from main::@20
|
||||
[48] phi()
|
||||
[49] call printf_str
|
||||
to:main::@22
|
||||
main::@22: scope:[main] from main::@21
|
||||
[50] phi()
|
||||
[51] call printf_str
|
||||
to:main::@23
|
||||
main::@23: scope:[main] from main::@22
|
||||
[52] phi()
|
||||
[53] call printf_slong
|
||||
to:main::@24
|
||||
main::@24: scope:[main] from main::@23
|
||||
[54] phi()
|
||||
[55] call printf_str
|
||||
to:main::@25
|
||||
main::@25: scope:[main] from main::@24
|
||||
[56] phi()
|
||||
[57] call printf_str
|
||||
to:main::@26
|
||||
main::@26: scope:[main] from main::@25
|
||||
[58] phi()
|
||||
[59] call printf_ulong
|
||||
to:main::@27
|
||||
main::@27: scope:[main] from main::@26
|
||||
[60] phi()
|
||||
[61] call printf_str
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@27
|
||||
[62] return
|
||||
to:@return
|
||||
|
||||
(void()) printf_str((byte*) printf_str::str)
|
||||
printf_str: scope:[printf_str] from main::@1 main::@10 main::@12 main::@13 main::@15 main::@16 main::@18 main::@19 main::@21 main::@22 main::@24 main::@25 main::@27 main::@3 main::@4 main::@6 main::@7 main::@9 printf_number_buffer::@4
|
||||
[63] (byte*) printf_str::str#22 ← phi( main::@1/(const byte*) main::str main::@10/(const byte*) main::str6 main::@12/(const byte*) main::str1 main::@13/(const byte*) main::str8 main::@15/(const byte*) main::str1 main::@16/(const byte*) main::str10 main::@18/(const byte*) main::str1 main::@19/(const byte*) main::str12 main::@21/(const byte*) main::str1 main::@22/(const byte*) main::str14 main::@24/(const byte*) main::str1 main::@25/(const byte*) main::str16 main::@27/(const byte*) main::str1 main::@3/(const byte*) main::str1 main::@4/(const byte*) main::str2 main::@6/(const byte*) main::str1 main::@7/(const byte*) main::str4 main::@9/(const byte*) main::str1 printf_number_buffer::@4/(byte*) printf_str::str#1 )
|
||||
to:printf_str::@1
|
||||
printf_str::@1: scope:[printf_str] from printf_str printf_str::@4 printf_str::@5
|
||||
[64] (byte*) printf_str::str#20 ← phi( printf_str/(byte*) printf_str::str#22 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
|
||||
[65] (byte) printf_str::ch#0 ← *((byte*) printf_str::str#20)
|
||||
[66] (byte*) printf_str::str#0 ← ++ (byte*) printf_str::str#20
|
||||
[67] if((byte) printf_str::ch#0!=(byte) 0) goto printf_str::@3
|
||||
to:printf_str::@return
|
||||
printf_str::@return: scope:[printf_str] from printf_str::@2
|
||||
[68] return
|
||||
to:@return
|
||||
printf_str::@3: scope:[printf_str] from printf_str::@2
|
||||
[69] 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
|
||||
[70] (byte) printf_char::ch#1 ← (byte) printf_str::ch#0
|
||||
[71] call printf_char
|
||||
to:printf_str::@1
|
||||
printf_str::@4: scope:[printf_str] from printf_str::@3
|
||||
[72] phi()
|
||||
[73] call printf_ln
|
||||
to:printf_str::@1
|
||||
|
||||
(void()) printf_ln()
|
||||
printf_ln: scope:[printf_ln] from printf_str::@4
|
||||
[74] phi()
|
||||
to:printf_ln::@1
|
||||
printf_ln::@1: scope:[printf_ln] from printf_ln printf_ln::@1
|
||||
[75] (byte*) printf_line_cursor ← (byte*) printf_line_cursor + (byte) $28
|
||||
[76] 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
|
||||
[77] (byte*) printf_char_cursor ← (byte*) printf_line_cursor
|
||||
to:printf_ln::@return
|
||||
printf_ln::@return: scope:[printf_ln] from printf_ln::@2
|
||||
[78] return
|
||||
to:@return
|
||||
|
||||
(void()) printf_char((byte) printf_char::ch)
|
||||
printf_char: scope:[printf_char] from main::@2 main::@8 printf_number_buffer::@8 printf_padding::@2 printf_str::@5
|
||||
[79] (byte) printf_char::ch#5 ← phi( main::@2/(byte) printf_char::ch#3 main::@8/(byte) '%' printf_number_buffer::@8/(byte) printf_char::ch#2 printf_padding::@2/(byte) printf_char::ch#0 printf_str::@5/(byte) printf_char::ch#1 )
|
||||
[80] *((byte*) printf_char_cursor) ← (byte) printf_char::ch#5
|
||||
[81] (byte*) printf_char_cursor ← ++ (byte*) printf_char_cursor
|
||||
[82] if((byte*) printf_char_cursor<(const byte*) printf_screen+(word)(number) $28*(number) $19) goto printf_char::@return
|
||||
to:printf_char::@1
|
||||
printf_char::@1: scope:[printf_char] from printf_char
|
||||
[83] phi()
|
||||
[84] call memcpy
|
||||
to:printf_char::@2
|
||||
printf_char::@2: scope:[printf_char] from printf_char::@1
|
||||
[85] phi()
|
||||
[86] call memset
|
||||
to:printf_char::@3
|
||||
printf_char::@3: scope:[printf_char] from printf_char::@2
|
||||
[87] (byte*~) printf_char::$8 ← (byte*) printf_char_cursor - (byte) $28
|
||||
[88] (byte*) printf_char_cursor ← (byte*~) printf_char::$8
|
||||
[89] (byte*) printf_line_cursor ← (byte*) printf_char_cursor
|
||||
to:printf_char::@return
|
||||
printf_char::@return: scope:[printf_char] from printf_char printf_char::@3
|
||||
[90] return
|
||||
to:@return
|
||||
|
||||
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
||||
memset: scope:[memset] from printf_char::@2 printf_cls
|
||||
[91] (byte) memset::c#4 ← phi( printf_char::@2/(byte) ' ' printf_cls/(byte) ' ' )
|
||||
[91] (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 )
|
||||
[91] (word) memset::num#2 ← phi( printf_char::@2/(byte) $28 printf_cls/(word)(number) $28*(number) $19 )
|
||||
[92] if((word) memset::num#2<=(byte) 0) goto memset::@return
|
||||
to:memset::@1
|
||||
memset::@1: scope:[memset] from memset
|
||||
[93] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2
|
||||
[94] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3
|
||||
to:memset::@2
|
||||
memset::@2: scope:[memset] from memset::@1 memset::@3
|
||||
[95] (byte*) memset::dst#2 ← phi( memset::@1/(byte*) memset::dst#4 memset::@3/(byte*) memset::dst#1 )
|
||||
[96] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3
|
||||
to:memset::@return
|
||||
memset::@return: scope:[memset] from memset memset::@2
|
||||
[97] return
|
||||
to:@return
|
||||
memset::@3: scope:[memset] from memset::@2
|
||||
[98] *((byte*) memset::dst#2) ← (byte) memset::c#4
|
||||
[99] (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
|
||||
[100] phi()
|
||||
to:memcpy::@1
|
||||
memcpy::@1: scope:[memcpy] from memcpy memcpy::@2
|
||||
[101] (byte*) memcpy::dst#2 ← phi( memcpy/(byte*)(const void*) memcpy::destination#0 memcpy::@2/(byte*) memcpy::dst#1 )
|
||||
[101] (byte*) memcpy::src#2 ← phi( memcpy/(byte*)(const void*) memcpy::source#0 memcpy::@2/(byte*) memcpy::src#1 )
|
||||
[102] if((byte*) memcpy::src#2!=(const byte*) memcpy::src_end#0) goto memcpy::@2
|
||||
to:memcpy::@return
|
||||
memcpy::@return: scope:[memcpy] from memcpy::@1
|
||||
[103] return
|
||||
to:@return
|
||||
memcpy::@2: scope:[memcpy] from memcpy::@1
|
||||
[104] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2)
|
||||
[105] (byte*) memcpy::dst#1 ← ++ (byte*) memcpy::dst#2
|
||||
[106] (byte*) memcpy::src#1 ← ++ (byte*) memcpy::src#2
|
||||
to:memcpy::@1
|
||||
|
||||
(void()) printf_ulong((dword) printf_ulong::uvalue , (byte) printf_ulong::format_min_length , (byte) printf_ulong::format_justify_left , (byte) printf_ulong::format_sign_always , (byte) printf_ulong::format_zero_padding , (byte) printf_ulong::format_radix)
|
||||
printf_ulong: scope:[printf_ulong] from main::@26
|
||||
[107] phi()
|
||||
to:printf_ulong::@1
|
||||
printf_ulong::@1: scope:[printf_ulong] from printf_ulong
|
||||
[108] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0
|
||||
[109] call ultoa
|
||||
to:printf_ulong::@2
|
||||
printf_ulong::@2: scope:[printf_ulong] from printf_ulong::@1
|
||||
[110] (byte) printf_number_buffer::buffer_sign#1 ← *((byte*)&(struct printf_buffer_number) printf_buffer)
|
||||
[111] call printf_number_buffer
|
||||
to:printf_ulong::@return
|
||||
printf_ulong::@return: scope:[printf_ulong] from printf_ulong::@2
|
||||
[112] return
|
||||
to:@return
|
||||
|
||||
(void()) printf_number_buffer((byte) printf_number_buffer::buffer_sign , (byte*) printf_number_buffer::buffer_digits , (byte) printf_number_buffer::format_min_length , (byte) printf_number_buffer::format_justify_left , (byte) printf_number_buffer::format_sign_always , (byte) printf_number_buffer::format_zero_padding , (byte) printf_number_buffer::format_radix)
|
||||
printf_number_buffer: scope:[printf_number_buffer] from printf_schar::@3 printf_sint::@3 printf_slong::@3 printf_uchar::@2 printf_uint::@2 printf_ulong::@2
|
||||
[113] (byte) printf_number_buffer::buffer_sign#10 ← phi( printf_schar::@3/(byte) printf_number_buffer::buffer_sign#4 printf_sint::@3/(byte) printf_number_buffer::buffer_sign#2 printf_slong::@3/(byte) printf_number_buffer::buffer_sign#0 printf_uchar::@2/(byte) printf_number_buffer::buffer_sign#5 printf_uint::@2/(byte) printf_number_buffer::buffer_sign#3 printf_ulong::@2/(byte) printf_number_buffer::buffer_sign#1 )
|
||||
[113] (byte*) printf_number_buffer::buffer_digits#10 ← phi( printf_schar::@3/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS printf_sint::@3/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS printf_slong::@3/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS printf_uchar::@2/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS printf_uint::@2/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS printf_ulong::@2/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS )
|
||||
[113] (byte) printf_number_buffer::format_zero_padding#10 ← phi( printf_schar::@3/(const byte) printf_schar::format_zero_padding#0 printf_sint::@3/(const byte) printf_sint::format_zero_padding#0 printf_slong::@3/(const byte) printf_slong::format_zero_padding#0 printf_uchar::@2/(const byte) printf_uchar::format_zero_padding#0 printf_uint::@2/(byte) 0 printf_ulong::@2/(const byte) printf_ulong::format_zero_padding#0 )
|
||||
[113] (byte) printf_number_buffer::format_justify_left#10 ← phi( printf_schar::@3/(const byte) printf_schar::format_justify_left#0 printf_sint::@3/(const byte) printf_sint::format_justify_left#0 printf_slong::@3/(const byte) printf_slong::format_justify_left#0 printf_uchar::@2/(const byte) printf_uchar::format_justify_left#0 printf_uint::@2/(byte) 0 printf_ulong::@2/(const byte) printf_ulong::format_justify_left#0 )
|
||||
[113] (byte) printf_number_buffer::format_min_length#10 ← phi( printf_schar::@3/(const byte) printf_schar::format_min_length#0 printf_sint::@3/(const byte) printf_sint::format_min_length#0 printf_slong::@3/(const byte) printf_slong::format_min_length#0 printf_uchar::@2/(const byte) printf_uchar::format_min_length#0 printf_uint::@2/(byte) 0 printf_ulong::@2/(const byte) printf_ulong::format_min_length#0 )
|
||||
[114] if((byte) 0==(byte) printf_number_buffer::format_min_length#10) goto printf_number_buffer::@1
|
||||
to:printf_number_buffer::@5
|
||||
printf_number_buffer::@5: scope:[printf_number_buffer] from printf_number_buffer
|
||||
[115] (byte*) strlen::str#1 ← (byte*) printf_number_buffer::buffer_digits#10
|
||||
[116] call strlen
|
||||
[117] (word) strlen::return#2 ← (word) strlen::len#2
|
||||
to:printf_number_buffer::@12
|
||||
printf_number_buffer::@12: scope:[printf_number_buffer] from printf_number_buffer::@5
|
||||
[118] (word~) printf_number_buffer::$18 ← (word) strlen::return#2
|
||||
[119] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$18
|
||||
[120] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@11
|
||||
to:printf_number_buffer::@6
|
||||
printf_number_buffer::@6: scope:[printf_number_buffer] from printf_number_buffer::@12
|
||||
[121] (signed byte) printf_number_buffer::len#1 ← ++ (signed byte) printf_number_buffer::len#0
|
||||
to:printf_number_buffer::@11
|
||||
printf_number_buffer::@11: scope:[printf_number_buffer] from printf_number_buffer::@12 printf_number_buffer::@6
|
||||
[122] (signed byte) printf_number_buffer::len#2 ← phi( printf_number_buffer::@12/(signed byte) printf_number_buffer::len#0 printf_number_buffer::@6/(signed byte) printf_number_buffer::len#1 )
|
||||
[123] (signed byte) printf_number_buffer::padding#1 ← (signed byte)(byte) printf_number_buffer::format_min_length#10 - (signed byte) printf_number_buffer::len#2
|
||||
[124] if((signed byte) printf_number_buffer::padding#1>=(signed byte) 0) goto printf_number_buffer::@19
|
||||
to:printf_number_buffer::@1
|
||||
printf_number_buffer::@19: scope:[printf_number_buffer] from printf_number_buffer::@11
|
||||
[125] phi()
|
||||
to:printf_number_buffer::@1
|
||||
printf_number_buffer::@1: scope:[printf_number_buffer] from printf_number_buffer printf_number_buffer::@11 printf_number_buffer::@19
|
||||
[126] (signed byte) printf_number_buffer::padding#10 ← phi( printf_number_buffer/(signed byte) 0 printf_number_buffer::@19/(signed byte) printf_number_buffer::padding#1 printf_number_buffer::@11/(signed byte) 0 )
|
||||
[127] if((byte) 0!=(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@2
|
||||
to:printf_number_buffer::@15
|
||||
printf_number_buffer::@15: scope:[printf_number_buffer] from printf_number_buffer::@1
|
||||
[128] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@2
|
||||
to:printf_number_buffer::@14
|
||||
printf_number_buffer::@14: scope:[printf_number_buffer] from printf_number_buffer::@15
|
||||
[129] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@7
|
||||
to:printf_number_buffer::@2
|
||||
printf_number_buffer::@7: scope:[printf_number_buffer] from printf_number_buffer::@14
|
||||
[130] (byte) printf_padding::length#0 ← (byte)(signed byte) printf_number_buffer::padding#10
|
||||
[131] call printf_padding
|
||||
to:printf_number_buffer::@2
|
||||
printf_number_buffer::@2: scope:[printf_number_buffer] from printf_number_buffer::@1 printf_number_buffer::@14 printf_number_buffer::@15 printf_number_buffer::@7
|
||||
[132] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@3
|
||||
to:printf_number_buffer::@8
|
||||
printf_number_buffer::@8: scope:[printf_number_buffer] from printf_number_buffer::@2
|
||||
[133] (byte) printf_char::ch#2 ← (byte) printf_number_buffer::buffer_sign#10
|
||||
[134] call printf_char
|
||||
to:printf_number_buffer::@3
|
||||
printf_number_buffer::@3: scope:[printf_number_buffer] from printf_number_buffer::@2 printf_number_buffer::@8
|
||||
[135] if((byte) 0==(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@4
|
||||
to:printf_number_buffer::@16
|
||||
printf_number_buffer::@16: scope:[printf_number_buffer] from printf_number_buffer::@3
|
||||
[136] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@9
|
||||
to:printf_number_buffer::@4
|
||||
printf_number_buffer::@9: scope:[printf_number_buffer] from printf_number_buffer::@16
|
||||
[137] (byte) printf_padding::length#1 ← (byte)(signed byte) printf_number_buffer::padding#10
|
||||
[138] call printf_padding
|
||||
to:printf_number_buffer::@4
|
||||
printf_number_buffer::@4: scope:[printf_number_buffer] from printf_number_buffer::@16 printf_number_buffer::@3 printf_number_buffer::@9
|
||||
[139] (byte*) printf_str::str#1 ← (byte*) printf_number_buffer::buffer_digits#10
|
||||
[140] call printf_str
|
||||
to:printf_number_buffer::@13
|
||||
printf_number_buffer::@13: scope:[printf_number_buffer] from printf_number_buffer::@4
|
||||
[141] if((byte) 0==(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@return
|
||||
to:printf_number_buffer::@18
|
||||
printf_number_buffer::@18: scope:[printf_number_buffer] from printf_number_buffer::@13
|
||||
[142] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@return
|
||||
to:printf_number_buffer::@17
|
||||
printf_number_buffer::@17: scope:[printf_number_buffer] from printf_number_buffer::@18
|
||||
[143] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@10
|
||||
to:printf_number_buffer::@return
|
||||
printf_number_buffer::@10: scope:[printf_number_buffer] from printf_number_buffer::@17
|
||||
[144] (byte) printf_padding::length#2 ← (byte)(signed byte) printf_number_buffer::padding#10
|
||||
[145] call printf_padding
|
||||
to:printf_number_buffer::@return
|
||||
printf_number_buffer::@return: scope:[printf_number_buffer] from printf_number_buffer::@10 printf_number_buffer::@13 printf_number_buffer::@17 printf_number_buffer::@18
|
||||
[146] return
|
||||
to:@return
|
||||
|
||||
(void()) printf_padding((byte) printf_padding::pad , (byte) printf_padding::length)
|
||||
printf_padding: scope:[printf_padding] from printf_number_buffer::@10 printf_number_buffer::@7 printf_number_buffer::@9
|
||||
[147] (byte) printf_padding::pad#5 ← phi( printf_number_buffer::@9/(byte) '0' printf_number_buffer::@10/(byte) ' ' printf_number_buffer::@7/(byte) ' ' )
|
||||
[147] (byte) printf_padding::length#4 ← phi( printf_number_buffer::@9/(byte) printf_padding::length#1 printf_number_buffer::@10/(byte) printf_padding::length#2 printf_number_buffer::@7/(byte) printf_padding::length#0 )
|
||||
to:printf_padding::@1
|
||||
printf_padding::@1: scope:[printf_padding] from printf_padding printf_padding::@3
|
||||
[148] (byte) printf_padding::i#2 ← phi( printf_padding/(byte) 0 printf_padding::@3/(byte) printf_padding::i#1 )
|
||||
[149] if((byte) printf_padding::i#2<(byte) printf_padding::length#4) goto printf_padding::@2
|
||||
to:printf_padding::@return
|
||||
printf_padding::@return: scope:[printf_padding] from printf_padding::@1
|
||||
[150] return
|
||||
to:@return
|
||||
printf_padding::@2: scope:[printf_padding] from printf_padding::@1
|
||||
[151] (byte) printf_char::ch#0 ← (byte) printf_padding::pad#5
|
||||
[152] call printf_char
|
||||
to:printf_padding::@3
|
||||
printf_padding::@3: scope:[printf_padding] from printf_padding::@2
|
||||
[153] (byte) printf_padding::i#1 ← ++ (byte) printf_padding::i#2
|
||||
to:printf_padding::@1
|
||||
|
||||
(word()) strlen((byte*) strlen::str)
|
||||
strlen: scope:[strlen] from printf_number_buffer::@5
|
||||
[154] phi()
|
||||
to:strlen::@1
|
||||
strlen::@1: scope:[strlen] from strlen strlen::@2
|
||||
[155] (word) strlen::len#2 ← phi( strlen/(word) 0 strlen::@2/(word) strlen::len#1 )
|
||||
[155] (byte*) strlen::str#2 ← phi( strlen/(byte*) strlen::str#1 strlen::@2/(byte*) strlen::str#0 )
|
||||
[156] if((byte) 0!=*((byte*) strlen::str#2)) goto strlen::@2
|
||||
to:strlen::@return
|
||||
strlen::@return: scope:[strlen] from strlen::@1
|
||||
[157] return
|
||||
to:@return
|
||||
strlen::@2: scope:[strlen] from strlen::@1
|
||||
[158] (word) strlen::len#1 ← ++ (word) strlen::len#2
|
||||
[159] (byte*) strlen::str#0 ← ++ (byte*) strlen::str#2
|
||||
to:strlen::@1
|
||||
|
||||
(void()) ultoa((dword) ultoa::value , (byte*) ultoa::buffer , (byte) ultoa::radix)
|
||||
ultoa: scope:[ultoa] from printf_slong::@2 printf_ulong::@1
|
||||
[160] (byte*) ultoa::buffer#11 ← phi( printf_slong::@2/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS printf_ulong::@1/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS )
|
||||
[160] (dword) ultoa::value#10 ← phi( printf_slong::@2/(const dword) printf_slong::uvalue#0 printf_ulong::@1/(const dword) main::ul )
|
||||
to:ultoa::@1
|
||||
ultoa::@1: scope:[ultoa] from ultoa ultoa::@4
|
||||
[161] (byte*) ultoa::buffer#10 ← phi( ultoa::@4/(byte*) ultoa::buffer#15 ultoa/(byte*) ultoa::buffer#11 )
|
||||
[161] (byte) ultoa::started#2 ← phi( ultoa::@4/(byte) ultoa::started#4 ultoa/(byte) 0 )
|
||||
[161] (dword) ultoa::value#3 ← phi( ultoa::@4/(dword) ultoa::value#7 ultoa/(dword) ultoa::value#10 )
|
||||
[161] (byte) ultoa::digit#2 ← phi( ultoa::@4/(byte) ultoa::digit#1 ultoa/(byte) 0 )
|
||||
[162] if((byte) ultoa::digit#2<(byte) $a-(byte) 1) goto ultoa::@2
|
||||
to:ultoa::@3
|
||||
ultoa::@3: scope:[ultoa] from ultoa::@1
|
||||
[163] (byte~) ultoa::$11 ← (byte)(dword) ultoa::value#3
|
||||
[164] *((byte*) ultoa::buffer#10) ← *((const byte*) DIGITS + (byte~) ultoa::$11)
|
||||
[165] (byte*) ultoa::buffer#3 ← ++ (byte*) ultoa::buffer#10
|
||||
[166] *((byte*) ultoa::buffer#3) ← (byte) 0
|
||||
to:ultoa::@return
|
||||
ultoa::@return: scope:[ultoa] from ultoa::@3
|
||||
[167] return
|
||||
to:@return
|
||||
ultoa::@2: scope:[ultoa] from ultoa::@1
|
||||
[168] (byte~) ultoa::$10 ← (byte) ultoa::digit#2 << (byte) 2
|
||||
[169] (dword) ultoa::digit_value#0 ← *((const dword*) RADIX_DECIMAL_VALUES_LONG + (byte~) ultoa::$10)
|
||||
[170] if((byte) 0!=(byte) ultoa::started#2) goto ultoa::@5
|
||||
to:ultoa::@7
|
||||
ultoa::@7: scope:[ultoa] from ultoa::@2
|
||||
[171] if((dword) ultoa::value#3>=(dword) ultoa::digit_value#0) goto ultoa::@5
|
||||
to:ultoa::@4
|
||||
ultoa::@4: scope:[ultoa] from ultoa::@6 ultoa::@7
|
||||
[172] (byte*) ultoa::buffer#15 ← phi( ultoa::@7/(byte*) ultoa::buffer#10 ultoa::@6/(byte*) ultoa::buffer#4 )
|
||||
[172] (byte) ultoa::started#4 ← phi( ultoa::@7/(byte) ultoa::started#2 ultoa::@6/(byte) 1 )
|
||||
[172] (dword) ultoa::value#7 ← phi( ultoa::@7/(dword) ultoa::value#3 ultoa::@6/(dword) ultoa::value#0 )
|
||||
[173] (byte) ultoa::digit#1 ← ++ (byte) ultoa::digit#2
|
||||
to:ultoa::@1
|
||||
ultoa::@5: scope:[ultoa] from ultoa::@2 ultoa::@7
|
||||
[174] (byte*) ultoa_append::buffer#0 ← (byte*) ultoa::buffer#10
|
||||
[175] (dword) ultoa_append::value#0 ← (dword) ultoa::value#3
|
||||
[176] (dword) ultoa_append::sub#0 ← (dword) ultoa::digit_value#0
|
||||
[177] call ultoa_append
|
||||
[178] (dword) ultoa_append::return#0 ← (dword) ultoa_append::value#2
|
||||
to:ultoa::@6
|
||||
ultoa::@6: scope:[ultoa] from ultoa::@5
|
||||
[179] (dword) ultoa::value#0 ← (dword) ultoa_append::return#0
|
||||
[180] (byte*) ultoa::buffer#4 ← ++ (byte*) ultoa::buffer#10
|
||||
to:ultoa::@4
|
||||
|
||||
(dword()) ultoa_append((byte*) ultoa_append::buffer , (dword) ultoa_append::value , (dword) ultoa_append::sub)
|
||||
ultoa_append: scope:[ultoa_append] from ultoa::@5
|
||||
[181] phi()
|
||||
to:ultoa_append::@1
|
||||
ultoa_append::@1: scope:[ultoa_append] from ultoa_append ultoa_append::@2
|
||||
[182] (byte) ultoa_append::digit#2 ← phi( ultoa_append/(byte) 0 ultoa_append::@2/(byte) ultoa_append::digit#1 )
|
||||
[182] (dword) ultoa_append::value#2 ← phi( ultoa_append/(dword) ultoa_append::value#0 ultoa_append::@2/(dword) ultoa_append::value#1 )
|
||||
[183] if((dword) ultoa_append::value#2>=(dword) ultoa_append::sub#0) goto ultoa_append::@2
|
||||
to:ultoa_append::@3
|
||||
ultoa_append::@3: scope:[ultoa_append] from ultoa_append::@1
|
||||
[184] *((byte*) ultoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) ultoa_append::digit#2)
|
||||
to:ultoa_append::@return
|
||||
ultoa_append::@return: scope:[ultoa_append] from ultoa_append::@3
|
||||
[185] return
|
||||
to:@return
|
||||
ultoa_append::@2: scope:[ultoa_append] from ultoa_append::@1
|
||||
[186] (byte) ultoa_append::digit#1 ← ++ (byte) ultoa_append::digit#2
|
||||
[187] (dword) ultoa_append::value#1 ← (dword) ultoa_append::value#2 - (dword) ultoa_append::sub#0
|
||||
to:ultoa_append::@1
|
||||
|
||||
(void()) printf_slong((signed dword) printf_slong::value , (byte) printf_slong::format_min_length , (byte) printf_slong::format_justify_left , (byte) printf_slong::format_sign_always , (byte) printf_slong::format_zero_padding , (byte) printf_slong::format_radix)
|
||||
printf_slong: scope:[printf_slong] from main::@23
|
||||
[188] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0
|
||||
to:printf_slong::@1
|
||||
printf_slong::@1: scope:[printf_slong] from printf_slong
|
||||
[189] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) '-'
|
||||
to:printf_slong::@2
|
||||
printf_slong::@2: scope:[printf_slong] from printf_slong::@1
|
||||
[190] phi()
|
||||
[191] call ultoa
|
||||
to:printf_slong::@3
|
||||
printf_slong::@3: scope:[printf_slong] from printf_slong::@2
|
||||
[192] (byte) printf_number_buffer::buffer_sign#0 ← *((byte*)&(struct printf_buffer_number) printf_buffer)
|
||||
[193] call printf_number_buffer
|
||||
to:printf_slong::@return
|
||||
printf_slong::@return: scope:[printf_slong] from printf_slong::@3
|
||||
[194] return
|
||||
to:@return
|
||||
|
||||
(void()) printf_uint((word) printf_uint::uvalue , (byte) printf_uint::format_min_length , (byte) printf_uint::format_justify_left , (byte) printf_uint::format_sign_always , (byte) printf_uint::format_zero_padding , (byte) printf_uint::format_radix)
|
||||
printf_uint: scope:[printf_uint] from main::@20 main::@5
|
||||
[195] (byte) printf_uint::format_radix#2 ← phi( main::@20/(const byte) DECIMAL main::@5/(const byte) HEXADECIMAL )
|
||||
[195] (word) printf_uint::uvalue#2 ← phi( main::@20/(const word) main::ui main::@5/(word)&(volatile byte) main::c )
|
||||
to:printf_uint::@1
|
||||
printf_uint::@1: scope:[printf_uint] from printf_uint
|
||||
[196] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0
|
||||
[197] (word) utoa::value#2 ← (word) printf_uint::uvalue#2
|
||||
[198] (byte) utoa::radix#1 ← (byte) printf_uint::format_radix#2
|
||||
[199] call utoa
|
||||
to:printf_uint::@2
|
||||
printf_uint::@2: scope:[printf_uint] from printf_uint::@1
|
||||
[200] (byte) printf_number_buffer::buffer_sign#3 ← *((byte*)&(struct printf_buffer_number) printf_buffer)
|
||||
[201] call printf_number_buffer
|
||||
to:printf_uint::@return
|
||||
printf_uint::@return: scope:[printf_uint] from printf_uint::@2
|
||||
[202] return
|
||||
to:@return
|
||||
|
||||
(void()) utoa((word) utoa::value , (byte*) utoa::buffer , (byte) utoa::radix)
|
||||
utoa: scope:[utoa] from printf_sint::@2 printf_uint::@1
|
||||
[203] (byte*) utoa::buffer#11 ← phi( printf_sint::@2/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS printf_uint::@1/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS )
|
||||
[203] (word) utoa::value#10 ← phi( printf_sint::@2/(const word) printf_sint::uvalue#0 printf_uint::@1/(word) utoa::value#2 )
|
||||
[203] (byte) utoa::radix#2 ← phi( printf_sint::@2/(const byte) DECIMAL printf_uint::@1/(byte) utoa::radix#1 )
|
||||
[204] if((byte) utoa::radix#2==(const byte) DECIMAL) goto utoa::@1
|
||||
to:utoa::@2
|
||||
utoa::@2: scope:[utoa] from utoa
|
||||
[205] if((byte) utoa::radix#2==(const byte) HEXADECIMAL) goto utoa::@1
|
||||
to:utoa::@3
|
||||
utoa::@3: scope:[utoa] from utoa::@2
|
||||
[206] if((byte) utoa::radix#2==(const byte) OCTAL) goto utoa::@1
|
||||
to:utoa::@4
|
||||
utoa::@4: scope:[utoa] from utoa::@3
|
||||
[207] if((byte) utoa::radix#2==(const byte) BINARY) goto utoa::@1
|
||||
to:utoa::@5
|
||||
utoa::@5: scope:[utoa] from utoa::@4
|
||||
[208] *((byte*) utoa::buffer#11) ← (byte) 'e'
|
||||
[209] (byte*) utoa::buffer#0 ← ++ (byte*) utoa::buffer#11
|
||||
[210] *((byte*) utoa::buffer#0) ← (byte) 'r'
|
||||
[211] (byte*) utoa::buffer#1 ← ++ (byte*) utoa::buffer#0
|
||||
[212] *((byte*) utoa::buffer#1) ← (byte) 'r'
|
||||
[213] (byte*) utoa::buffer#2 ← ++ (byte*) utoa::buffer#1
|
||||
[214] *((byte*) utoa::buffer#2) ← (byte) 0
|
||||
to:utoa::@return
|
||||
utoa::@return: scope:[utoa] from utoa::@5 utoa::@8
|
||||
[215] return
|
||||
to:@return
|
||||
utoa::@1: scope:[utoa] from utoa utoa::@2 utoa::@3 utoa::@4
|
||||
[216] (word*) utoa::digit_values#8 ← phi( utoa/(const word*) RADIX_DECIMAL_VALUES utoa::@2/(const word*) RADIX_HEXADECIMAL_VALUES utoa::@3/(const word*) RADIX_OCTAL_VALUES utoa::@4/(const word*) RADIX_BINARY_VALUES )
|
||||
[216] (byte) utoa::max_digits#7 ← phi( utoa/(byte) 5 utoa::@2/(byte) 4 utoa::@3/(byte) 6 utoa::@4/(byte) $10 )
|
||||
to:utoa::@6
|
||||
utoa::@6: scope:[utoa] from utoa::@1 utoa::@9
|
||||
[217] (byte*) utoa::buffer#10 ← phi( utoa::@9/(byte*) utoa::buffer#15 utoa::@1/(byte*) utoa::buffer#11 )
|
||||
[217] (byte) utoa::started#2 ← phi( utoa::@9/(byte) utoa::started#4 utoa::@1/(byte) 0 )
|
||||
[217] (word) utoa::value#3 ← phi( utoa::@9/(word) utoa::value#7 utoa::@1/(word) utoa::value#10 )
|
||||
[217] (byte) utoa::digit#2 ← phi( utoa::@9/(byte) utoa::digit#1 utoa::@1/(byte) 0 )
|
||||
[218] (byte~) utoa::$4 ← (byte) utoa::max_digits#7 - (byte) 1
|
||||
[219] if((byte) utoa::digit#2<(byte~) utoa::$4) goto utoa::@7
|
||||
to:utoa::@8
|
||||
utoa::@8: scope:[utoa] from utoa::@6
|
||||
[220] (byte~) utoa::$11 ← (byte)(word) utoa::value#3
|
||||
[221] *((byte*) utoa::buffer#10) ← *((const byte*) DIGITS + (byte~) utoa::$11)
|
||||
[222] (byte*) utoa::buffer#3 ← ++ (byte*) utoa::buffer#10
|
||||
[223] *((byte*) utoa::buffer#3) ← (byte) 0
|
||||
to:utoa::@return
|
||||
utoa::@7: scope:[utoa] from utoa::@6
|
||||
[224] (byte~) utoa::$10 ← (byte) utoa::digit#2 << (byte) 1
|
||||
[225] (word) utoa::digit_value#0 ← *((word*) utoa::digit_values#8 + (byte~) utoa::$10)
|
||||
[226] if((byte) 0!=(byte) utoa::started#2) goto utoa::@10
|
||||
to:utoa::@12
|
||||
utoa::@12: scope:[utoa] from utoa::@7
|
||||
[227] if((word) utoa::value#3>=(word) utoa::digit_value#0) goto utoa::@10
|
||||
to:utoa::@9
|
||||
utoa::@9: scope:[utoa] from utoa::@11 utoa::@12
|
||||
[228] (byte*) utoa::buffer#15 ← phi( utoa::@12/(byte*) utoa::buffer#10 utoa::@11/(byte*) utoa::buffer#4 )
|
||||
[228] (byte) utoa::started#4 ← phi( utoa::@12/(byte) utoa::started#2 utoa::@11/(byte) 1 )
|
||||
[228] (word) utoa::value#7 ← phi( utoa::@12/(word) utoa::value#3 utoa::@11/(word) utoa::value#0 )
|
||||
[229] (byte) utoa::digit#1 ← ++ (byte) utoa::digit#2
|
||||
to:utoa::@6
|
||||
utoa::@10: scope:[utoa] from utoa::@12 utoa::@7
|
||||
[230] (byte*) utoa_append::buffer#0 ← (byte*) utoa::buffer#10
|
||||
[231] (word) utoa_append::value#0 ← (word) utoa::value#3
|
||||
[232] (word) utoa_append::sub#0 ← (word) utoa::digit_value#0
|
||||
[233] call utoa_append
|
||||
[234] (word) utoa_append::return#0 ← (word) utoa_append::value#2
|
||||
to:utoa::@11
|
||||
utoa::@11: scope:[utoa] from utoa::@10
|
||||
[235] (word) utoa::value#0 ← (word) utoa_append::return#0
|
||||
[236] (byte*) utoa::buffer#4 ← ++ (byte*) utoa::buffer#10
|
||||
to:utoa::@9
|
||||
|
||||
(word()) utoa_append((byte*) utoa_append::buffer , (word) utoa_append::value , (word) utoa_append::sub)
|
||||
utoa_append: scope:[utoa_append] from utoa::@10
|
||||
[237] phi()
|
||||
to:utoa_append::@1
|
||||
utoa_append::@1: scope:[utoa_append] from utoa_append utoa_append::@2
|
||||
[238] (byte) utoa_append::digit#2 ← phi( utoa_append/(byte) 0 utoa_append::@2/(byte) utoa_append::digit#1 )
|
||||
[238] (word) utoa_append::value#2 ← phi( utoa_append/(word) utoa_append::value#0 utoa_append::@2/(word) utoa_append::value#1 )
|
||||
[239] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2
|
||||
to:utoa_append::@3
|
||||
utoa_append::@3: scope:[utoa_append] from utoa_append::@1
|
||||
[240] *((byte*) utoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) utoa_append::digit#2)
|
||||
to:utoa_append::@return
|
||||
utoa_append::@return: scope:[utoa_append] from utoa_append::@3
|
||||
[241] return
|
||||
to:@return
|
||||
utoa_append::@2: scope:[utoa_append] from utoa_append::@1
|
||||
[242] (byte) utoa_append::digit#1 ← ++ (byte) utoa_append::digit#2
|
||||
[243] (word) utoa_append::value#1 ← (word) utoa_append::value#2 - (word) utoa_append::sub#0
|
||||
to:utoa_append::@1
|
||||
|
||||
(void()) printf_sint((signed word) printf_sint::value , (byte) printf_sint::format_min_length , (byte) printf_sint::format_justify_left , (byte) printf_sint::format_sign_always , (byte) printf_sint::format_zero_padding , (byte) printf_sint::format_radix)
|
||||
printf_sint: scope:[printf_sint] from main::@17
|
||||
[244] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0
|
||||
to:printf_sint::@1
|
||||
printf_sint::@1: scope:[printf_sint] from printf_sint
|
||||
[245] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) '-'
|
||||
to:printf_sint::@2
|
||||
printf_sint::@2: scope:[printf_sint] from printf_sint::@1
|
||||
[246] phi()
|
||||
[247] call utoa
|
||||
to:printf_sint::@3
|
||||
printf_sint::@3: scope:[printf_sint] from printf_sint::@2
|
||||
[248] (byte) printf_number_buffer::buffer_sign#2 ← *((byte*)&(struct printf_buffer_number) printf_buffer)
|
||||
[249] call printf_number_buffer
|
||||
to:printf_sint::@return
|
||||
printf_sint::@return: scope:[printf_sint] from printf_sint::@3
|
||||
[250] return
|
||||
to:@return
|
||||
|
||||
(void()) printf_uchar((byte) printf_uchar::uvalue , (byte) printf_uchar::format_min_length , (byte) printf_uchar::format_justify_left , (byte) printf_uchar::format_sign_always , (byte) printf_uchar::format_zero_padding , (byte) printf_uchar::format_radix)
|
||||
printf_uchar: scope:[printf_uchar] from main::@14
|
||||
[251] phi()
|
||||
to:printf_uchar::@1
|
||||
printf_uchar::@1: scope:[printf_uchar] from printf_uchar
|
||||
[252] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0
|
||||
[253] call uctoa
|
||||
to:printf_uchar::@2
|
||||
printf_uchar::@2: scope:[printf_uchar] from printf_uchar::@1
|
||||
[254] (byte) printf_number_buffer::buffer_sign#5 ← *((byte*)&(struct printf_buffer_number) printf_buffer)
|
||||
[255] call printf_number_buffer
|
||||
to:printf_uchar::@return
|
||||
printf_uchar::@return: scope:[printf_uchar] from printf_uchar::@2
|
||||
[256] return
|
||||
to:@return
|
||||
|
||||
(void()) uctoa((byte) uctoa::value , (byte*) uctoa::buffer , (byte) uctoa::radix)
|
||||
uctoa: scope:[uctoa] from printf_schar::@2 printf_uchar::@1
|
||||
[257] (byte*) uctoa::buffer#11 ← phi( printf_schar::@2/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS printf_uchar::@1/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS )
|
||||
[257] (byte) uctoa::value#10 ← phi( printf_schar::@2/(const byte) printf_schar::uvalue#0 printf_uchar::@1/(const byte) main::uc )
|
||||
to:uctoa::@1
|
||||
uctoa::@1: scope:[uctoa] from uctoa uctoa::@4
|
||||
[258] (byte*) uctoa::buffer#10 ← phi( uctoa::@4/(byte*) uctoa::buffer#15 uctoa/(byte*) uctoa::buffer#11 )
|
||||
[258] (byte) uctoa::started#2 ← phi( uctoa::@4/(byte) uctoa::started#4 uctoa/(byte) 0 )
|
||||
[258] (byte) uctoa::value#3 ← phi( uctoa::@4/(byte) uctoa::value#7 uctoa/(byte) uctoa::value#10 )
|
||||
[258] (byte) uctoa::digit#2 ← phi( uctoa::@4/(byte) uctoa::digit#1 uctoa/(byte) 0 )
|
||||
[259] if((byte) uctoa::digit#2<(byte) 3-(byte) 1) goto uctoa::@2
|
||||
to:uctoa::@3
|
||||
uctoa::@3: scope:[uctoa] from uctoa::@1
|
||||
[260] *((byte*) uctoa::buffer#10) ← *((const byte*) DIGITS + (byte) uctoa::value#3)
|
||||
[261] (byte*) uctoa::buffer#3 ← ++ (byte*) uctoa::buffer#10
|
||||
[262] *((byte*) uctoa::buffer#3) ← (byte) 0
|
||||
to:uctoa::@return
|
||||
uctoa::@return: scope:[uctoa] from uctoa::@3
|
||||
[263] return
|
||||
to:@return
|
||||
uctoa::@2: scope:[uctoa] from uctoa::@1
|
||||
[264] (byte) uctoa::digit_value#0 ← *((const byte*) RADIX_DECIMAL_VALUES_CHAR + (byte) uctoa::digit#2)
|
||||
[265] if((byte) 0!=(byte) uctoa::started#2) goto uctoa::@5
|
||||
to:uctoa::@7
|
||||
uctoa::@7: scope:[uctoa] from uctoa::@2
|
||||
[266] if((byte) uctoa::value#3>=(byte) uctoa::digit_value#0) goto uctoa::@5
|
||||
to:uctoa::@4
|
||||
uctoa::@4: scope:[uctoa] from uctoa::@6 uctoa::@7
|
||||
[267] (byte*) uctoa::buffer#15 ← phi( uctoa::@7/(byte*) uctoa::buffer#10 uctoa::@6/(byte*) uctoa::buffer#4 )
|
||||
[267] (byte) uctoa::started#4 ← phi( uctoa::@7/(byte) uctoa::started#2 uctoa::@6/(byte) 1 )
|
||||
[267] (byte) uctoa::value#7 ← phi( uctoa::@7/(byte) uctoa::value#3 uctoa::@6/(byte) uctoa::value#0 )
|
||||
[268] (byte) uctoa::digit#1 ← ++ (byte) uctoa::digit#2
|
||||
to:uctoa::@1
|
||||
uctoa::@5: scope:[uctoa] from uctoa::@2 uctoa::@7
|
||||
[269] (byte*) uctoa_append::buffer#0 ← (byte*) uctoa::buffer#10
|
||||
[270] (byte) uctoa_append::value#0 ← (byte) uctoa::value#3
|
||||
[271] (byte) uctoa_append::sub#0 ← (byte) uctoa::digit_value#0
|
||||
[272] call uctoa_append
|
||||
[273] (byte) uctoa_append::return#0 ← (byte) uctoa_append::value#2
|
||||
to:uctoa::@6
|
||||
uctoa::@6: scope:[uctoa] from uctoa::@5
|
||||
[274] (byte) uctoa::value#0 ← (byte) uctoa_append::return#0
|
||||
[275] (byte*) uctoa::buffer#4 ← ++ (byte*) uctoa::buffer#10
|
||||
to:uctoa::@4
|
||||
|
||||
(byte()) uctoa_append((byte*) uctoa_append::buffer , (byte) uctoa_append::value , (byte) uctoa_append::sub)
|
||||
uctoa_append: scope:[uctoa_append] from uctoa::@5
|
||||
[276] phi()
|
||||
to:uctoa_append::@1
|
||||
uctoa_append::@1: scope:[uctoa_append] from uctoa_append uctoa_append::@2
|
||||
[277] (byte) uctoa_append::digit#2 ← phi( uctoa_append/(byte) 0 uctoa_append::@2/(byte) uctoa_append::digit#1 )
|
||||
[277] (byte) uctoa_append::value#2 ← phi( uctoa_append/(byte) uctoa_append::value#0 uctoa_append::@2/(byte) uctoa_append::value#1 )
|
||||
[278] if((byte) uctoa_append::value#2>=(byte) uctoa_append::sub#0) goto uctoa_append::@2
|
||||
to:uctoa_append::@3
|
||||
uctoa_append::@3: scope:[uctoa_append] from uctoa_append::@1
|
||||
[279] *((byte*) uctoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) uctoa_append::digit#2)
|
||||
to:uctoa_append::@return
|
||||
uctoa_append::@return: scope:[uctoa_append] from uctoa_append::@3
|
||||
[280] return
|
||||
to:@return
|
||||
uctoa_append::@2: scope:[uctoa_append] from uctoa_append::@1
|
||||
[281] (byte) uctoa_append::digit#1 ← ++ (byte) uctoa_append::digit#2
|
||||
[282] (byte) uctoa_append::value#1 ← (byte) uctoa_append::value#2 - (byte) uctoa_append::sub#0
|
||||
to:uctoa_append::@1
|
||||
|
||||
(void()) printf_schar((signed byte) printf_schar::value , (byte) printf_schar::format_min_length , (byte) printf_schar::format_justify_left , (byte) printf_schar::format_sign_always , (byte) printf_schar::format_zero_padding , (byte) printf_schar::format_radix)
|
||||
printf_schar: scope:[printf_schar] from main::@11
|
||||
[283] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0
|
||||
to:printf_schar::@1
|
||||
printf_schar::@1: scope:[printf_schar] from printf_schar
|
||||
[284] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) '-'
|
||||
to:printf_schar::@2
|
||||
printf_schar::@2: scope:[printf_schar] from printf_schar::@1
|
||||
[285] phi()
|
||||
[286] call uctoa
|
||||
to:printf_schar::@3
|
||||
printf_schar::@3: scope:[printf_schar] from printf_schar::@2
|
||||
[287] (byte) printf_number_buffer::buffer_sign#4 ← *((byte*)&(struct printf_buffer_number) printf_buffer)
|
||||
[288] call printf_number_buffer
|
||||
to:printf_schar::@return
|
||||
printf_schar::@return: scope:[printf_schar] from printf_schar::@3
|
||||
[289] return
|
||||
to:@return
|
||||
|
||||
(void()) printf_cls()
|
||||
printf_cls: scope:[printf_cls] from main
|
||||
[290] phi()
|
||||
[291] call memset
|
||||
to:printf_cls::@1
|
||||
printf_cls::@1: scope:[printf_cls] from printf_cls
|
||||
[292] (byte*) printf_line_cursor ← (const byte*) printf_screen
|
||||
[293] (byte*) printf_char_cursor ← (byte*) printf_line_cursor
|
||||
to:printf_cls::@return
|
||||
printf_cls::@return: scope:[printf_cls] from printf_cls::@1
|
||||
[294] return
|
||||
to:@return
|
13781
src/test/ref/printf-12.log
Normal file
13781
src/test/ref/printf-12.log
Normal file
File diff suppressed because one or more lines are too long
526
src/test/ref/printf-12.sym
Normal file
526
src/test/ref/printf-12.sym
Normal file
@ -0,0 +1,526 @@
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte) BINARY = (number) 2
|
||||
(const byte) DECIMAL = (number) $a
|
||||
(const byte*) DIGITS[] = (byte*) "0123456789abcdef"z
|
||||
(const byte) HEXADECIMAL = (number) $10
|
||||
(const byte) OCTAL = (number) 8
|
||||
(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS = (byte) 1
|
||||
(const byte) RADIX::BINARY = (number) 2
|
||||
(const byte) RADIX::DECIMAL = (number) $a
|
||||
(const byte) RADIX::HEXADECIMAL = (number) $10
|
||||
(const byte) RADIX::OCTAL = (number) 8
|
||||
(const word*) RADIX_BINARY_VALUES[] = { (word) $8000, (word) $4000, (word) $2000, (word) $1000, (word) $800, (word) $400, (word) $200, (word) $100, (word) $80, (word) $40, (word) $20, (word) $10, (word) 8, (word) 4, (word) 2 }
|
||||
(const word*) RADIX_DECIMAL_VALUES[] = { (word) $2710, (word) $3e8, (word) $64, (word) $a }
|
||||
(const byte*) RADIX_DECIMAL_VALUES_CHAR[] = { (byte) $64, (byte) $a }
|
||||
(const dword*) RADIX_DECIMAL_VALUES_LONG[] = { (dword) $3b9aca00, (dword) $5f5e100, (dword) $989680, (dword) $f4240, (dword) $186a0, (dword) $2710, (dword) $3e8, (dword) $64, (dword) $a }
|
||||
(const word*) RADIX_HEXADECIMAL_VALUES[] = { (word) $1000, (word) $100, (word) $10 }
|
||||
(const word*) RADIX_OCTAL_VALUES[] = { (word) $8000, (word) $1000, (word) $200, (word) $40, (word) 8 }
|
||||
(const byte) SIZEOF_STRUCT_PRINTF_BUFFER_NUMBER = (byte) $c
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@10
|
||||
(label) main::@11
|
||||
(label) main::@12
|
||||
(label) main::@13
|
||||
(label) main::@14
|
||||
(label) main::@15
|
||||
(label) main::@16
|
||||
(label) main::@17
|
||||
(label) main::@18
|
||||
(label) main::@19
|
||||
(label) main::@2
|
||||
(label) main::@20
|
||||
(label) main::@21
|
||||
(label) main::@22
|
||||
(label) main::@23
|
||||
(label) main::@24
|
||||
(label) main::@25
|
||||
(label) main::@26
|
||||
(label) main::@27
|
||||
(label) main::@3
|
||||
(label) main::@4
|
||||
(label) main::@5
|
||||
(label) main::@6
|
||||
(label) main::@7
|
||||
(label) main::@8
|
||||
(label) main::@9
|
||||
(label) main::@return
|
||||
(volatile byte) main::c loadstore zp[1]:22 11.0
|
||||
(const signed byte) main::sc = (signed byte) -$c
|
||||
(const signed word) main::si = (signed word) -$4d2
|
||||
(const signed dword) main::sl = (signed dword) -$1e240
|
||||
(const byte*) main::str[(byte) 9] = (byte*) "A char: "
|
||||
(const byte*) main::str1[(byte) 2] = (byte*) "
|
||||
"
|
||||
(const byte*) main::str10[(byte) $f] = (byte*) "A signed int: "
|
||||
(const byte*) main::str12[(byte) $12] = (byte*) "An unsigned int: "
|
||||
(const byte*) main::str14[(byte) $10] = (byte*) "A signed long: "
|
||||
(const byte*) main::str16[(byte) $13] = (byte*) "An unsigned long: "
|
||||
(const byte*) main::str2[(byte) $c] = (byte*) "A pointer: "
|
||||
(const byte*) main::str4[(byte) $c] = (byte*) "A percent: "
|
||||
(const byte*) main::str6[(byte) $10] = (byte*) "A signed char: "
|
||||
(const byte*) main::str8[(byte) $13] = (byte*) "An unsigned char: "
|
||||
(const byte) main::uc = (byte) $22
|
||||
(const word) main::ui = (word) $162e
|
||||
(const dword) main::ul = (dword) $8aa52
|
||||
(void*()) memcpy((void*) memcpy::destination , (void*) memcpy::source , (word) memcpy::num)
|
||||
(label) memcpy::@1
|
||||
(label) memcpy::@2
|
||||
(label) memcpy::@return
|
||||
(void*) memcpy::destination
|
||||
(const void*) memcpy::destination#0 destination = (void*)(const byte*) printf_screen
|
||||
(byte*) memcpy::dst
|
||||
(byte*) memcpy::dst#1 dst zp[2]:11 1.000000001E9
|
||||
(byte*) memcpy::dst#2 dst zp[2]:11 1.000000001E9
|
||||
(word) memcpy::num
|
||||
(const word) memcpy::num#0 num = (word)(number) $28*(number) $19-(number) $28
|
||||
(void*) memcpy::return
|
||||
(void*) memcpy::source
|
||||
(const void*) memcpy::source#0 source = (void*)(const byte*) printf_screen+(byte) $28
|
||||
(byte*) memcpy::src
|
||||
(byte*) memcpy::src#1 src zp[2]:8 2.000000002E9
|
||||
(byte*) memcpy::src#2 src zp[2]:8 1.000000001E9
|
||||
(byte*) memcpy::src_end
|
||||
(const byte*) memcpy::src_end#0 src_end = (byte*)(const void*) memcpy::source#0+(const word) memcpy::num#0
|
||||
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
||||
(label) memset::@1
|
||||
(label) memset::@2
|
||||
(label) memset::@3
|
||||
(label) memset::@return
|
||||
(byte) memset::c
|
||||
(byte) memset::c#4 reg byte x 1.25000000125E8
|
||||
(byte*) memset::dst
|
||||
(byte*) memset::dst#1 dst zp[2]:11 2.000000002E9
|
||||
(byte*) memset::dst#2 dst zp[2]:11 1.3366666683333335E9
|
||||
(byte*) memset::dst#4 dst zp[2]:11 2.0000002E7
|
||||
(byte*) memset::end
|
||||
(byte*) memset::end#0 end zp[2]:8 1.683333336666667E8
|
||||
(word) memset::num
|
||||
(word) memset::num#2 num zp[2]:8 1.0000001E7
|
||||
(void*) memset::return
|
||||
(void*) memset::str
|
||||
(void*) memset::str#3 str zp[2]:11
|
||||
(struct printf_buffer_number) printf_buffer loadstore mem[12] = {}
|
||||
(const byte*) printf_buffer_number::digits[(number) $b] = { fill( $b, 0) }
|
||||
(byte) printf_buffer_number::sign
|
||||
(void()) printf_char((byte) printf_char::ch)
|
||||
(byte*~) printf_char::$8 zp[2]:20 2000002.0
|
||||
(label) printf_char::@1
|
||||
(label) printf_char::@2
|
||||
(label) printf_char::@3
|
||||
(label) printf_char::@return
|
||||
(byte) printf_char::ch
|
||||
(byte) printf_char::ch#0 reg byte a 200002.0
|
||||
(byte) printf_char::ch#1 reg byte a 200002.0
|
||||
(byte) printf_char::ch#2 reg byte a 2002.0
|
||||
(byte) printf_char::ch#3 reg byte a 22.0
|
||||
(byte) printf_char::ch#5 reg byte a 1201015.0
|
||||
(byte*) printf_char_cursor loadstore zp[2]:20 654546.1333333328
|
||||
(void()) printf_cls()
|
||||
(label) printf_cls::@1
|
||||
(label) printf_cls::@return
|
||||
(byte) printf_format_number::justify_left
|
||||
(byte) printf_format_number::min_length
|
||||
(byte) printf_format_number::radix
|
||||
(byte) printf_format_number::sign_always
|
||||
(byte) printf_format_number::zero_padding
|
||||
(byte) printf_format_string::justify_left
|
||||
(byte) printf_format_string::min_length
|
||||
(byte*) printf_line_cursor loadstore zp[2]:18 1875777.6956521738
|
||||
(void()) printf_ln()
|
||||
(label) printf_ln::@1
|
||||
(label) printf_ln::@2
|
||||
(label) printf_ln::@return
|
||||
(void()) printf_number_buffer((byte) printf_number_buffer::buffer_sign , (byte*) printf_number_buffer::buffer_digits , (byte) printf_number_buffer::format_min_length , (byte) printf_number_buffer::format_justify_left , (byte) printf_number_buffer::format_sign_always , (byte) printf_number_buffer::format_zero_padding , (byte) printf_number_buffer::format_radix)
|
||||
(word~) printf_number_buffer::$18 zp[2]:11 1001.0
|
||||
(label) printf_number_buffer::@1
|
||||
(label) printf_number_buffer::@10
|
||||
(label) printf_number_buffer::@11
|
||||
(label) printf_number_buffer::@12
|
||||
(label) printf_number_buffer::@13
|
||||
(label) printf_number_buffer::@14
|
||||
(label) printf_number_buffer::@15
|
||||
(label) printf_number_buffer::@16
|
||||
(label) printf_number_buffer::@17
|
||||
(label) printf_number_buffer::@18
|
||||
(label) printf_number_buffer::@19
|
||||
(label) printf_number_buffer::@2
|
||||
(label) printf_number_buffer::@3
|
||||
(label) printf_number_buffer::@4
|
||||
(label) printf_number_buffer::@5
|
||||
(label) printf_number_buffer::@6
|
||||
(label) printf_number_buffer::@7
|
||||
(label) printf_number_buffer::@8
|
||||
(label) printf_number_buffer::@9
|
||||
(label) printf_number_buffer::@return
|
||||
(struct printf_buffer_number) printf_number_buffer::buffer
|
||||
(byte*) printf_number_buffer::buffer_digits
|
||||
(byte*) printf_number_buffer::buffer_digits#10 buffer_digits zp[2]:16 77.0
|
||||
(byte) printf_number_buffer::buffer_sign
|
||||
(byte) printf_number_buffer::buffer_sign#0 buffer_sign zp[1]:13 202.0
|
||||
(byte) printf_number_buffer::buffer_sign#1 buffer_sign zp[1]:13 202.0
|
||||
(byte) printf_number_buffer::buffer_sign#10 buffer_sign zp[1]:13 180.45
|
||||
(byte) printf_number_buffer::buffer_sign#2 buffer_sign zp[1]:13 202.0
|
||||
(byte) printf_number_buffer::buffer_sign#3 buffer_sign zp[1]:13 202.0
|
||||
(byte) printf_number_buffer::buffer_sign#4 buffer_sign zp[1]:13 202.0
|
||||
(byte) printf_number_buffer::buffer_sign#5 buffer_sign zp[1]:13 202.0
|
||||
(struct printf_format_number) printf_number_buffer::format
|
||||
(byte) printf_number_buffer::format_justify_left
|
||||
(byte) printf_number_buffer::format_justify_left#10 format_justify_left zp[1]:3 71.5
|
||||
(byte) printf_number_buffer::format_min_length
|
||||
(byte) printf_number_buffer::format_min_length#10 reg byte x 100.1
|
||||
(byte) printf_number_buffer::format_radix
|
||||
(byte) printf_number_buffer::format_sign_always
|
||||
(byte) printf_number_buffer::format_zero_padding
|
||||
(byte) printf_number_buffer::format_zero_padding#10 format_zero_padding zp[1]:10 103.55172413793102
|
||||
(signed byte) printf_number_buffer::len
|
||||
(signed byte) printf_number_buffer::len#0 reg byte y 1501.5
|
||||
(signed byte) printf_number_buffer::len#1 reg byte y 2002.0
|
||||
(signed byte) printf_number_buffer::len#2 reg byte y 3003.0
|
||||
(signed byte) printf_number_buffer::padding
|
||||
(signed byte) printf_number_buffer::padding#1 padding zp[1]:14 1001.0
|
||||
(signed byte) printf_number_buffer::padding#10 padding zp[1]:14 222.44444444444446
|
||||
(void()) printf_padding((byte) printf_padding::pad , (byte) printf_padding::length)
|
||||
(label) printf_padding::@1
|
||||
(label) printf_padding::@2
|
||||
(label) printf_padding::@3
|
||||
(label) printf_padding::@return
|
||||
(byte) printf_padding::i
|
||||
(byte) printf_padding::i#1 i zp[1]:2 200002.0
|
||||
(byte) printf_padding::i#2 i zp[1]:2 75000.75
|
||||
(byte) printf_padding::length
|
||||
(byte) printf_padding::length#0 length zp[1]:15 2002.0
|
||||
(byte) printf_padding::length#1 length zp[1]:15 2002.0
|
||||
(byte) printf_padding::length#2 length zp[1]:15 2002.0
|
||||
(byte) printf_padding::length#4 length zp[1]:15 17167.333333333332
|
||||
(byte) printf_padding::pad
|
||||
(byte) printf_padding::pad#5 pad zp[1]:29 16666.833333333332
|
||||
(void()) printf_schar((signed byte) printf_schar::value , (byte) printf_schar::format_min_length , (byte) printf_schar::format_justify_left , (byte) printf_schar::format_sign_always , (byte) printf_schar::format_zero_padding , (byte) printf_schar::format_radix)
|
||||
(label) printf_schar::@1
|
||||
(label) printf_schar::@2
|
||||
(label) printf_schar::@3
|
||||
(label) printf_schar::@return
|
||||
(struct printf_format_number) printf_schar::format
|
||||
(byte) printf_schar::format_justify_left
|
||||
(const byte) printf_schar::format_justify_left#0 format_justify_left = (byte) 0
|
||||
(byte) printf_schar::format_min_length
|
||||
(const byte) printf_schar::format_min_length#0 format_min_length = (byte) 0
|
||||
(byte) printf_schar::format_radix
|
||||
(byte) printf_schar::format_sign_always
|
||||
(byte) printf_schar::format_zero_padding
|
||||
(const byte) printf_schar::format_zero_padding#0 format_zero_padding = (byte) 0
|
||||
(byte) printf_schar::uvalue
|
||||
(const byte) printf_schar::uvalue#0 uvalue = (byte)(const signed byte) printf_schar::value#0
|
||||
(signed byte) printf_schar::value
|
||||
(const signed byte) printf_schar::value#0 value = -(const signed byte) main::sc
|
||||
(const byte*) printf_screen = (byte*) 1024
|
||||
(void()) printf_sint((signed word) printf_sint::value , (byte) printf_sint::format_min_length , (byte) printf_sint::format_justify_left , (byte) printf_sint::format_sign_always , (byte) printf_sint::format_zero_padding , (byte) printf_sint::format_radix)
|
||||
(label) printf_sint::@1
|
||||
(label) printf_sint::@2
|
||||
(label) printf_sint::@3
|
||||
(label) printf_sint::@return
|
||||
(struct printf_format_number) printf_sint::format
|
||||
(byte) printf_sint::format_justify_left
|
||||
(const byte) printf_sint::format_justify_left#0 format_justify_left = (byte) 0
|
||||
(byte) printf_sint::format_min_length
|
||||
(const byte) printf_sint::format_min_length#0 format_min_length = (byte) 0
|
||||
(byte) printf_sint::format_radix
|
||||
(byte) printf_sint::format_sign_always
|
||||
(byte) printf_sint::format_zero_padding
|
||||
(const byte) printf_sint::format_zero_padding#0 format_zero_padding = (byte) 0
|
||||
(word) printf_sint::uvalue
|
||||
(const word) printf_sint::uvalue#0 uvalue = (word)(const signed word) printf_sint::value#0
|
||||
(signed word) printf_sint::value
|
||||
(const signed word) printf_sint::value#0 value = -(const signed word) main::si
|
||||
(void()) printf_slong((signed dword) printf_slong::value , (byte) printf_slong::format_min_length , (byte) printf_slong::format_justify_left , (byte) printf_slong::format_sign_always , (byte) printf_slong::format_zero_padding , (byte) printf_slong::format_radix)
|
||||
(label) printf_slong::@1
|
||||
(label) printf_slong::@2
|
||||
(label) printf_slong::@3
|
||||
(label) printf_slong::@return
|
||||
(struct printf_format_number) printf_slong::format
|
||||
(byte) printf_slong::format_justify_left
|
||||
(const byte) printf_slong::format_justify_left#0 format_justify_left = (byte) 0
|
||||
(byte) printf_slong::format_min_length
|
||||
(const byte) printf_slong::format_min_length#0 format_min_length = (byte) 0
|
||||
(byte) printf_slong::format_radix
|
||||
(byte) printf_slong::format_sign_always
|
||||
(byte) printf_slong::format_zero_padding
|
||||
(const byte) printf_slong::format_zero_padding#0 format_zero_padding = (byte) 0
|
||||
(dword) printf_slong::uvalue
|
||||
(const dword) printf_slong::uvalue#0 uvalue = (dword)(const signed dword) printf_slong::value#0
|
||||
(signed dword) printf_slong::value
|
||||
(const signed dword) printf_slong::value#0 value = -(const signed dword) main::sl
|
||||
(void()) printf_str((byte*) printf_str::str)
|
||||
(label) printf_str::@1
|
||||
(label) printf_str::@2
|
||||
(label) printf_str::@3
|
||||
(label) printf_str::@4
|
||||
(label) printf_str::@5
|
||||
(label) printf_str::@return
|
||||
(byte) printf_str::ch
|
||||
(byte) printf_str::ch#0 reg byte a 100001.0
|
||||
(byte*) printf_str::str
|
||||
(byte*) printf_str::str#0 str zp[2]:16 42857.57142857143
|
||||
(byte*) printf_str::str#1 str zp[2]:16 2002.0
|
||||
(byte*) printf_str::str#20 str zp[2]:16 205002.5
|
||||
(byte*) printf_str::str#22 str zp[2]:16 11002.0
|
||||
(void()) printf_uchar((byte) printf_uchar::uvalue , (byte) printf_uchar::format_min_length , (byte) printf_uchar::format_justify_left , (byte) printf_uchar::format_sign_always , (byte) printf_uchar::format_zero_padding , (byte) printf_uchar::format_radix)
|
||||
(label) printf_uchar::@1
|
||||
(label) printf_uchar::@2
|
||||
(label) printf_uchar::@return
|
||||
(struct printf_format_number) printf_uchar::format
|
||||
(byte) printf_uchar::format_justify_left
|
||||
(const byte) printf_uchar::format_justify_left#0 format_justify_left = (byte) 0
|
||||
(byte) printf_uchar::format_min_length
|
||||
(const byte) printf_uchar::format_min_length#0 format_min_length = (byte) 0
|
||||
(byte) printf_uchar::format_radix
|
||||
(byte) printf_uchar::format_sign_always
|
||||
(byte) printf_uchar::format_zero_padding
|
||||
(const byte) printf_uchar::format_zero_padding#0 format_zero_padding = (byte) 0
|
||||
(byte) printf_uchar::uvalue
|
||||
(void()) printf_uint((word) printf_uint::uvalue , (byte) printf_uint::format_min_length , (byte) printf_uint::format_justify_left , (byte) printf_uint::format_sign_always , (byte) printf_uint::format_zero_padding , (byte) printf_uint::format_radix)
|
||||
(label) printf_uint::@1
|
||||
(label) printf_uint::@2
|
||||
(label) printf_uint::@return
|
||||
(struct printf_format_number) printf_uint::format
|
||||
(byte) printf_uint::format_justify_left
|
||||
(byte) printf_uint::format_min_length
|
||||
(byte) printf_uint::format_radix
|
||||
(byte) printf_uint::format_radix#2 reg byte x 33.666666666666664
|
||||
(byte) printf_uint::format_sign_always
|
||||
(byte) printf_uint::format_zero_padding
|
||||
(word) printf_uint::uvalue
|
||||
(word) printf_uint::uvalue#2 uvalue zp[2]:8 50.5
|
||||
(void()) printf_ulong((dword) printf_ulong::uvalue , (byte) printf_ulong::format_min_length , (byte) printf_ulong::format_justify_left , (byte) printf_ulong::format_sign_always , (byte) printf_ulong::format_zero_padding , (byte) printf_ulong::format_radix)
|
||||
(label) printf_ulong::@1
|
||||
(label) printf_ulong::@2
|
||||
(label) printf_ulong::@return
|
||||
(struct printf_format_number) printf_ulong::format
|
||||
(byte) printf_ulong::format_justify_left
|
||||
(const byte) printf_ulong::format_justify_left#0 format_justify_left = (byte) 0
|
||||
(byte) printf_ulong::format_min_length
|
||||
(const byte) printf_ulong::format_min_length#0 format_min_length = (byte) 0
|
||||
(byte) printf_ulong::format_radix
|
||||
(byte) printf_ulong::format_sign_always
|
||||
(byte) printf_ulong::format_zero_padding
|
||||
(const byte) printf_ulong::format_zero_padding#0 format_zero_padding = (byte) 0
|
||||
(dword) printf_ulong::uvalue
|
||||
(word()) strlen((byte*) strlen::str)
|
||||
(label) strlen::@1
|
||||
(label) strlen::@2
|
||||
(label) strlen::@return
|
||||
(word) strlen::len
|
||||
(word) strlen::len#1 len zp[2]:11 100001.0
|
||||
(word) strlen::len#2 len zp[2]:11 50250.75
|
||||
(word) strlen::return
|
||||
(word) strlen::return#2 return zp[2]:11 2002.0
|
||||
(byte*) strlen::str
|
||||
(byte*) strlen::str#0 str zp[2]:8 200002.0
|
||||
(byte*) strlen::str#1 str zp[2]:8 5501.0
|
||||
(byte*) strlen::str#2 str zp[2]:8 103334.66666666666
|
||||
(void()) uctoa((byte) uctoa::value , (byte*) uctoa::buffer , (byte) uctoa::radix)
|
||||
(label) uctoa::@1
|
||||
(label) uctoa::@2
|
||||
(label) uctoa::@3
|
||||
(label) uctoa::@4
|
||||
(label) uctoa::@5
|
||||
(label) uctoa::@6
|
||||
(label) uctoa::@7
|
||||
(label) uctoa::@return
|
||||
(byte*) uctoa::buffer
|
||||
(byte*) uctoa::buffer#10 buffer zp[2]:16 3583.916666666666
|
||||
(byte*) uctoa::buffer#11 buffer zp[2]:16 1001.0
|
||||
(byte*) uctoa::buffer#15 buffer zp[2]:16 15001.5
|
||||
(byte*) uctoa::buffer#3 buffer zp[2]:16 2002.0
|
||||
(byte*) uctoa::buffer#4 buffer zp[2]:16 20002.0
|
||||
(byte) uctoa::digit
|
||||
(byte) uctoa::digit#1 digit zp[1]:14 20002.0
|
||||
(byte) uctoa::digit#2 digit zp[1]:14 3077.230769230769
|
||||
(byte) uctoa::digit_value
|
||||
(byte) uctoa::digit_value#0 digit_value zp[1]:29 6000.6
|
||||
(byte*) uctoa::digit_values
|
||||
(byte) uctoa::max_digits
|
||||
(byte) uctoa::radix
|
||||
(byte) uctoa::started
|
||||
(byte) uctoa::started#2 started zp[1]:15 6000.6
|
||||
(byte) uctoa::started#4 started zp[1]:15 10001.0
|
||||
(byte) uctoa::value
|
||||
(byte) uctoa::value#0 reg byte x 10001.0
|
||||
(byte) uctoa::value#10 reg byte x 1001.0
|
||||
(byte) uctoa::value#3 reg byte x 7000.999999999999
|
||||
(byte) uctoa::value#7 reg byte x 15001.5
|
||||
(byte()) uctoa_append((byte*) uctoa_append::buffer , (byte) uctoa_append::value , (byte) uctoa_append::sub)
|
||||
(label) uctoa_append::@1
|
||||
(label) uctoa_append::@2
|
||||
(label) uctoa_append::@3
|
||||
(label) uctoa_append::@return
|
||||
(byte*) uctoa_append::buffer
|
||||
(byte*) uctoa_append::buffer#0 buffer zp[2]:16 13750.25
|
||||
(byte) uctoa_append::digit
|
||||
(byte) uctoa_append::digit#1 reg byte y 1.0000001E7
|
||||
(byte) uctoa_append::digit#2 reg byte y 1.00500015E7
|
||||
(byte) uctoa_append::return
|
||||
(byte) uctoa_append::return#0 reg byte x 20002.0
|
||||
(byte) uctoa_append::sub
|
||||
(byte) uctoa_append::sub#0 sub zp[1]:29 3335000.5
|
||||
(byte) uctoa_append::value
|
||||
(byte) uctoa_append::value#0 reg byte x 36667.33333333333
|
||||
(byte) uctoa_append::value#1 reg byte x 2.0000002E7
|
||||
(byte) uctoa_append::value#2 reg byte x 5018334.166666666
|
||||
(void()) ultoa((dword) ultoa::value , (byte*) ultoa::buffer , (byte) ultoa::radix)
|
||||
(byte~) ultoa::$10 reg byte a 20002.0
|
||||
(byte~) ultoa::$11 reg byte a 2002.0
|
||||
(label) ultoa::@1
|
||||
(label) ultoa::@2
|
||||
(label) ultoa::@3
|
||||
(label) ultoa::@4
|
||||
(label) ultoa::@5
|
||||
(label) ultoa::@6
|
||||
(label) ultoa::@7
|
||||
(label) ultoa::@return
|
||||
(byte*) ultoa::buffer
|
||||
(byte*) ultoa::buffer#10 buffer zp[2]:16 3071.9285714285716
|
||||
(byte*) ultoa::buffer#11 buffer zp[2]:16 1001.0
|
||||
(byte*) ultoa::buffer#15 buffer zp[2]:16 15001.5
|
||||
(byte*) ultoa::buffer#3 buffer zp[2]:16 2002.0
|
||||
(byte*) ultoa::buffer#4 buffer zp[2]:16 20002.0
|
||||
(byte) ultoa::digit
|
||||
(byte) ultoa::digit#1 digit zp[1]:3 20002.0
|
||||
(byte) ultoa::digit#2 digit zp[1]:3 2857.4285714285716
|
||||
(dword) ultoa::digit_value
|
||||
(dword) ultoa::digit_value#0 digit_value zp[4]:23 6000.6
|
||||
(dword*) ultoa::digit_values
|
||||
(byte) ultoa::max_digits
|
||||
(byte) ultoa::radix
|
||||
(byte) ultoa::started
|
||||
(byte) ultoa::started#2 reg byte x 5000.5
|
||||
(byte) ultoa::started#4 reg byte x 10001.0
|
||||
(dword) ultoa::value
|
||||
(dword) ultoa::value#0 value zp[4]:4 10001.0
|
||||
(dword) ultoa::value#10 value zp[4]:4 1001.0
|
||||
(dword) ultoa::value#3 value zp[4]:4 5857.857142857143
|
||||
(dword) ultoa::value#7 value zp[4]:4 15001.5
|
||||
(dword()) ultoa_append((byte*) ultoa_append::buffer , (dword) ultoa_append::value , (dword) ultoa_append::sub)
|
||||
(label) ultoa_append::@1
|
||||
(label) ultoa_append::@2
|
||||
(label) ultoa_append::@3
|
||||
(label) ultoa_append::@return
|
||||
(byte*) ultoa_append::buffer
|
||||
(byte*) ultoa_append::buffer#0 buffer zp[2]:16 13750.25
|
||||
(byte) ultoa_append::digit
|
||||
(byte) ultoa_append::digit#1 reg byte x 1.0000001E7
|
||||
(byte) ultoa_append::digit#2 reg byte x 1.00500015E7
|
||||
(dword) ultoa_append::return
|
||||
(dword) ultoa_append::return#0 return zp[4]:4 20002.0
|
||||
(dword) ultoa_append::sub
|
||||
(dword) ultoa_append::sub#0 sub zp[4]:23 3335000.5
|
||||
(dword) ultoa_append::value
|
||||
(dword) ultoa_append::value#0 value zp[4]:4 36667.33333333333
|
||||
(dword) ultoa_append::value#1 value zp[4]:4 2.0000002E7
|
||||
(dword) ultoa_append::value#2 value zp[4]:4 5018334.166666666
|
||||
(void()) utoa((word) utoa::value , (byte*) utoa::buffer , (byte) utoa::radix)
|
||||
(byte~) utoa::$10 reg byte a 20002.0
|
||||
(byte~) utoa::$11 reg byte a 2002.0
|
||||
(byte~) utoa::$4 reg byte a 20002.0
|
||||
(label) utoa::@1
|
||||
(label) utoa::@10
|
||||
(label) utoa::@11
|
||||
(label) utoa::@12
|
||||
(label) utoa::@2
|
||||
(label) utoa::@3
|
||||
(label) utoa::@4
|
||||
(label) utoa::@5
|
||||
(label) utoa::@6
|
||||
(label) utoa::@7
|
||||
(label) utoa::@8
|
||||
(label) utoa::@9
|
||||
(label) utoa::@return
|
||||
(byte*) utoa::buffer
|
||||
(byte*) utoa::buffer#0 buffer zp[2]:16 1501.5
|
||||
(byte*) utoa::buffer#1 buffer zp[2]:16 1501.5
|
||||
(byte*) utoa::buffer#10 buffer zp[2]:16 2867.133333333333
|
||||
(byte*) utoa::buffer#11 buffer zp[2]:16 429.0
|
||||
(byte*) utoa::buffer#15 buffer zp[2]:16 15001.5
|
||||
(byte*) utoa::buffer#2 buffer zp[2]:16 2002.0
|
||||
(byte*) utoa::buffer#3 buffer zp[2]:16 2002.0
|
||||
(byte*) utoa::buffer#4 buffer zp[2]:16 20002.0
|
||||
(byte) utoa::digit
|
||||
(byte) utoa::digit#1 digit zp[1]:13 20002.0
|
||||
(byte) utoa::digit#2 digit zp[1]:13 2666.9333333333334
|
||||
(word) utoa::digit_value
|
||||
(word) utoa::digit_value#0 digit_value zp[2]:27 6000.6
|
||||
(word*) utoa::digit_values
|
||||
(word*) utoa::digit_values#8 digit_values zp[2]:11 588.2941176470588
|
||||
(byte) utoa::max_digits
|
||||
(byte) utoa::max_digits#7 max_digits zp[1]:10 588.2941176470588
|
||||
(byte) utoa::radix
|
||||
(byte) utoa::radix#1 reg byte x 202.0
|
||||
(byte) utoa::radix#2 reg byte x 1026.25
|
||||
(byte) utoa::started
|
||||
(byte) utoa::started#2 reg byte x 4286.142857142857
|
||||
(byte) utoa::started#4 reg byte x 10001.0
|
||||
(word) utoa::value
|
||||
(word) utoa::value#0 value zp[2]:8 10001.0
|
||||
(word) utoa::value#10 value zp[2]:8 183.66666666666669
|
||||
(word) utoa::value#2 value zp[2]:8 101.0
|
||||
(word) utoa::value#3 value zp[2]:8 5125.625
|
||||
(word) utoa::value#7 value zp[2]:8 15001.5
|
||||
(word()) utoa_append((byte*) utoa_append::buffer , (word) utoa_append::value , (word) utoa_append::sub)
|
||||
(label) utoa_append::@1
|
||||
(label) utoa_append::@2
|
||||
(label) utoa_append::@3
|
||||
(label) utoa_append::@return
|
||||
(byte*) utoa_append::buffer
|
||||
(byte*) utoa_append::buffer#0 buffer zp[2]:16 13750.25
|
||||
(byte) utoa_append::digit
|
||||
(byte) utoa_append::digit#1 reg byte x 1.0000001E7
|
||||
(byte) utoa_append::digit#2 reg byte x 1.00500015E7
|
||||
(word) utoa_append::return
|
||||
(word) utoa_append::return#0 return zp[2]:8 20002.0
|
||||
(word) utoa_append::sub
|
||||
(word) utoa_append::sub#0 sub zp[2]:27 3335000.5
|
||||
(word) utoa_append::value
|
||||
(word) utoa_append::value#0 value zp[2]:8 36667.33333333333
|
||||
(word) utoa_append::value#1 value zp[2]:8 2.0000002E7
|
||||
(word) utoa_append::value#2 value zp[2]:8 5018334.166666666
|
||||
|
||||
reg byte a [ printf_char::ch#5 printf_char::ch#3 printf_char::ch#2 printf_char::ch#0 printf_char::ch#1 ]
|
||||
reg byte x [ memset::c#4 ]
|
||||
reg byte x [ printf_number_buffer::format_min_length#10 ]
|
||||
reg byte y [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ]
|
||||
zp[1]:2 [ printf_padding::i#2 printf_padding::i#1 ]
|
||||
zp[1]:3 [ ultoa::digit#2 ultoa::digit#1 printf_number_buffer::format_justify_left#10 ]
|
||||
zp[4]:4 [ ultoa::value#3 ultoa::value#7 ultoa::value#10 ultoa::value#0 ultoa_append::value#2 ultoa_append::value#0 ultoa_append::value#1 ultoa_append::return#0 ]
|
||||
reg byte x [ ultoa::started#2 ultoa::started#4 ]
|
||||
reg byte x [ ultoa_append::digit#2 ultoa_append::digit#1 ]
|
||||
zp[2]:8 [ printf_uint::uvalue#2 utoa::value#3 utoa::value#7 utoa::value#10 utoa::value#2 utoa::value#0 utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 utoa_append::return#0 strlen::str#2 strlen::str#1 strlen::str#0 memcpy::src#2 memcpy::src#1 memset::num#2 memset::end#0 ]
|
||||
reg byte x [ printf_uint::format_radix#2 ]
|
||||
reg byte x [ utoa::radix#2 utoa::radix#1 ]
|
||||
zp[1]:10 [ utoa::max_digits#7 printf_number_buffer::format_zero_padding#10 ]
|
||||
zp[2]:11 [ utoa::digit_values#8 strlen::len#2 strlen::len#1 strlen::return#2 printf_number_buffer::$18 memcpy::dst#2 memcpy::dst#1 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
zp[1]:13 [ utoa::digit#2 utoa::digit#1 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#4 printf_number_buffer::buffer_sign#2 printf_number_buffer::buffer_sign#0 printf_number_buffer::buffer_sign#5 printf_number_buffer::buffer_sign#3 printf_number_buffer::buffer_sign#1 ]
|
||||
reg byte x [ utoa::started#2 utoa::started#4 ]
|
||||
reg byte x [ utoa_append::digit#2 utoa_append::digit#1 ]
|
||||
zp[1]:14 [ uctoa::digit#2 uctoa::digit#1 printf_number_buffer::padding#10 printf_number_buffer::padding#1 ]
|
||||
reg byte x [ uctoa::value#3 uctoa::value#7 uctoa::value#10 uctoa::value#0 ]
|
||||
zp[1]:15 [ uctoa::started#2 uctoa::started#4 printf_padding::length#4 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 ]
|
||||
zp[2]:16 [ uctoa::buffer#10 uctoa::buffer#15 uctoa::buffer#11 uctoa::buffer#4 uctoa::buffer#3 uctoa_append::buffer#0 utoa::buffer#10 utoa::buffer#15 utoa::buffer#11 utoa::buffer#4 utoa::buffer#0 utoa::buffer#3 utoa_append::buffer#0 utoa::buffer#1 utoa::buffer#2 ultoa::buffer#10 ultoa::buffer#15 ultoa::buffer#11 ultoa::buffer#4 ultoa::buffer#3 ultoa_append::buffer#0 printf_str::str#20 printf_str::str#22 printf_str::str#1 printf_str::str#0 printf_number_buffer::buffer_digits#10 ]
|
||||
reg byte x [ uctoa_append::value#2 uctoa_append::value#0 uctoa_append::value#1 ]
|
||||
reg byte y [ uctoa_append::digit#2 uctoa_append::digit#1 ]
|
||||
zp[2]:18 [ printf_line_cursor ]
|
||||
zp[2]:20 [ printf_char_cursor printf_char::$8 ]
|
||||
zp[1]:22 [ main::c ]
|
||||
reg byte a [ printf_str::ch#0 ]
|
||||
reg byte a [ ultoa::$11 ]
|
||||
reg byte a [ ultoa::$10 ]
|
||||
zp[4]:23 [ ultoa::digit_value#0 ultoa_append::sub#0 ]
|
||||
reg byte a [ utoa::$4 ]
|
||||
reg byte a [ utoa::$11 ]
|
||||
reg byte a [ utoa::$10 ]
|
||||
zp[2]:27 [ utoa::digit_value#0 utoa_append::sub#0 ]
|
||||
zp[1]:29 [ uctoa::digit_value#0 uctoa_append::sub#0 printf_padding::pad#5 ]
|
||||
reg byte x [ uctoa_append::return#0 ]
|
||||
mem[12] [ printf_buffer ]
|
1405
src/test/ref/printf-13.asm
Normal file
1405
src/test/ref/printf-13.asm
Normal file
File diff suppressed because it is too large
Load Diff
807
src/test/ref/printf-13.cfg
Normal file
807
src/test/ref/printf-13.cfg
Normal file
@ -0,0 +1,807 @@
|
||||
@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_str
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1
|
||||
[10] phi()
|
||||
[11] call printf_char
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@2
|
||||
[12] phi()
|
||||
[13] call printf_str
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@3
|
||||
[14] phi()
|
||||
[15] call printf_string
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main::@4
|
||||
[16] phi()
|
||||
[17] call printf_str
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@5
|
||||
[18] phi()
|
||||
[19] call printf_string
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main::@6
|
||||
[20] phi()
|
||||
[21] call printf_str
|
||||
to:main::@8
|
||||
main::@8: scope:[main] from main::@7
|
||||
[22] phi()
|
||||
[23] call printf_string
|
||||
to:main::@9
|
||||
main::@9: scope:[main] from main::@8
|
||||
[24] phi()
|
||||
[25] call printf_str
|
||||
to:main::@10
|
||||
main::@10: scope:[main] from main::@9
|
||||
[26] phi()
|
||||
[27] call printf_string
|
||||
to:main::@11
|
||||
main::@11: scope:[main] from main::@10
|
||||
[28] phi()
|
||||
[29] call printf_str
|
||||
to:main::@12
|
||||
main::@12: scope:[main] from main::@11
|
||||
[30] phi()
|
||||
[31] call printf_str
|
||||
to:main::@13
|
||||
main::@13: scope:[main] from main::@12
|
||||
[32] phi()
|
||||
[33] call printf_char
|
||||
to:main::@14
|
||||
main::@14: scope:[main] from main::@13
|
||||
[34] phi()
|
||||
[35] call printf_str
|
||||
to:main::@15
|
||||
main::@15: scope:[main] from main::@14
|
||||
[36] phi()
|
||||
[37] call printf_string
|
||||
to:main::@16
|
||||
main::@16: scope:[main] from main::@15
|
||||
[38] phi()
|
||||
[39] call printf_str
|
||||
to:main::@17
|
||||
main::@17: scope:[main] from main::@16
|
||||
[40] phi()
|
||||
[41] call printf_string
|
||||
to:main::@18
|
||||
main::@18: scope:[main] from main::@17
|
||||
[42] phi()
|
||||
[43] call printf_str
|
||||
to:main::@19
|
||||
main::@19: scope:[main] from main::@18
|
||||
[44] phi()
|
||||
[45] call printf_string
|
||||
to:main::@20
|
||||
main::@20: scope:[main] from main::@19
|
||||
[46] phi()
|
||||
[47] call printf_str
|
||||
to:main::@21
|
||||
main::@21: scope:[main] from main::@20
|
||||
[48] phi()
|
||||
[49] call printf_string
|
||||
to:main::@22
|
||||
main::@22: scope:[main] from main::@21
|
||||
[50] phi()
|
||||
[51] call printf_str
|
||||
to:main::@23
|
||||
main::@23: scope:[main] from main::@22
|
||||
[52] phi()
|
||||
[53] call printf_str
|
||||
to:main::@24
|
||||
main::@24: scope:[main] from main::@23
|
||||
[54] phi()
|
||||
[55] call printf_char
|
||||
to:main::@25
|
||||
main::@25: scope:[main] from main::@24
|
||||
[56] phi()
|
||||
[57] call printf_str
|
||||
to:main::@26
|
||||
main::@26: scope:[main] from main::@25
|
||||
[58] phi()
|
||||
[59] call printf_sint
|
||||
to:main::@27
|
||||
main::@27: scope:[main] from main::@26
|
||||
[60] phi()
|
||||
[61] call printf_str
|
||||
to:main::@28
|
||||
main::@28: scope:[main] from main::@27
|
||||
[62] phi()
|
||||
[63] call printf_sint
|
||||
to:main::@29
|
||||
main::@29: scope:[main] from main::@28
|
||||
[64] phi()
|
||||
[65] call printf_str
|
||||
to:main::@30
|
||||
main::@30: scope:[main] from main::@29
|
||||
[66] phi()
|
||||
[67] call printf_sint
|
||||
to:main::@31
|
||||
main::@31: scope:[main] from main::@30
|
||||
[68] phi()
|
||||
[69] call printf_str
|
||||
to:main::@32
|
||||
main::@32: scope:[main] from main::@31
|
||||
[70] phi()
|
||||
[71] call printf_sint
|
||||
to:main::@33
|
||||
main::@33: scope:[main] from main::@32
|
||||
[72] phi()
|
||||
[73] call printf_str
|
||||
to:main::@34
|
||||
main::@34: scope:[main] from main::@33
|
||||
[74] phi()
|
||||
[75] call printf_str
|
||||
to:main::@35
|
||||
main::@35: scope:[main] from main::@34
|
||||
[76] phi()
|
||||
[77] call printf_char
|
||||
to:main::@36
|
||||
main::@36: scope:[main] from main::@35
|
||||
[78] phi()
|
||||
[79] call printf_str
|
||||
to:main::@37
|
||||
main::@37: scope:[main] from main::@36
|
||||
[80] phi()
|
||||
[81] call printf_sint
|
||||
to:main::@38
|
||||
main::@38: scope:[main] from main::@37
|
||||
[82] phi()
|
||||
[83] call printf_str
|
||||
to:main::@39
|
||||
main::@39: scope:[main] from main::@38
|
||||
[84] phi()
|
||||
[85] call printf_sint
|
||||
to:main::@40
|
||||
main::@40: scope:[main] from main::@39
|
||||
[86] phi()
|
||||
[87] call printf_str
|
||||
to:main::@41
|
||||
main::@41: scope:[main] from main::@40
|
||||
[88] phi()
|
||||
[89] call printf_sint
|
||||
to:main::@42
|
||||
main::@42: scope:[main] from main::@41
|
||||
[90] phi()
|
||||
[91] call printf_str
|
||||
to:main::@43
|
||||
main::@43: scope:[main] from main::@42
|
||||
[92] phi()
|
||||
[93] call printf_sint
|
||||
to:main::@44
|
||||
main::@44: scope:[main] from main::@43
|
||||
[94] phi()
|
||||
[95] call printf_str
|
||||
to:main::@45
|
||||
main::@45: scope:[main] from main::@44
|
||||
[96] phi()
|
||||
[97] call printf_str
|
||||
to:main::@46
|
||||
main::@46: scope:[main] from main::@45
|
||||
[98] phi()
|
||||
[99] call printf_char
|
||||
to:main::@47
|
||||
main::@47: scope:[main] from main::@46
|
||||
[100] phi()
|
||||
[101] call printf_str
|
||||
to:main::@48
|
||||
main::@48: scope:[main] from main::@47
|
||||
[102] phi()
|
||||
[103] call printf_sint
|
||||
to:main::@49
|
||||
main::@49: scope:[main] from main::@48
|
||||
[104] phi()
|
||||
[105] call printf_str
|
||||
to:main::@50
|
||||
main::@50: scope:[main] from main::@49
|
||||
[106] phi()
|
||||
[107] call printf_sint
|
||||
to:main::@51
|
||||
main::@51: scope:[main] from main::@50
|
||||
[108] phi()
|
||||
[109] call printf_str
|
||||
to:main::@52
|
||||
main::@52: scope:[main] from main::@51
|
||||
[110] phi()
|
||||
[111] call printf_sint
|
||||
to:main::@53
|
||||
main::@53: scope:[main] from main::@52
|
||||
[112] phi()
|
||||
[113] call printf_str
|
||||
to:main::@54
|
||||
main::@54: scope:[main] from main::@53
|
||||
[114] phi()
|
||||
[115] call printf_sint
|
||||
to:main::@55
|
||||
main::@55: scope:[main] from main::@54
|
||||
[116] phi()
|
||||
[117] call printf_str
|
||||
to:main::@56
|
||||
main::@56: scope:[main] from main::@55
|
||||
[118] phi()
|
||||
[119] call printf_str
|
||||
to:main::@57
|
||||
main::@57: scope:[main] from main::@56
|
||||
[120] phi()
|
||||
[121] call printf_char
|
||||
to:main::@58
|
||||
main::@58: scope:[main] from main::@57
|
||||
[122] phi()
|
||||
[123] call printf_str
|
||||
to:main::@59
|
||||
main::@59: scope:[main] from main::@58
|
||||
[124] phi()
|
||||
[125] call printf_sint
|
||||
to:main::@60
|
||||
main::@60: scope:[main] from main::@59
|
||||
[126] phi()
|
||||
[127] call printf_str
|
||||
to:main::@61
|
||||
main::@61: scope:[main] from main::@60
|
||||
[128] phi()
|
||||
[129] call printf_sint
|
||||
to:main::@62
|
||||
main::@62: scope:[main] from main::@61
|
||||
[130] phi()
|
||||
[131] call printf_str
|
||||
to:main::@63
|
||||
main::@63: scope:[main] from main::@62
|
||||
[132] phi()
|
||||
[133] call printf_sint
|
||||
to:main::@64
|
||||
main::@64: scope:[main] from main::@63
|
||||
[134] phi()
|
||||
[135] call printf_str
|
||||
to:main::@65
|
||||
main::@65: scope:[main] from main::@64
|
||||
[136] phi()
|
||||
[137] call printf_sint
|
||||
to:main::@66
|
||||
main::@66: scope:[main] from main::@65
|
||||
[138] phi()
|
||||
[139] call printf_str
|
||||
to:main::@67
|
||||
main::@67: scope:[main] from main::@66
|
||||
[140] phi()
|
||||
[141] call printf_str
|
||||
to:main::@68
|
||||
main::@68: scope:[main] from main::@67
|
||||
[142] phi()
|
||||
[143] call printf_char
|
||||
to:main::@69
|
||||
main::@69: scope:[main] from main::@68
|
||||
[144] phi()
|
||||
[145] call printf_str
|
||||
to:main::@70
|
||||
main::@70: scope:[main] from main::@69
|
||||
[146] phi()
|
||||
[147] call printf_uint
|
||||
to:main::@71
|
||||
main::@71: scope:[main] from main::@70
|
||||
[148] phi()
|
||||
[149] call printf_str
|
||||
to:main::@72
|
||||
main::@72: scope:[main] from main::@71
|
||||
[150] phi()
|
||||
[151] call printf_uint
|
||||
to:main::@73
|
||||
main::@73: scope:[main] from main::@72
|
||||
[152] phi()
|
||||
[153] call printf_str
|
||||
to:main::@74
|
||||
main::@74: scope:[main] from main::@73
|
||||
[154] phi()
|
||||
[155] call printf_uint
|
||||
to:main::@75
|
||||
main::@75: scope:[main] from main::@74
|
||||
[156] phi()
|
||||
[157] call printf_str
|
||||
to:main::@76
|
||||
main::@76: scope:[main] from main::@75
|
||||
[158] phi()
|
||||
[159] call printf_uint
|
||||
to:main::@77
|
||||
main::@77: scope:[main] from main::@76
|
||||
[160] phi()
|
||||
[161] call printf_str
|
||||
to:main::@78
|
||||
main::@78: scope:[main] from main::@77
|
||||
[162] phi()
|
||||
[163] call printf_str
|
||||
to:main::@79
|
||||
main::@79: scope:[main] from main::@78
|
||||
[164] phi()
|
||||
[165] call printf_char
|
||||
to:main::@80
|
||||
main::@80: scope:[main] from main::@79
|
||||
[166] phi()
|
||||
[167] call printf_str
|
||||
to:main::@81
|
||||
main::@81: scope:[main] from main::@80
|
||||
[168] phi()
|
||||
[169] call printf_uint
|
||||
to:main::@82
|
||||
main::@82: scope:[main] from main::@81
|
||||
[170] phi()
|
||||
[171] call printf_str
|
||||
to:main::@83
|
||||
main::@83: scope:[main] from main::@82
|
||||
[172] phi()
|
||||
[173] call printf_uint
|
||||
to:main::@84
|
||||
main::@84: scope:[main] from main::@83
|
||||
[174] phi()
|
||||
[175] call printf_str
|
||||
to:main::@85
|
||||
main::@85: scope:[main] from main::@84
|
||||
[176] phi()
|
||||
[177] call printf_uint
|
||||
to:main::@86
|
||||
main::@86: scope:[main] from main::@85
|
||||
[178] phi()
|
||||
[179] call printf_str
|
||||
to:main::@87
|
||||
main::@87: scope:[main] from main::@86
|
||||
[180] phi()
|
||||
[181] call printf_uint
|
||||
to:main::@88
|
||||
main::@88: scope:[main] from main::@87
|
||||
[182] phi()
|
||||
[183] call printf_str
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@88
|
||||
[184] return
|
||||
to:@return
|
||||
|
||||
(void()) printf_str((byte*) printf_str::str)
|
||||
printf_str: scope:[printf_str] from main::@1 main::@11 main::@12 main::@14 main::@16 main::@18 main::@20 main::@22 main::@23 main::@25 main::@27 main::@29 main::@3 main::@31 main::@33 main::@34 main::@36 main::@38 main::@40 main::@42 main::@44 main::@45 main::@47 main::@49 main::@5 main::@51 main::@53 main::@55 main::@56 main::@58 main::@60 main::@62 main::@64 main::@66 main::@67 main::@69 main::@7 main::@71 main::@73 main::@75 main::@77 main::@78 main::@80 main::@82 main::@84 main::@86 main::@88 main::@9 printf_number_buffer::@4 printf_string::@2
|
||||
[185] (byte*) printf_str::str#53 ← phi( main::@1/(const byte*) main::str main::@11/(const byte*) main::str9 main::@12/(const byte*) main::str main::@14/(const byte*) main::str11 main::@16/(const byte*) main::str3 main::@18/(const byte*) main::str3 main::@20/(const byte*) main::str3 main::@22/(const byte*) main::str9 main::@23/(const byte*) main::str main::@25/(const byte*) main::str21 main::@27/(const byte*) main::str3 main::@29/(const byte*) main::str3 main::@3/(const byte*) main::str1 main::@31/(const byte*) main::str3 main::@33/(const byte*) main::str9 main::@34/(const byte*) main::str main::@36/(const byte*) main::str27 main::@38/(const byte*) main::str3 main::@40/(const byte*) main::str3 main::@42/(const byte*) main::str3 main::@44/(const byte*) main::str9 main::@45/(const byte*) main::str main::@47/(const byte*) main::str33 main::@49/(const byte*) main::str3 main::@5/(const byte*) main::str3 main::@51/(const byte*) main::str3 main::@53/(const byte*) main::str3 main::@55/(const byte*) main::str9 main::@56/(const byte*) main::str main::@58/(const byte*) main::str39 main::@60/(const byte*) main::str3 main::@62/(const byte*) main::str3 main::@64/(const byte*) main::str3 main::@66/(const byte*) main::str9 main::@67/(const byte*) main::str main::@69/(const byte*) main::str45 main::@7/(const byte*) main::str3 main::@71/(const byte*) main::str3 main::@73/(const byte*) main::str3 main::@75/(const byte*) main::str3 main::@77/(const byte*) main::str9 main::@78/(const byte*) main::str main::@80/(const byte*) main::str51 main::@82/(const byte*) main::str3 main::@84/(const byte*) main::str3 main::@86/(const byte*) main::str3 main::@88/(const byte*) main::str9 main::@9/(const byte*) main::str3 printf_number_buffer::@4/(byte*) printf_str::str#1 printf_string::@2/(byte*) printf_str::str#2 )
|
||||
to:printf_str::@1
|
||||
printf_str::@1: scope:[printf_str] from printf_str printf_str::@4 printf_str::@5
|
||||
[186] (byte*) printf_str::str#51 ← phi( printf_str/(byte*) printf_str::str#53 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
|
||||
[187] (byte) printf_str::ch#0 ← *((byte*) printf_str::str#51)
|
||||
[188] (byte*) printf_str::str#0 ← ++ (byte*) printf_str::str#51
|
||||
[189] if((byte) printf_str::ch#0!=(byte) 0) goto printf_str::@3
|
||||
to:printf_str::@return
|
||||
printf_str::@return: scope:[printf_str] from printf_str::@2
|
||||
[190] return
|
||||
to:@return
|
||||
printf_str::@3: scope:[printf_str] from printf_str::@2
|
||||
[191] 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
|
||||
[192] (byte) printf_char::ch#1 ← (byte) printf_str::ch#0
|
||||
[193] call printf_char
|
||||
to:printf_str::@1
|
||||
printf_str::@4: scope:[printf_str] from printf_str::@3
|
||||
[194] phi()
|
||||
[195] call printf_ln
|
||||
to:printf_str::@1
|
||||
|
||||
(void()) printf_ln()
|
||||
printf_ln: scope:[printf_ln] from printf_str::@4
|
||||
[196] phi()
|
||||
to:printf_ln::@1
|
||||
printf_ln::@1: scope:[printf_ln] from printf_ln printf_ln::@1
|
||||
[197] (byte*) printf_line_cursor ← (byte*) printf_line_cursor + (byte) $28
|
||||
[198] 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
|
||||
[199] (byte*) printf_char_cursor ← (byte*) printf_line_cursor
|
||||
to:printf_ln::@return
|
||||
printf_ln::@return: scope:[printf_ln] from printf_ln::@2
|
||||
[200] return
|
||||
to:@return
|
||||
|
||||
(void()) printf_char((byte) printf_char::ch)
|
||||
printf_char: scope:[printf_char] from main::@13 main::@2 main::@24 main::@35 main::@46 main::@57 main::@68 main::@79 printf_number_buffer::@8 printf_padding::@2 printf_str::@5
|
||||
[201] (byte) printf_char::ch#11 ← phi( main::@13/(byte) '%' main::@2/(byte) '%' main::@24/(byte) '%' main::@35/(byte) '%' main::@46/(byte) '%' main::@57/(byte) '%' main::@68/(byte) '%' main::@79/(byte) '%' printf_number_buffer::@8/(byte) printf_char::ch#2 printf_padding::@2/(byte) printf_char::ch#0 printf_str::@5/(byte) printf_char::ch#1 )
|
||||
[202] *((byte*) printf_char_cursor) ← (byte) printf_char::ch#11
|
||||
[203] (byte*) printf_char_cursor ← ++ (byte*) printf_char_cursor
|
||||
[204] if((byte*) printf_char_cursor<(const byte*) printf_screen+(word)(number) $28*(number) $19) goto printf_char::@return
|
||||
to:printf_char::@1
|
||||
printf_char::@1: scope:[printf_char] from printf_char
|
||||
[205] phi()
|
||||
[206] call memcpy
|
||||
to:printf_char::@2
|
||||
printf_char::@2: scope:[printf_char] from printf_char::@1
|
||||
[207] phi()
|
||||
[208] call memset
|
||||
to:printf_char::@3
|
||||
printf_char::@3: scope:[printf_char] from printf_char::@2
|
||||
[209] (byte*~) printf_char::$8 ← (byte*) printf_char_cursor - (byte) $28
|
||||
[210] (byte*) printf_char_cursor ← (byte*~) printf_char::$8
|
||||
[211] (byte*) printf_line_cursor ← (byte*) printf_char_cursor
|
||||
to:printf_char::@return
|
||||
printf_char::@return: scope:[printf_char] from printf_char printf_char::@3
|
||||
[212] return
|
||||
to:@return
|
||||
|
||||
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
||||
memset: scope:[memset] from printf_char::@2 printf_cls
|
||||
[213] (byte) memset::c#4 ← phi( printf_char::@2/(byte) ' ' printf_cls/(byte) ' ' )
|
||||
[213] (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 )
|
||||
[213] (word) memset::num#2 ← phi( printf_char::@2/(byte) $28 printf_cls/(word)(number) $28*(number) $19 )
|
||||
[214] if((word) memset::num#2<=(byte) 0) goto memset::@return
|
||||
to:memset::@1
|
||||
memset::@1: scope:[memset] from memset
|
||||
[215] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2
|
||||
[216] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3
|
||||
to:memset::@2
|
||||
memset::@2: scope:[memset] from memset::@1 memset::@3
|
||||
[217] (byte*) memset::dst#2 ← phi( memset::@1/(byte*) memset::dst#4 memset::@3/(byte*) memset::dst#1 )
|
||||
[218] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3
|
||||
to:memset::@return
|
||||
memset::@return: scope:[memset] from memset memset::@2
|
||||
[219] return
|
||||
to:@return
|
||||
memset::@3: scope:[memset] from memset::@2
|
||||
[220] *((byte*) memset::dst#2) ← (byte) memset::c#4
|
||||
[221] (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
|
||||
[222] phi()
|
||||
to:memcpy::@1
|
||||
memcpy::@1: scope:[memcpy] from memcpy memcpy::@2
|
||||
[223] (byte*) memcpy::dst#2 ← phi( memcpy/(byte*)(const void*) memcpy::destination#0 memcpy::@2/(byte*) memcpy::dst#1 )
|
||||
[223] (byte*) memcpy::src#2 ← phi( memcpy/(byte*)(const void*) memcpy::source#0 memcpy::@2/(byte*) memcpy::src#1 )
|
||||
[224] if((byte*) memcpy::src#2!=(const byte*) memcpy::src_end#0) goto memcpy::@2
|
||||
to:memcpy::@return
|
||||
memcpy::@return: scope:[memcpy] from memcpy::@1
|
||||
[225] return
|
||||
to:@return
|
||||
memcpy::@2: scope:[memcpy] from memcpy::@1
|
||||
[226] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2)
|
||||
[227] (byte*) memcpy::dst#1 ← ++ (byte*) memcpy::dst#2
|
||||
[228] (byte*) memcpy::src#1 ← ++ (byte*) memcpy::src#2
|
||||
to:memcpy::@1
|
||||
|
||||
(void()) printf_uint((word) printf_uint::uvalue , (byte) printf_uint::format_min_length , (byte) printf_uint::format_justify_left , (byte) printf_uint::format_sign_always , (byte) printf_uint::format_zero_padding , (byte) printf_uint::format_radix)
|
||||
printf_uint: scope:[printf_uint] from main::@70 main::@72 main::@74 main::@76 main::@81 main::@83 main::@85 main::@87
|
||||
[229] (byte) printf_uint::format_radix#10 ← phi( main::@70/(const byte) OCTAL main::@72/(const byte) OCTAL main::@74/(const byte) OCTAL main::@76/(const byte) OCTAL main::@81/(const byte) HEXADECIMAL main::@83/(const byte) HEXADECIMAL main::@85/(const byte) HEXADECIMAL main::@87/(const byte) HEXADECIMAL )
|
||||
[229] (word) printf_uint::uvalue#10 ← phi( main::@70/(byte) 1 main::@72/(byte) $b main::@74/(byte) $6f main::@76/(word) $457 main::@81/(byte) 1 main::@83/(byte) $b main::@85/(byte) $6f main::@87/(word) $457 )
|
||||
to:printf_uint::@1
|
||||
printf_uint::@1: scope:[printf_uint] from printf_uint
|
||||
[230] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0
|
||||
[231] (word) utoa::value#2 ← (word) printf_uint::uvalue#10
|
||||
[232] (byte) utoa::radix#1 ← (byte) printf_uint::format_radix#10
|
||||
[233] call utoa
|
||||
to:printf_uint::@2
|
||||
printf_uint::@2: scope:[printf_uint] from printf_uint::@1
|
||||
[234] (byte) printf_number_buffer::buffer_sign#1 ← *((byte*)&(struct printf_buffer_number) printf_buffer)
|
||||
[235] call printf_number_buffer
|
||||
to:printf_uint::@return
|
||||
printf_uint::@return: scope:[printf_uint] from printf_uint::@2
|
||||
[236] return
|
||||
to:@return
|
||||
|
||||
(void()) printf_number_buffer((byte) printf_number_buffer::buffer_sign , (byte*) printf_number_buffer::buffer_digits , (byte) printf_number_buffer::format_min_length , (byte) printf_number_buffer::format_justify_left , (byte) printf_number_buffer::format_sign_always , (byte) printf_number_buffer::format_zero_padding , (byte) printf_number_buffer::format_radix)
|
||||
printf_number_buffer: scope:[printf_number_buffer] from printf_sint::@5 printf_uint::@2
|
||||
[237] (byte) printf_number_buffer::buffer_sign#10 ← phi( printf_sint::@5/(byte) printf_number_buffer::buffer_sign#0 printf_uint::@2/(byte) printf_number_buffer::buffer_sign#1 )
|
||||
[237] (byte*) printf_number_buffer::buffer_digits#10 ← phi( printf_sint::@5/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS printf_uint::@2/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS )
|
||||
[237] (byte) printf_number_buffer::format_zero_padding#10 ← phi( printf_sint::@5/(byte) printf_number_buffer::format_zero_padding#0 printf_uint::@2/(byte) 0 )
|
||||
[237] (byte) printf_number_buffer::format_justify_left#10 ← phi( printf_sint::@5/(byte) printf_number_buffer::format_justify_left#0 printf_uint::@2/(byte) 0 )
|
||||
[237] (byte) printf_number_buffer::format_min_length#2 ← phi( printf_sint::@5/(byte) 3 printf_uint::@2/(byte) 0 )
|
||||
[238] if((byte) 0==(byte) printf_number_buffer::format_min_length#2) goto printf_number_buffer::@1
|
||||
to:printf_number_buffer::@5
|
||||
printf_number_buffer::@5: scope:[printf_number_buffer] from printf_number_buffer
|
||||
[239] (byte*) strlen::str#1 ← (byte*) printf_number_buffer::buffer_digits#10
|
||||
[240] call strlen
|
||||
[241] (word) strlen::return#2 ← (word) strlen::len#2
|
||||
to:printf_number_buffer::@12
|
||||
printf_number_buffer::@12: scope:[printf_number_buffer] from printf_number_buffer::@5
|
||||
[242] (word~) printf_number_buffer::$18 ← (word) strlen::return#2
|
||||
[243] (signed byte) printf_number_buffer::len#0 ← (signed byte)(word~) printf_number_buffer::$18
|
||||
[244] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@11
|
||||
to:printf_number_buffer::@6
|
||||
printf_number_buffer::@6: scope:[printf_number_buffer] from printf_number_buffer::@12
|
||||
[245] (signed byte) printf_number_buffer::len#1 ← ++ (signed byte) printf_number_buffer::len#0
|
||||
to:printf_number_buffer::@11
|
||||
printf_number_buffer::@11: scope:[printf_number_buffer] from printf_number_buffer::@12 printf_number_buffer::@6
|
||||
[246] (signed byte) printf_number_buffer::len#2 ← phi( printf_number_buffer::@12/(signed byte) printf_number_buffer::len#0 printf_number_buffer::@6/(signed byte) printf_number_buffer::len#1 )
|
||||
[247] (signed byte) printf_number_buffer::padding#1 ← (signed byte)(byte) printf_number_buffer::format_min_length#2 - (signed byte) printf_number_buffer::len#2
|
||||
[248] if((signed byte) printf_number_buffer::padding#1>=(signed byte) 0) goto printf_number_buffer::@19
|
||||
to:printf_number_buffer::@1
|
||||
printf_number_buffer::@19: scope:[printf_number_buffer] from printf_number_buffer::@11
|
||||
[249] phi()
|
||||
to:printf_number_buffer::@1
|
||||
printf_number_buffer::@1: scope:[printf_number_buffer] from printf_number_buffer printf_number_buffer::@11 printf_number_buffer::@19
|
||||
[250] (signed byte) printf_number_buffer::padding#10 ← phi( printf_number_buffer/(signed byte) 0 printf_number_buffer::@19/(signed byte) printf_number_buffer::padding#1 printf_number_buffer::@11/(signed byte) 0 )
|
||||
[251] if((byte) 0!=(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@2
|
||||
to:printf_number_buffer::@15
|
||||
printf_number_buffer::@15: scope:[printf_number_buffer] from printf_number_buffer::@1
|
||||
[252] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@2
|
||||
to:printf_number_buffer::@14
|
||||
printf_number_buffer::@14: scope:[printf_number_buffer] from printf_number_buffer::@15
|
||||
[253] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@7
|
||||
to:printf_number_buffer::@2
|
||||
printf_number_buffer::@7: scope:[printf_number_buffer] from printf_number_buffer::@14
|
||||
[254] (byte) printf_padding::length#0 ← (byte)(signed byte) printf_number_buffer::padding#10
|
||||
[255] call printf_padding
|
||||
to:printf_number_buffer::@2
|
||||
printf_number_buffer::@2: scope:[printf_number_buffer] from printf_number_buffer::@1 printf_number_buffer::@14 printf_number_buffer::@15 printf_number_buffer::@7
|
||||
[256] if((byte) 0==(byte) printf_number_buffer::buffer_sign#10) goto printf_number_buffer::@3
|
||||
to:printf_number_buffer::@8
|
||||
printf_number_buffer::@8: scope:[printf_number_buffer] from printf_number_buffer::@2
|
||||
[257] (byte) printf_char::ch#2 ← (byte) printf_number_buffer::buffer_sign#10
|
||||
[258] call printf_char
|
||||
to:printf_number_buffer::@3
|
||||
printf_number_buffer::@3: scope:[printf_number_buffer] from printf_number_buffer::@2 printf_number_buffer::@8
|
||||
[259] if((byte) 0==(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@4
|
||||
to:printf_number_buffer::@16
|
||||
printf_number_buffer::@16: scope:[printf_number_buffer] from printf_number_buffer::@3
|
||||
[260] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@9
|
||||
to:printf_number_buffer::@4
|
||||
printf_number_buffer::@9: scope:[printf_number_buffer] from printf_number_buffer::@16
|
||||
[261] (byte) printf_padding::length#1 ← (byte)(signed byte) printf_number_buffer::padding#10
|
||||
[262] call printf_padding
|
||||
to:printf_number_buffer::@4
|
||||
printf_number_buffer::@4: scope:[printf_number_buffer] from printf_number_buffer::@16 printf_number_buffer::@3 printf_number_buffer::@9
|
||||
[263] (byte*) printf_str::str#1 ← (byte*) printf_number_buffer::buffer_digits#10
|
||||
[264] call printf_str
|
||||
to:printf_number_buffer::@13
|
||||
printf_number_buffer::@13: scope:[printf_number_buffer] from printf_number_buffer::@4
|
||||
[265] if((byte) 0==(byte) printf_number_buffer::format_justify_left#10) goto printf_number_buffer::@return
|
||||
to:printf_number_buffer::@18
|
||||
printf_number_buffer::@18: scope:[printf_number_buffer] from printf_number_buffer::@13
|
||||
[266] if((byte) 0!=(byte) printf_number_buffer::format_zero_padding#10) goto printf_number_buffer::@return
|
||||
to:printf_number_buffer::@17
|
||||
printf_number_buffer::@17: scope:[printf_number_buffer] from printf_number_buffer::@18
|
||||
[267] if((signed byte) 0!=(signed byte) printf_number_buffer::padding#10) goto printf_number_buffer::@10
|
||||
to:printf_number_buffer::@return
|
||||
printf_number_buffer::@10: scope:[printf_number_buffer] from printf_number_buffer::@17
|
||||
[268] (byte) printf_padding::length#2 ← (byte)(signed byte) printf_number_buffer::padding#10
|
||||
[269] call printf_padding
|
||||
to:printf_number_buffer::@return
|
||||
printf_number_buffer::@return: scope:[printf_number_buffer] from printf_number_buffer::@10 printf_number_buffer::@13 printf_number_buffer::@17 printf_number_buffer::@18
|
||||
[270] return
|
||||
to:@return
|
||||
|
||||
(void()) printf_padding((byte) printf_padding::pad , (byte) printf_padding::length)
|
||||
printf_padding: scope:[printf_padding] from printf_number_buffer::@10 printf_number_buffer::@7 printf_number_buffer::@9 printf_string::@4 printf_string::@5
|
||||
[271] (byte) printf_padding::pad#7 ← phi( printf_number_buffer::@9/(byte) '0' printf_number_buffer::@10/(byte) ' ' printf_number_buffer::@7/(byte) ' ' printf_string::@4/(byte) ' ' printf_string::@5/(byte) ' ' )
|
||||
[271] (byte) printf_padding::length#6 ← phi( printf_number_buffer::@9/(byte) printf_padding::length#1 printf_number_buffer::@10/(byte) printf_padding::length#2 printf_number_buffer::@7/(byte) printf_padding::length#0 printf_string::@4/(byte) printf_padding::length#3 printf_string::@5/(byte) printf_padding::length#4 )
|
||||
to:printf_padding::@1
|
||||
printf_padding::@1: scope:[printf_padding] from printf_padding printf_padding::@3
|
||||
[272] (byte) printf_padding::i#2 ← phi( printf_padding/(byte) 0 printf_padding::@3/(byte) printf_padding::i#1 )
|
||||
[273] if((byte) printf_padding::i#2<(byte) printf_padding::length#6) goto printf_padding::@2
|
||||
to:printf_padding::@return
|
||||
printf_padding::@return: scope:[printf_padding] from printf_padding::@1
|
||||
[274] return
|
||||
to:@return
|
||||
printf_padding::@2: scope:[printf_padding] from printf_padding::@1
|
||||
[275] (byte) printf_char::ch#0 ← (byte) printf_padding::pad#7
|
||||
[276] call printf_char
|
||||
to:printf_padding::@3
|
||||
printf_padding::@3: scope:[printf_padding] from printf_padding::@2
|
||||
[277] (byte) printf_padding::i#1 ← ++ (byte) printf_padding::i#2
|
||||
to:printf_padding::@1
|
||||
|
||||
(word()) strlen((byte*) strlen::str)
|
||||
strlen: scope:[strlen] from printf_number_buffer::@5 printf_string::@3
|
||||
[278] (byte*) strlen::str#5 ← phi( printf_number_buffer::@5/(byte*) strlen::str#1 printf_string::@3/(byte*) strlen::str#2 )
|
||||
to:strlen::@1
|
||||
strlen::@1: scope:[strlen] from strlen strlen::@2
|
||||
[279] (word) strlen::len#2 ← phi( strlen/(word) 0 strlen::@2/(word) strlen::len#1 )
|
||||
[279] (byte*) strlen::str#3 ← phi( strlen/(byte*) strlen::str#5 strlen::@2/(byte*) strlen::str#0 )
|
||||
[280] if((byte) 0!=*((byte*) strlen::str#3)) goto strlen::@2
|
||||
to:strlen::@return
|
||||
strlen::@return: scope:[strlen] from strlen::@1
|
||||
[281] return
|
||||
to:@return
|
||||
strlen::@2: scope:[strlen] from strlen::@1
|
||||
[282] (word) strlen::len#1 ← ++ (word) strlen::len#2
|
||||
[283] (byte*) strlen::str#0 ← ++ (byte*) strlen::str#3
|
||||
to:strlen::@1
|
||||
|
||||
(void()) utoa((word) utoa::value , (byte*) utoa::buffer , (byte) utoa::radix)
|
||||
utoa: scope:[utoa] from printf_sint::@2 printf_uint::@1
|
||||
[284] (byte*) utoa::buffer#11 ← phi( printf_sint::@2/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS printf_uint::@1/(byte*)&(struct printf_buffer_number) printf_buffer+(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS )
|
||||
[284] (word) utoa::value#10 ← phi( printf_sint::@2/(word) utoa::value#1 printf_uint::@1/(word) utoa::value#2 )
|
||||
[284] (byte) utoa::radix#2 ← phi( printf_sint::@2/(const byte) DECIMAL printf_uint::@1/(byte) utoa::radix#1 )
|
||||
[285] if((byte) utoa::radix#2==(const byte) DECIMAL) goto utoa::@1
|
||||
to:utoa::@2
|
||||
utoa::@2: scope:[utoa] from utoa
|
||||
[286] if((byte) utoa::radix#2==(const byte) HEXADECIMAL) goto utoa::@1
|
||||
to:utoa::@3
|
||||
utoa::@3: scope:[utoa] from utoa::@2
|
||||
[287] if((byte) utoa::radix#2==(const byte) OCTAL) goto utoa::@1
|
||||
to:utoa::@4
|
||||
utoa::@4: scope:[utoa] from utoa::@3
|
||||
[288] if((byte) utoa::radix#2==(const byte) BINARY) goto utoa::@1
|
||||
to:utoa::@5
|
||||
utoa::@5: scope:[utoa] from utoa::@4
|
||||
[289] *((byte*) utoa::buffer#11) ← (byte) 'e'
|
||||
[290] (byte*) utoa::buffer#0 ← ++ (byte*) utoa::buffer#11
|
||||
[291] *((byte*) utoa::buffer#0) ← (byte) 'r'
|
||||
[292] (byte*) utoa::buffer#1 ← ++ (byte*) utoa::buffer#0
|
||||
[293] *((byte*) utoa::buffer#1) ← (byte) 'r'
|
||||
[294] (byte*) utoa::buffer#2 ← ++ (byte*) utoa::buffer#1
|
||||
[295] *((byte*) utoa::buffer#2) ← (byte) 0
|
||||
to:utoa::@return
|
||||
utoa::@return: scope:[utoa] from utoa::@5 utoa::@8
|
||||
[296] return
|
||||
to:@return
|
||||
utoa::@1: scope:[utoa] from utoa utoa::@2 utoa::@3 utoa::@4
|
||||
[297] (word*) utoa::digit_values#8 ← phi( utoa/(const word*) RADIX_DECIMAL_VALUES utoa::@2/(const word*) RADIX_HEXADECIMAL_VALUES utoa::@3/(const word*) RADIX_OCTAL_VALUES utoa::@4/(const word*) RADIX_BINARY_VALUES )
|
||||
[297] (byte) utoa::max_digits#7 ← phi( utoa/(byte) 5 utoa::@2/(byte) 4 utoa::@3/(byte) 6 utoa::@4/(byte) $10 )
|
||||
to:utoa::@6
|
||||
utoa::@6: scope:[utoa] from utoa::@1 utoa::@9
|
||||
[298] (byte*) utoa::buffer#10 ← phi( utoa::@9/(byte*) utoa::buffer#15 utoa::@1/(byte*) utoa::buffer#11 )
|
||||
[298] (byte) utoa::started#2 ← phi( utoa::@9/(byte) utoa::started#4 utoa::@1/(byte) 0 )
|
||||
[298] (word) utoa::value#3 ← phi( utoa::@9/(word) utoa::value#7 utoa::@1/(word) utoa::value#10 )
|
||||
[298] (byte) utoa::digit#2 ← phi( utoa::@9/(byte) utoa::digit#1 utoa::@1/(byte) 0 )
|
||||
[299] (byte~) utoa::$4 ← (byte) utoa::max_digits#7 - (byte) 1
|
||||
[300] if((byte) utoa::digit#2<(byte~) utoa::$4) goto utoa::@7
|
||||
to:utoa::@8
|
||||
utoa::@8: scope:[utoa] from utoa::@6
|
||||
[301] (byte~) utoa::$11 ← (byte)(word) utoa::value#3
|
||||
[302] *((byte*) utoa::buffer#10) ← *((const byte*) DIGITS + (byte~) utoa::$11)
|
||||
[303] (byte*) utoa::buffer#3 ← ++ (byte*) utoa::buffer#10
|
||||
[304] *((byte*) utoa::buffer#3) ← (byte) 0
|
||||
to:utoa::@return
|
||||
utoa::@7: scope:[utoa] from utoa::@6
|
||||
[305] (byte~) utoa::$10 ← (byte) utoa::digit#2 << (byte) 1
|
||||
[306] (word) utoa::digit_value#0 ← *((word*) utoa::digit_values#8 + (byte~) utoa::$10)
|
||||
[307] if((byte) 0!=(byte) utoa::started#2) goto utoa::@10
|
||||
to:utoa::@12
|
||||
utoa::@12: scope:[utoa] from utoa::@7
|
||||
[308] if((word) utoa::value#3>=(word) utoa::digit_value#0) goto utoa::@10
|
||||
to:utoa::@9
|
||||
utoa::@9: scope:[utoa] from utoa::@11 utoa::@12
|
||||
[309] (byte*) utoa::buffer#15 ← phi( utoa::@12/(byte*) utoa::buffer#10 utoa::@11/(byte*) utoa::buffer#4 )
|
||||
[309] (byte) utoa::started#4 ← phi( utoa::@12/(byte) utoa::started#2 utoa::@11/(byte) 1 )
|
||||
[309] (word) utoa::value#7 ← phi( utoa::@12/(word) utoa::value#3 utoa::@11/(word) utoa::value#0 )
|
||||
[310] (byte) utoa::digit#1 ← ++ (byte) utoa::digit#2
|
||||
to:utoa::@6
|
||||
utoa::@10: scope:[utoa] from utoa::@12 utoa::@7
|
||||
[311] (byte*) utoa_append::buffer#0 ← (byte*) utoa::buffer#10
|
||||
[312] (word) utoa_append::value#0 ← (word) utoa::value#3
|
||||
[313] (word) utoa_append::sub#0 ← (word) utoa::digit_value#0
|
||||
[314] call utoa_append
|
||||
[315] (word) utoa_append::return#0 ← (word) utoa_append::value#2
|
||||
to:utoa::@11
|
||||
utoa::@11: scope:[utoa] from utoa::@10
|
||||
[316] (word) utoa::value#0 ← (word) utoa_append::return#0
|
||||
[317] (byte*) utoa::buffer#4 ← ++ (byte*) utoa::buffer#10
|
||||
to:utoa::@9
|
||||
|
||||
(word()) utoa_append((byte*) utoa_append::buffer , (word) utoa_append::value , (word) utoa_append::sub)
|
||||
utoa_append: scope:[utoa_append] from utoa::@10
|
||||
[318] phi()
|
||||
to:utoa_append::@1
|
||||
utoa_append::@1: scope:[utoa_append] from utoa_append utoa_append::@2
|
||||
[319] (byte) utoa_append::digit#2 ← phi( utoa_append/(byte) 0 utoa_append::@2/(byte) utoa_append::digit#1 )
|
||||
[319] (word) utoa_append::value#2 ← phi( utoa_append/(word) utoa_append::value#0 utoa_append::@2/(word) utoa_append::value#1 )
|
||||
[320] if((word) utoa_append::value#2>=(word) utoa_append::sub#0) goto utoa_append::@2
|
||||
to:utoa_append::@3
|
||||
utoa_append::@3: scope:[utoa_append] from utoa_append::@1
|
||||
[321] *((byte*) utoa_append::buffer#0) ← *((const byte*) DIGITS + (byte) utoa_append::digit#2)
|
||||
to:utoa_append::@return
|
||||
utoa_append::@return: scope:[utoa_append] from utoa_append::@3
|
||||
[322] return
|
||||
to:@return
|
||||
utoa_append::@2: scope:[utoa_append] from utoa_append::@1
|
||||
[323] (byte) utoa_append::digit#1 ← ++ (byte) utoa_append::digit#2
|
||||
[324] (word) utoa_append::value#1 ← (word) utoa_append::value#2 - (word) utoa_append::sub#0
|
||||
to:utoa_append::@1
|
||||
|
||||
(void()) printf_sint((signed word) printf_sint::value , (byte) printf_sint::format_min_length , (byte) printf_sint::format_justify_left , (byte) printf_sint::format_sign_always , (byte) printf_sint::format_zero_padding , (byte) printf_sint::format_radix)
|
||||
printf_sint: scope:[printf_sint] from main::@26 main::@28 main::@30 main::@32 main::@37 main::@39 main::@41 main::@43 main::@48 main::@50 main::@52 main::@54 main::@59 main::@61 main::@63 main::@65
|
||||
[325] (byte) printf_sint::format_zero_padding#16 ← phi( main::@26/(byte) 0 main::@28/(byte) 0 main::@30/(byte) 0 main::@32/(byte) 0 main::@37/(byte) 0 main::@39/(byte) 0 main::@41/(byte) 0 main::@43/(byte) 0 main::@48/(byte) 0 main::@50/(byte) 0 main::@52/(byte) 0 main::@54/(byte) 0 main::@59/(byte) 1 main::@61/(byte) 1 main::@63/(byte) 1 main::@65/(byte) 0 )
|
||||
[325] (byte) printf_sint::format_justify_left#16 ← phi( main::@26/(byte) 0 main::@28/(byte) 0 main::@30/(byte) 0 main::@32/(byte) 0 main::@37/(byte) 1 main::@39/(byte) 1 main::@41/(byte) 1 main::@43/(byte) 1 main::@48/(byte) 0 main::@50/(byte) 0 main::@52/(byte) 0 main::@54/(byte) 0 main::@59/(byte) 0 main::@61/(byte) 0 main::@63/(byte) 0 main::@65/(byte) 0 )
|
||||
[325] (byte) printf_sint::format_sign_always#16 ← phi( main::@26/(byte) 0 main::@28/(byte) 0 main::@30/(byte) 0 main::@32/(byte) 0 main::@37/(byte) 0 main::@39/(byte) 0 main::@41/(byte) 0 main::@43/(byte) 0 main::@48/(byte) 1 main::@50/(byte) 1 main::@52/(byte) 1 main::@54/(byte) 1 main::@59/(byte) 0 main::@61/(byte) 0 main::@63/(byte) 0 main::@65/(byte) 0 )
|
||||
[325] (signed word) printf_sint::value#17 ← phi( main::@26/(signed byte) 1 main::@28/(signed byte) $b main::@30/(signed byte) $6f main::@32/(signed word) $457 main::@37/(signed byte) -2 main::@39/(signed byte) -$16 main::@41/(signed word) -$de main::@43/(signed word) -$8ae main::@48/(signed byte) 3 main::@50/(signed byte) -$2c main::@52/(signed word) $22b main::@54/(signed word) -$1a0a main::@59/(signed byte) 1 main::@61/(signed byte) $b main::@63/(signed byte) $6f main::@65/(signed word) $457 )
|
||||
[326] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) 0
|
||||
[327] if((signed word) printf_sint::value#17<(signed byte) 0) goto printf_sint::@1
|
||||
to:printf_sint::@3
|
||||
printf_sint::@3: scope:[printf_sint] from printf_sint
|
||||
[328] if((byte) 0==(byte) printf_sint::format_sign_always#16) goto printf_sint::@2
|
||||
to:printf_sint::@4
|
||||
printf_sint::@4: scope:[printf_sint] from printf_sint::@3
|
||||
[329] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) '+'
|
||||
to:printf_sint::@2
|
||||
printf_sint::@2: scope:[printf_sint] from printf_sint::@1 printf_sint::@3 printf_sint::@4
|
||||
[330] (signed word) printf_sint::value#19 ← phi( printf_sint::@1/(signed word) printf_sint::value#0 printf_sint::@3/(signed word) printf_sint::value#17 printf_sint::@4/(signed word) printf_sint::value#17 )
|
||||
[331] (word) utoa::value#1 ← (word)(signed word) printf_sint::value#19
|
||||
[332] call utoa
|
||||
to:printf_sint::@5
|
||||
printf_sint::@5: scope:[printf_sint] from printf_sint::@2
|
||||
[333] (byte) printf_number_buffer::buffer_sign#0 ← *((byte*)&(struct printf_buffer_number) printf_buffer)
|
||||
[334] (byte) printf_number_buffer::format_justify_left#0 ← (byte) printf_sint::format_justify_left#16
|
||||
[335] (byte) printf_number_buffer::format_zero_padding#0 ← (byte) printf_sint::format_zero_padding#16
|
||||
[336] call printf_number_buffer
|
||||
to:printf_sint::@return
|
||||
printf_sint::@return: scope:[printf_sint] from printf_sint::@5
|
||||
[337] return
|
||||
to:@return
|
||||
printf_sint::@1: scope:[printf_sint] from printf_sint
|
||||
[338] (signed word) printf_sint::value#0 ← - (signed word) printf_sint::value#17
|
||||
[339] *((byte*)&(struct printf_buffer_number) printf_buffer) ← (byte) '-'
|
||||
to:printf_sint::@2
|
||||
|
||||
(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::@10 main::@15 main::@17 main::@19 main::@21 main::@4 main::@6 main::@8
|
||||
[340] (byte*) printf_string::str#10 ← phi( main::@10/(const byte*) main::str8 main::@15/(const byte*) main::str2 main::@17/(const byte*) main::str4 main::@19/(const byte*) main::str6 main::@21/(const byte*) main::str8 main::@4/(const byte*) main::str2 main::@6/(const byte*) main::str4 main::@8/(const byte*) main::str6 )
|
||||
[340] (byte) printf_string::format_justify_left#10 ← phi( main::@10/(byte) 0 main::@15/(byte) 1 main::@17/(byte) 1 main::@19/(byte) 1 main::@21/(byte) 1 main::@4/(byte) 0 main::@6/(byte) 0 main::@8/(byte) 0 )
|
||||
to:printf_string::@3
|
||||
printf_string::@3: scope:[printf_string] from printf_string
|
||||
[341] (byte*) strlen::str#2 ← (byte*) printf_string::str#10
|
||||
[342] call strlen
|
||||
[343] (word) strlen::return#3 ← (word) strlen::len#2
|
||||
to:printf_string::@6
|
||||
printf_string::@6: scope:[printf_string] from printf_string::@3
|
||||
[344] (word~) printf_string::$9 ← (word) strlen::return#3
|
||||
[345] (signed byte) printf_string::len#0 ← (signed byte)(word~) printf_string::$9
|
||||
[346] (signed byte) printf_string::padding#1 ← (signed byte) 3 - (signed byte) printf_string::len#0
|
||||
[347] 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
|
||||
[348] phi()
|
||||
to:printf_string::@1
|
||||
printf_string::@1: scope:[printf_string] from printf_string::@10 printf_string::@6
|
||||
[349] (signed byte) printf_string::padding#3 ← phi( printf_string::@6/(signed byte) 0 printf_string::@10/(signed byte) printf_string::padding#1 )
|
||||
[350] 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
|
||||
[351] 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
|
||||
[352] (byte) printf_padding::length#3 ← (byte)(signed byte) printf_string::padding#3
|
||||
[353] call printf_padding
|
||||
to:printf_string::@2
|
||||
printf_string::@2: scope:[printf_string] from printf_string::@1 printf_string::@4 printf_string::@8
|
||||
[354] (byte*) printf_str::str#2 ← (byte*) printf_string::str#10
|
||||
[355] call printf_str
|
||||
to:printf_string::@7
|
||||
printf_string::@7: scope:[printf_string] from printf_string::@2
|
||||
[356] 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
|
||||
[357] 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
|
||||
[358] (byte) printf_padding::length#4 ← (byte)(signed byte) printf_string::padding#3
|
||||
[359] call printf_padding
|
||||
to:printf_string::@return
|
||||
printf_string::@return: scope:[printf_string] from printf_string::@5 printf_string::@7 printf_string::@9
|
||||
[360] return
|
||||
to:@return
|
||||
|
||||
(void()) printf_cls()
|
||||
printf_cls: scope:[printf_cls] from main
|
||||
[361] phi()
|
||||
[362] call memset
|
||||
to:printf_cls::@1
|
||||
printf_cls::@1: scope:[printf_cls] from printf_cls
|
||||
[363] (byte*) printf_line_cursor ← (const byte*) printf_screen
|
||||
[364] (byte*) printf_char_cursor ← (byte*) printf_line_cursor
|
||||
to:printf_cls::@return
|
||||
printf_cls::@return: scope:[printf_cls] from printf_cls::@1
|
||||
[365] return
|
||||
to:@return
|
14942
src/test/ref/printf-13.log
Normal file
14942
src/test/ref/printf-13.log
Normal file
File diff suppressed because one or more lines are too long
441
src/test/ref/printf-13.sym
Normal file
441
src/test/ref/printf-13.sym
Normal file
@ -0,0 +1,441 @@
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(const byte) BINARY = (number) 2
|
||||
(const byte) DECIMAL = (number) $a
|
||||
(const byte*) DIGITS[] = (byte*) "0123456789abcdef"z
|
||||
(const byte) HEXADECIMAL = (number) $10
|
||||
(const byte) OCTAL = (number) 8
|
||||
(const byte) OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS = (byte) 1
|
||||
(const byte) RADIX::BINARY = (number) 2
|
||||
(const byte) RADIX::DECIMAL = (number) $a
|
||||
(const byte) RADIX::HEXADECIMAL = (number) $10
|
||||
(const byte) RADIX::OCTAL = (number) 8
|
||||
(const word*) RADIX_BINARY_VALUES[] = { (word) $8000, (word) $4000, (word) $2000, (word) $1000, (word) $800, (word) $400, (word) $200, (word) $100, (word) $80, (word) $40, (word) $20, (word) $10, (word) 8, (word) 4, (word) 2 }
|
||||
(const word*) RADIX_DECIMAL_VALUES[] = { (word) $2710, (word) $3e8, (word) $64, (word) $a }
|
||||
(const word*) RADIX_HEXADECIMAL_VALUES[] = { (word) $1000, (word) $100, (word) $10 }
|
||||
(const word*) RADIX_OCTAL_VALUES[] = { (word) $8000, (word) $1000, (word) $200, (word) $40, (word) 8 }
|
||||
(const byte) SIZEOF_STRUCT_PRINTF_BUFFER_NUMBER = (byte) $c
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@10
|
||||
(label) main::@11
|
||||
(label) main::@12
|
||||
(label) main::@13
|
||||
(label) main::@14
|
||||
(label) main::@15
|
||||
(label) main::@16
|
||||
(label) main::@17
|
||||
(label) main::@18
|
||||
(label) main::@19
|
||||
(label) main::@2
|
||||
(label) main::@20
|
||||
(label) main::@21
|
||||
(label) main::@22
|
||||
(label) main::@23
|
||||
(label) main::@24
|
||||
(label) main::@25
|
||||
(label) main::@26
|
||||
(label) main::@27
|
||||
(label) main::@28
|
||||
(label) main::@29
|
||||
(label) main::@3
|
||||
(label) main::@30
|
||||
(label) main::@31
|
||||
(label) main::@32
|
||||
(label) main::@33
|
||||
(label) main::@34
|
||||
(label) main::@35
|
||||
(label) main::@36
|
||||
(label) main::@37
|
||||
(label) main::@38
|
||||
(label) main::@39
|
||||
(label) main::@4
|
||||
(label) main::@40
|
||||
(label) main::@41
|
||||
(label) main::@42
|
||||
(label) main::@43
|
||||
(label) main::@44
|
||||
(label) main::@45
|
||||
(label) main::@46
|
||||
(label) main::@47
|
||||
(label) main::@48
|
||||
(label) main::@49
|
||||
(label) main::@5
|
||||
(label) main::@50
|
||||
(label) main::@51
|
||||
(label) main::@52
|
||||
(label) main::@53
|
||||
(label) main::@54
|
||||
(label) main::@55
|
||||
(label) main::@56
|
||||
(label) main::@57
|
||||
(label) main::@58
|
||||
(label) main::@59
|
||||
(label) main::@6
|
||||
(label) main::@60
|
||||
(label) main::@61
|
||||
(label) main::@62
|
||||
(label) main::@63
|
||||
(label) main::@64
|
||||
(label) main::@65
|
||||
(label) main::@66
|
||||
(label) main::@67
|
||||
(label) main::@68
|
||||
(label) main::@69
|
||||
(label) main::@7
|
||||
(label) main::@70
|
||||
(label) main::@71
|
||||
(label) main::@72
|
||||
(label) main::@73
|
||||
(label) main::@74
|
||||
(label) main::@75
|
||||
(label) main::@76
|
||||
(label) main::@77
|
||||
(label) main::@78
|
||||
(label) main::@79
|
||||
(label) main::@8
|
||||
(label) main::@80
|
||||
(label) main::@81
|
||||
(label) main::@82
|
||||
(label) main::@83
|
||||
(label) main::@84
|
||||
(label) main::@85
|
||||
(label) main::@86
|
||||
(label) main::@87
|
||||
(label) main::@88
|
||||
(label) main::@9
|
||||
(label) main::@return
|
||||
(const byte*) main::str[(byte) 1] = (byte*) ""
|
||||
(const byte*) main::str1[(byte) 6] = (byte*) "3s '"
|
||||
(const byte*) main::str11[(byte) 6] = (byte*) "-3s '"
|
||||
(const byte*) main::str2[(byte) 2] = (byte*) "x"
|
||||
(const byte*) main::str21[(byte) 6] = (byte*) "3d '"
|
||||
(const byte*) main::str27[(byte) 6] = (byte*) "-3d '"
|
||||
(const byte*) main::str3[(byte) 4] = (byte*) "' '"
|
||||
(const byte*) main::str33[(byte) 7] = (byte*) "+3d '"
|
||||
(const byte*) main::str39[(byte) 6] = (byte*) "03d '"
|
||||
(const byte*) main::str4[(byte) 3] = (byte*) "xx"
|
||||
(const byte*) main::str45[(byte) 6] = (byte*) "o '"
|
||||
(const byte*) main::str51[(byte) 6] = (byte*) "x '"
|
||||
(const byte*) main::str6[(byte) 4] = (byte*) "xxx"
|
||||
(const byte*) main::str8[(byte) 5] = (byte*) "xxxx"
|
||||
(const byte*) main::str9[(byte) 3] = (byte*) "'
|
||||
"
|
||||
(void*()) memcpy((void*) memcpy::destination , (void*) memcpy::source , (word) memcpy::num)
|
||||
(label) memcpy::@1
|
||||
(label) memcpy::@2
|
||||
(label) memcpy::@return
|
||||
(void*) memcpy::destination
|
||||
(const void*) memcpy::destination#0 destination = (void*)(const byte*) printf_screen
|
||||
(byte*) memcpy::dst
|
||||
(byte*) memcpy::dst#1 dst zp[2]:11 1.000000001E9
|
||||
(byte*) memcpy::dst#2 dst zp[2]:11 1.000000001E9
|
||||
(word) memcpy::num
|
||||
(const word) memcpy::num#0 num = (word)(number) $28*(number) $19-(number) $28
|
||||
(void*) memcpy::return
|
||||
(void*) memcpy::source
|
||||
(const void*) memcpy::source#0 source = (void*)(const byte*) printf_screen+(byte) $28
|
||||
(byte*) memcpy::src
|
||||
(byte*) memcpy::src#1 src zp[2]:8 2.000000002E9
|
||||
(byte*) memcpy::src#2 src zp[2]:8 1.000000001E9
|
||||
(byte*) memcpy::src_end
|
||||
(const byte*) memcpy::src_end#0 src_end = (byte*)(const void*) memcpy::source#0+(const word) memcpy::num#0
|
||||
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
||||
(label) memset::@1
|
||||
(label) memset::@2
|
||||
(label) memset::@3
|
||||
(label) memset::@return
|
||||
(byte) memset::c
|
||||
(byte) memset::c#4 reg byte x 1.25000000125E8
|
||||
(byte*) memset::dst
|
||||
(byte*) memset::dst#1 dst zp[2]:11 2.000000002E9
|
||||
(byte*) memset::dst#2 dst zp[2]:11 1.3366666683333335E9
|
||||
(byte*) memset::dst#4 dst zp[2]:11 2.0000002E7
|
||||
(byte*) memset::end
|
||||
(byte*) memset::end#0 end zp[2]:8 1.683333336666667E8
|
||||
(word) memset::num
|
||||
(word) memset::num#2 num zp[2]:8 1.0000001E7
|
||||
(void*) memset::return
|
||||
(void*) memset::str
|
||||
(void*) memset::str#3 str zp[2]:11
|
||||
(struct printf_buffer_number) printf_buffer loadstore mem[12] = {}
|
||||
(const byte*) printf_buffer_number::digits[(number) $b] = { fill( $b, 0) }
|
||||
(byte) printf_buffer_number::sign
|
||||
(void()) printf_char((byte) printf_char::ch)
|
||||
(byte*~) printf_char::$8 zp[2]:17 2000002.0
|
||||
(label) printf_char::@1
|
||||
(label) printf_char::@2
|
||||
(label) printf_char::@3
|
||||
(label) printf_char::@return
|
||||
(byte) printf_char::ch
|
||||
(byte) printf_char::ch#0 reg byte a 200002.0
|
||||
(byte) printf_char::ch#1 reg byte a 200002.0
|
||||
(byte) printf_char::ch#11 reg byte a 1201004.0
|
||||
(byte) printf_char::ch#2 reg byte a 2002.0
|
||||
(byte*) printf_char_cursor loadstore zp[2]:17 372414.17931034486
|
||||
(void()) printf_cls()
|
||||
(label) printf_cls::@1
|
||||
(label) printf_cls::@return
|
||||
(byte) printf_format_number::justify_left
|
||||
(byte) printf_format_number::min_length
|
||||
(byte) printf_format_number::radix
|
||||
(byte) printf_format_number::sign_always
|
||||
(byte) printf_format_number::zero_padding
|
||||
(byte) printf_format_string::justify_left
|
||||
(byte) printf_format_string::min_length
|
||||
(byte*) printf_line_cursor loadstore zp[2]:15 1055944.7867132865
|
||||
(void()) printf_ln()
|
||||
(label) printf_ln::@1
|
||||
(label) printf_ln::@2
|
||||
(label) printf_ln::@return
|
||||
(void()) printf_number_buffer((byte) printf_number_buffer::buffer_sign , (byte*) printf_number_buffer::buffer_digits , (byte) printf_number_buffer::format_min_length , (byte) printf_number_buffer::format_justify_left , (byte) printf_number_buffer::format_sign_always , (byte) printf_number_buffer::format_zero_padding , (byte) printf_number_buffer::format_radix)
|
||||
(word~) printf_number_buffer::$18 zp[2]:11 1001.0
|
||||
(label) printf_number_buffer::@1
|
||||
(label) printf_number_buffer::@10
|
||||
(label) printf_number_buffer::@11
|
||||
(label) printf_number_buffer::@12
|
||||
(label) printf_number_buffer::@13
|
||||
(label) printf_number_buffer::@14
|
||||
(label) printf_number_buffer::@15
|
||||
(label) printf_number_buffer::@16
|
||||
(label) printf_number_buffer::@17
|
||||
(label) printf_number_buffer::@18
|
||||
(label) printf_number_buffer::@19
|
||||
(label) printf_number_buffer::@2
|
||||
(label) printf_number_buffer::@3
|
||||
(label) printf_number_buffer::@4
|
||||
(label) printf_number_buffer::@5
|
||||
(label) printf_number_buffer::@6
|
||||
(label) printf_number_buffer::@7
|
||||
(label) printf_number_buffer::@8
|
||||
(label) printf_number_buffer::@9
|
||||
(label) printf_number_buffer::@return
|
||||
(struct printf_buffer_number) printf_number_buffer::buffer
|
||||
(byte*) printf_number_buffer::buffer_digits
|
||||
(byte*) printf_number_buffer::buffer_digits#10 buffer_digits zp[2]:2 77.0
|
||||
(byte) printf_number_buffer::buffer_sign
|
||||
(byte) printf_number_buffer::buffer_sign#0 buffer_sign zp[1]:7 67.33333333333333
|
||||
(byte) printf_number_buffer::buffer_sign#1 buffer_sign zp[1]:7 202.0
|
||||
(byte) printf_number_buffer::buffer_sign#10 buffer_sign zp[1]:7 160.25
|
||||
(struct printf_format_number) printf_number_buffer::format
|
||||
(byte) printf_number_buffer::format_justify_left
|
||||
(byte) printf_number_buffer::format_justify_left#0 format_justify_left zp[1]:13 101.0
|
||||
(byte) printf_number_buffer::format_justify_left#10 format_justify_left zp[1]:13 75.10714285714286
|
||||
(byte) printf_number_buffer::format_min_length
|
||||
(byte) printf_number_buffer::format_min_length#2 reg byte x 100.1
|
||||
(byte) printf_number_buffer::format_radix
|
||||
(byte) printf_number_buffer::format_sign_always
|
||||
(byte) printf_number_buffer::format_zero_padding
|
||||
(byte) printf_number_buffer::format_zero_padding#0 format_zero_padding zp[1]:14 202.0
|
||||
(byte) printf_number_buffer::format_zero_padding#10 format_zero_padding zp[1]:14 107.0344827586207
|
||||
(signed byte) printf_number_buffer::len
|
||||
(signed byte) printf_number_buffer::len#0 reg byte y 1501.5
|
||||
(signed byte) printf_number_buffer::len#1 reg byte y 2002.0
|
||||
(signed byte) printf_number_buffer::len#2 reg byte y 3003.0
|
||||
(signed byte) printf_number_buffer::padding
|
||||
(signed byte) printf_number_buffer::padding#1 padding zp[1]:10 1001.0
|
||||
(signed byte) printf_number_buffer::padding#10 padding zp[1]:10 222.44444444444446
|
||||
(void()) printf_padding((byte) printf_padding::pad , (byte) printf_padding::length)
|
||||
(label) printf_padding::@1
|
||||
(label) printf_padding::@2
|
||||
(label) printf_padding::@3
|
||||
(label) printf_padding::@return
|
||||
(byte) printf_padding::i
|
||||
(byte) printf_padding::i#1 i zp[1]:6 200002.0
|
||||
(byte) printf_padding::i#2 i zp[1]:6 75000.75
|
||||
(byte) printf_padding::length
|
||||
(byte) printf_padding::length#0 length zp[1]:4 2002.0
|
||||
(byte) printf_padding::length#1 length zp[1]:4 2002.0
|
||||
(byte) printf_padding::length#2 length zp[1]:4 2002.0
|
||||
(byte) printf_padding::length#3 length zp[1]:4 202.0
|
||||
(byte) printf_padding::length#4 length zp[1]:4 202.0
|
||||
(byte) printf_padding::length#6 length zp[1]:4 17201.0
|
||||
(byte) printf_padding::pad
|
||||
(byte) printf_padding::pad#7 pad zp[1]:5 16666.833333333332
|
||||
(const byte*) printf_screen = (byte*) 1024
|
||||
(void()) printf_sint((signed word) printf_sint::value , (byte) printf_sint::format_min_length , (byte) printf_sint::format_justify_left , (byte) printf_sint::format_sign_always , (byte) printf_sint::format_zero_padding , (byte) printf_sint::format_radix)
|
||||
(label) printf_sint::@1
|
||||
(label) printf_sint::@2
|
||||
(label) printf_sint::@3
|
||||
(label) printf_sint::@4
|
||||
(label) printf_sint::@5
|
||||
(label) printf_sint::@return
|
||||
(struct printf_format_number) printf_sint::format
|
||||
(byte) printf_sint::format_justify_left
|
||||
(byte) printf_sint::format_justify_left#16 format_justify_left zp[1]:13 9.181818181818182
|
||||
(byte) printf_sint::format_min_length
|
||||
(byte) printf_sint::format_radix
|
||||
(byte) printf_sint::format_sign_always
|
||||
(byte) printf_sint::format_sign_always#16 reg byte x 33.666666666666664
|
||||
(byte) printf_sint::format_zero_padding
|
||||
(byte) printf_sint::format_zero_padding#16 format_zero_padding zp[1]:14 8.416666666666666
|
||||
(word) printf_sint::uvalue
|
||||
(signed word) printf_sint::value
|
||||
(signed word) printf_sint::value#0 value zp[2]:2 101.0
|
||||
(signed word) printf_sint::value#17 value zp[2]:2 80.8
|
||||
(signed word) printf_sint::value#19 value zp[2]:2 303.0
|
||||
(void()) printf_str((byte*) printf_str::str)
|
||||
(label) printf_str::@1
|
||||
(label) printf_str::@2
|
||||
(label) printf_str::@3
|
||||
(label) printf_str::@4
|
||||
(label) printf_str::@5
|
||||
(label) printf_str::@return
|
||||
(byte) printf_str::ch
|
||||
(byte) printf_str::ch#0 reg byte a 100001.0
|
||||
(byte*) printf_str::str
|
||||
(byte*) printf_str::str#0 str zp[2]:2 42857.57142857143
|
||||
(byte*) printf_str::str#1 str zp[2]:2 2002.0
|
||||
(byte*) printf_str::str#2 str zp[2]:2 202.0
|
||||
(byte*) printf_str::str#51 str zp[2]:2 205002.5
|
||||
(byte*) printf_str::str#53 str zp[2]:2 11103.0
|
||||
(void()) printf_string((byte*) printf_string::str , (byte) printf_string::format_min_length , (byte) printf_string::format_justify_left)
|
||||
(word~) printf_string::$9 zp[2]:11 101.0
|
||||
(label) printf_string::@1
|
||||
(label) printf_string::@10
|
||||
(label) printf_string::@2
|
||||
(label) printf_string::@3
|
||||
(label) printf_string::@4
|
||||
(label) printf_string::@5
|
||||
(label) printf_string::@6
|
||||
(label) printf_string::@7
|
||||
(label) printf_string::@8
|
||||
(label) printf_string::@9
|
||||
(label) printf_string::@return
|
||||
(struct printf_format_string) printf_string::format
|
||||
(byte) printf_string::format_justify_left
|
||||
(byte) printf_string::format_justify_left#10 format_justify_left zp[1]:13 12.625
|
||||
(byte) printf_string::format_min_length
|
||||
(signed byte) printf_string::len
|
||||
(signed byte) printf_string::len#0 reg byte a 202.0
|
||||
(signed byte) printf_string::padding
|
||||
(signed byte) printf_string::padding#1 padding zp[1]:14 101.0
|
||||
(signed byte) printf_string::padding#3 padding zp[1]:14 33.666666666666664
|
||||
(byte*) printf_string::str
|
||||
(byte*) printf_string::str#10 str zp[2]:2 14.428571428571429
|
||||
(void()) printf_uint((word) printf_uint::uvalue , (byte) printf_uint::format_min_length , (byte) printf_uint::format_justify_left , (byte) printf_uint::format_sign_always , (byte) printf_uint::format_zero_padding , (byte) printf_uint::format_radix)
|
||||
(label) printf_uint::@1
|
||||
(label) printf_uint::@2
|
||||
(label) printf_uint::@return
|
||||
(struct printf_format_number) printf_uint::format
|
||||
(byte) printf_uint::format_justify_left
|
||||
(byte) printf_uint::format_min_length
|
||||
(byte) printf_uint::format_radix
|
||||
(byte) printf_uint::format_radix#10 reg byte x 33.666666666666664
|
||||
(byte) printf_uint::format_sign_always
|
||||
(byte) printf_uint::format_zero_padding
|
||||
(word) printf_uint::uvalue
|
||||
(word) printf_uint::uvalue#10 uvalue zp[2]:2 50.5
|
||||
(word()) strlen((byte*) strlen::str)
|
||||
(label) strlen::@1
|
||||
(label) strlen::@2
|
||||
(label) strlen::@return
|
||||
(word) strlen::len
|
||||
(word) strlen::len#1 len zp[2]:11 100001.0
|
||||
(word) strlen::len#2 len zp[2]:11 40220.8
|
||||
(word) strlen::return
|
||||
(word) strlen::return#2 return zp[2]:11 2002.0
|
||||
(word) strlen::return#3 return zp[2]:11 202.0
|
||||
(byte*) strlen::str
|
||||
(byte*) strlen::str#0 str zp[2]:8 200002.0
|
||||
(byte*) strlen::str#1 str zp[2]:8 2002.0
|
||||
(byte*) strlen::str#2 str zp[2]:8 202.0
|
||||
(byte*) strlen::str#3 str zp[2]:8 103334.66666666666
|
||||
(byte*) strlen::str#5 str zp[2]:8 11103.0
|
||||
(void()) utoa((word) utoa::value , (byte*) utoa::buffer , (byte) utoa::radix)
|
||||
(byte~) utoa::$10 reg byte a 20002.0
|
||||
(byte~) utoa::$11 reg byte a 2002.0
|
||||
(byte~) utoa::$4 reg byte a 20002.0
|
||||
(label) utoa::@1
|
||||
(label) utoa::@10
|
||||
(label) utoa::@11
|
||||
(label) utoa::@12
|
||||
(label) utoa::@2
|
||||
(label) utoa::@3
|
||||
(label) utoa::@4
|
||||
(label) utoa::@5
|
||||
(label) utoa::@6
|
||||
(label) utoa::@7
|
||||
(label) utoa::@8
|
||||
(label) utoa::@9
|
||||
(label) utoa::@return
|
||||
(byte*) utoa::buffer
|
||||
(byte*) utoa::buffer#0 buffer zp[2]:11 1501.5
|
||||
(byte*) utoa::buffer#1 buffer zp[2]:11 1501.5
|
||||
(byte*) utoa::buffer#10 buffer zp[2]:11 2867.133333333333
|
||||
(byte*) utoa::buffer#11 buffer zp[2]:11 429.0
|
||||
(byte*) utoa::buffer#15 buffer zp[2]:11 15001.5
|
||||
(byte*) utoa::buffer#2 buffer zp[2]:11 2002.0
|
||||
(byte*) utoa::buffer#3 buffer zp[2]:11 2002.0
|
||||
(byte*) utoa::buffer#4 buffer zp[2]:11 20002.0
|
||||
(byte) utoa::digit
|
||||
(byte) utoa::digit#1 digit zp[1]:10 20002.0
|
||||
(byte) utoa::digit#2 digit zp[1]:10 2666.9333333333334
|
||||
(word) utoa::digit_value
|
||||
(word) utoa::digit_value#0 digit_value zp[2]:19 6000.6
|
||||
(word*) utoa::digit_values
|
||||
(word*) utoa::digit_values#8 digit_values zp[2]:8 588.2941176470588
|
||||
(byte) utoa::max_digits
|
||||
(byte) utoa::max_digits#7 max_digits zp[1]:7 588.2941176470588
|
||||
(byte) utoa::radix
|
||||
(byte) utoa::radix#1 reg byte x 202.0
|
||||
(byte) utoa::radix#2 reg byte x 1026.25
|
||||
(byte) utoa::started
|
||||
(byte) utoa::started#2 reg byte x 4286.142857142857
|
||||
(byte) utoa::started#4 reg byte x 10001.0
|
||||
(word) utoa::value
|
||||
(word) utoa::value#0 value zp[2]:2 10001.0
|
||||
(word) utoa::value#1 value zp[2]:2 202.0
|
||||
(word) utoa::value#10 value zp[2]:2 200.5
|
||||
(word) utoa::value#2 value zp[2]:2 101.0
|
||||
(word) utoa::value#3 value zp[2]:2 5125.625
|
||||
(word) utoa::value#7 value zp[2]:2 15001.5
|
||||
(word()) utoa_append((byte*) utoa_append::buffer , (word) utoa_append::value , (word) utoa_append::sub)
|
||||
(label) utoa_append::@1
|
||||
(label) utoa_append::@2
|
||||
(label) utoa_append::@3
|
||||
(label) utoa_append::@return
|
||||
(byte*) utoa_append::buffer
|
||||
(byte*) utoa_append::buffer#0 buffer zp[2]:11 13750.25
|
||||
(byte) utoa_append::digit
|
||||
(byte) utoa_append::digit#1 reg byte x 1.0000001E7
|
||||
(byte) utoa_append::digit#2 reg byte x 1.00500015E7
|
||||
(word) utoa_append::return
|
||||
(word) utoa_append::return#0 return zp[2]:2 20002.0
|
||||
(word) utoa_append::sub
|
||||
(word) utoa_append::sub#0 sub zp[2]:19 3335000.5
|
||||
(word) utoa_append::value
|
||||
(word) utoa_append::value#0 value zp[2]:2 36667.33333333333
|
||||
(word) utoa_append::value#1 value zp[2]:2 2.0000002E7
|
||||
(word) utoa_append::value#2 value zp[2]:2 5018334.166666666
|
||||
|
||||
reg byte a [ printf_char::ch#11 printf_char::ch#2 printf_char::ch#0 printf_char::ch#1 ]
|
||||
reg byte x [ memset::c#4 ]
|
||||
zp[2]:2 [ printf_uint::uvalue#10 utoa::value#3 utoa::value#7 utoa::value#10 utoa::value#1 utoa::value#2 utoa::value#0 utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 utoa_append::return#0 printf_sint::value#19 printf_sint::value#0 printf_sint::value#17 printf_str::str#51 printf_str::str#53 printf_str::str#1 printf_str::str#2 printf_str::str#0 printf_number_buffer::buffer_digits#10 printf_string::str#10 ]
|
||||
reg byte x [ printf_uint::format_radix#10 ]
|
||||
reg byte x [ printf_number_buffer::format_min_length#2 ]
|
||||
reg byte y [ printf_number_buffer::len#2 printf_number_buffer::len#0 printf_number_buffer::len#1 ]
|
||||
zp[1]:4 [ printf_padding::length#6 printf_padding::length#1 printf_padding::length#2 printf_padding::length#0 printf_padding::length#3 printf_padding::length#4 ]
|
||||
zp[1]:5 [ printf_padding::pad#7 ]
|
||||
zp[1]:6 [ printf_padding::i#2 printf_padding::i#1 ]
|
||||
reg byte x [ utoa::radix#2 utoa::radix#1 ]
|
||||
zp[1]:7 [ utoa::max_digits#7 printf_number_buffer::buffer_sign#10 printf_number_buffer::buffer_sign#0 printf_number_buffer::buffer_sign#1 ]
|
||||
zp[2]:8 [ utoa::digit_values#8 strlen::str#3 strlen::str#5 strlen::str#1 strlen::str#2 strlen::str#0 memcpy::src#2 memcpy::src#1 memset::num#2 memset::end#0 ]
|
||||
zp[1]:10 [ utoa::digit#2 utoa::digit#1 printf_number_buffer::padding#10 printf_number_buffer::padding#1 ]
|
||||
reg byte x [ utoa::started#2 utoa::started#4 ]
|
||||
zp[2]:11 [ utoa::buffer#10 utoa::buffer#15 utoa::buffer#11 utoa::buffer#4 utoa::buffer#0 utoa::buffer#3 utoa_append::buffer#0 utoa::buffer#1 utoa::buffer#2 strlen::len#2 strlen::len#1 strlen::return#2 strlen::return#3 printf_number_buffer::$18 printf_string::$9 memcpy::dst#2 memcpy::dst#1 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
reg byte x [ utoa_append::digit#2 utoa_append::digit#1 ]
|
||||
reg byte x [ printf_sint::format_sign_always#16 ]
|
||||
zp[1]:13 [ printf_string::format_justify_left#10 printf_number_buffer::format_justify_left#10 printf_number_buffer::format_justify_left#0 printf_sint::format_justify_left#16 ]
|
||||
zp[1]:14 [ printf_string::padding#3 printf_string::padding#1 printf_number_buffer::format_zero_padding#10 printf_number_buffer::format_zero_padding#0 printf_sint::format_zero_padding#16 ]
|
||||
zp[2]:15 [ printf_line_cursor ]
|
||||
zp[2]:17 [ printf_char_cursor printf_char::$8 ]
|
||||
reg byte a [ printf_str::ch#0 ]
|
||||
reg byte a [ utoa::$4 ]
|
||||
reg byte a [ utoa::$11 ]
|
||||
reg byte a [ utoa::$10 ]
|
||||
zp[2]:19 [ utoa::digit_value#0 utoa_append::sub#0 ]
|
||||
reg byte a [ printf_string::len#0 ]
|
||||
mem[12] [ printf_buffer ]
|
Loading…
x
Reference in New Issue
Block a user