SharpC-A-C-Interpreter-In-C-1011

14次阅读

共计 35250 个字符,预计需要花费 89 分钟才能阅读完成。

现在,来看看成果。

以如下 C 代码为运行样本:

int global_a = 1 + 2;
int global_b = 1 - 2;
int global_c = 1 * 2;
int global_d = 1 / 2;
int global_e = 1 % 2;
int global_f = 1 & 2;
int global_g = 1 | 2;
int global_h = 1 ^ 2;
int global_i = 1 && 2;
int global_j = 1 == 2;
int global_k = 1 > 2;
int global_l = 1 >= 2;
int global_m = 1 < 2;
int global_n = 1 <= 2;
int global_o = 1 != 2;
int global_p = 1 || 2;
int global_q = 1 << 2;
int global_r = 1 >> 2;

char global_ch = 'a';
char* global_str = "abcdefghijklmn";

void fork()
{
    int x = 1;

    if (x > 0)
        x = 2;
    else
        x = 3;

    // return ;

    x = 2;

    for(int i = 0; i < 5; i++)
    {
        x++;
        break;
    }

    while(x < 10)
        x++;

    x = 0;

    do
    {x++;}while(x < 5);

    x = 2;

    switch(x)
    {
        case 1:
        case 2: x++;
        case 3: break;
        case 4:
        default: break;
    }

    // switch in for
    for(x = 1; x < 10; x++)
    {switch(x)
        {
            case 1: break;
            case 2:
            case 3: 
                {if (x == 2)
                        x = 2;
                    else
                        x = 3;
                }
                break;
            case 4: 
                {for(int y = 0; y < 5; y++)
                    {if (y >= 3)
                            break;
                    }    
                }
                break;
            case 6:
                break;
            case 7:
            case 8:
            default:
                {x = x;}
                break;
        } // switch
    } // for
}

void fork2(int a, int b)
{print("iterate fork2: a=%i, b=%i\n", a, b);
    if (a + b == 2)
        return;
    else
        fork2(--a, --b);
}

void fork3(...)
{int len = varlen();

    print("Variable function:fork3\n");
    print("length is %i\n", len);

    for(int i = 0; i < len; i++)
    {int x = vararg(i);

        print("x=%i\n", x);
    }

    return ;
}

int strlen(char* str)
{
    int len = 0;
    char* ptr = str;

    while(*ptr != 0)
    {
        len++;
        ptr++;
    }

    return len;
}


void main()
{fork();
    
    fork2(5, 5);

    fork3(1);

    fork3(1, 2);

    fork3(1, 2, 3);
    
    // Test pointer assign
    char* str = "abcdefg";
    char* str2 = str;

    print("str=%s\n", str);
    print("str2=%s\n", str2);

    print("str len=%i\n", strlen(str));
    print("str2 len=%i\n", strlen(str2));

    char* str3 = malloc(5);

    *(str3 + 0) = 'a';
    *(str3 + 1) = 'b';
    *(str3 + 2) = 0;

    print("str3=%s\n", str3);

    int iVal = 0;

    if (input("Test Input", "Please input a string", "0", "%i", "Integer required", &iVal))
    {print("result=%i \n", iVal);
    }

    switch(confirm("hello", "world"))
    {case 0: prompt("Result", "You pressed no."); break;
        case 1: prompt("Result", "You pressed yes."); break;
    }
}

运行之,则有:
提示输入:

输入 133(记念曾经的 133 路大巴),会打印之,然后出现:



此处记忆错误,应为 113 路大巴。

让我们点击“是”按钮,出现提示对话框:

关闭提示对话框后,看看命令行窗口中的结果:

查看 Debug 输出:

1>>Warning: Line: 2 Pos: 1 "global_a = 1 + 2;": Variable "global_a" is defined but never used.
2>>Warning: Line: 3 Pos: 1 "global_b = 1 - 2;": Variable "global_b" is defined but never used.
3>>Warning: Line: 4 Pos: 1 "global_c = 1 * 2;": Variable "global_c" is defined but never used.
4>>Warning: Line: 5 Pos: 1 "global_d = 1 / 2;": Variable "global_d" is defined but never used.
5>>Warning: Line: 6 Pos: 1 "global_e = 1 % 2;": Variable "global_e" is defined but never used.
6>>Warning: Line: 7 Pos: 1 "global_f = 1 & 2;": Variable "global_f" is defined but never used.
7>>Warning: Line: 8 Pos: 1 "global_g = 1 | 2;": Variable "global_g" is defined but never used.
8>>Warning: Line: 9 Pos: 1 "global_h = 1 ^ 2;": Variable "global_h" is defined but never used.
9>>Warning: Line: 10 Pos: 1 "global_i = 1 && 2;": Variable "global_i" is defined but never used.
10>>Warning: Line: 11 Pos: 1 "global_j = 1 == 2;": Variable "global_j" is defined but never used.
11>>Warning: Line: 12 Pos: 1 "global_k = 1 > 2;": Variable "global_k" is defined but never used.
12>>Warning: Line: 13 Pos: 1 "global_l = 1 >= 2;": Variable "global_l" is defined but never used.
13>>Warning: Line: 14 Pos: 1 "global_m = 1 < 2;": Variable "global_m" is defined but never used.
14>>Warning: Line: 15 Pos: 1 "global_n = 1 <= 2;": Variable "global_n" is defined but never used.
15>>Warning: Line: 16 Pos: 1 "global_o = 1 != 2;": Variable "global_o" is defined but never used.
16>>Warning: Line: 17 Pos: 1 "global_p = 1 || 2;": Variable "global_p" is defined but never used.
17>>Warning: Line: 18 Pos: 1 "global_q = 1 << 2;": Variable "global_q" is defined but never used.
18>>Warning: Line: 19 Pos: 1 "global_r = 1 >> 2;": Variable "global_r" is defined but never used.
19>>Warning: Line: 21 Pos: 1 "global_ch ='a';": Variable "global_ch" is defined but never used.
20>>Warning: Line: 22 Pos: 1 "global_str ="abcdefghijklmn";": Variable "global_str" is defined but never used.
21>>Warning: Line: 142 Pos: 1 "void main()": Function "main" is defined but never used.

================================ Program Begin ================================

Declare [char * "$var_char_ptr_121$"] Address: [0x00000004] Size:4
Constant $const_init_122$ refers to $var_char_ptr_121$
Initialize pointer $var_char_ptr_121$ Address: 0x00000004 Value: 0x00000008
Declare [char * "$var_char_ptr_119$"] Address: [0x0000001C] Size:4
Constant $const_init_120$ refers to $var_char_ptr_119$
Initialize pointer $var_char_ptr_119$ Address: 0x0000001C Value: 0x00000020
Declare [char * "$var_char_ptr_116$"] Address: [0x00000028] Size:4
Constant $const_init_117$ refers to $var_char_ptr_116$
Initialize pointer $var_char_ptr_116$ Address: 0x00000028 Value: 0x0000002C
Declare [char * "$var_char_ptr_114$"] Address: [0x0000003C] Size:4
Constant $const_init_115$ refers to $var_char_ptr_114$
Initialize pointer $var_char_ptr_114$ Address: 0x0000003C Value: 0x00000040
Declare [char * "$var_char_ptr_111$"] Address: [0x00000048] Size:4
Constant $const_init_112$ refers to $var_char_ptr_111$
Initialize pointer $var_char_ptr_111$ Address: 0x00000048 Value: 0x0000004C
Declare [char * "$var_char_ptr_109$"] Address: [0x00000054] Size:4
Constant $const_init_110$ refers to $var_char_ptr_109$
Initialize pointer $var_char_ptr_109$ Address: 0x00000054 Value: 0x00000058
Declare [char * "$var_char_ptr_107$"] Address: [0x00000060] Size:4
Constant $const_init_108$ refers to $var_char_ptr_107$
Initialize pointer $var_char_ptr_107$ Address: 0x00000060 Value: 0x00000064
Declare [char * "$var_char_ptr_104$"] Address: [0x00000074] Size:4
Constant $const_init_105$ refers to $var_char_ptr_104$
Initialize pointer $var_char_ptr_104$ Address: 0x00000074 Value: 0x00000078
Declare [char * "$var_char_ptr_102$"] Address: [0x0000008C] Size:4
Constant $const_init_103$ refers to $var_char_ptr_102$
Initialize pointer $var_char_ptr_102$ Address: 0x0000008C Value: 0x00000090
Declare [char * "$var_char_ptr_100$"] Address: [0x00000094] Size:4
Constant $const_init_101$ refers to $var_char_ptr_100$
Initialize pointer $var_char_ptr_100$ Address: 0x00000094 Value: 0x00000098
Declare [char * "$var_char_ptr_98$"] Address: [0x0000009C] Size:4
Constant $const_init_99$ refers to $var_char_ptr_98$
Initialize pointer $var_char_ptr_98$ Address: 0x0000009C Value: 0x000000A0
Declare [char * "$var_char_ptr_96$"] Address: [0x000000B8] Size:4
Constant $const_init_97$ refers to $var_char_ptr_96$
Initialize pointer $var_char_ptr_96$ Address: 0x000000B8 Value: 0x000000BC
Declare [char * "$var_char_ptr_93$"] Address: [0x000000C8] Size:4
Constant $const_init_94$ refers to $var_char_ptr_93$
Initialize pointer $var_char_ptr_93$ Address: 0x000000C8 Value: 0x000000CC
Declare [char * "$var_char_ptr_86$"] Address: [0x000000D8] Size:4
Constant $const_init_87$ refers to $var_char_ptr_86$
Initialize pointer $var_char_ptr_86$ Address: 0x000000D8 Value: 0x000000DC
Declare [char * "$var_char_ptr_83$"] Address: [0x000000EC] Size:4
Constant $const_init_84$ refers to $var_char_ptr_83$
Initialize pointer $var_char_ptr_83$ Address: 0x000000EC Value: 0x000000F0
Declare [char * "$var_char_ptr_80$"] Address: [0x00000100] Size:4
Constant $const_init_81$ refers to $var_char_ptr_80$
Initialize pointer $var_char_ptr_80$ Address: 0x00000100 Value: 0x00000104
Declare [char * "$var_char_ptr_77$"] Address: [0x00000110] Size:4
Constant $const_init_78$ refers to $var_char_ptr_77$
Initialize pointer $var_char_ptr_77$ Address: 0x00000110 Value: 0x00000114
Declare [char * "$var_char_ptr_73$"] Address: [0x00000120] Size:4
Constant $const_init_74$ refers to $var_char_ptr_73$
Initialize pointer $var_char_ptr_73$ Address: 0x00000120 Value: 0x00000124
Declare [char * "$var_char_ptr_59$"] Address: [0x0000012C] Size:4
Constant $const_init_60$ refers to $var_char_ptr_59$
Initialize pointer $var_char_ptr_59$ Address: 0x0000012C Value: 0x00000130
Declare [char * "$var_char_ptr_54$"] Address: [0x00000138] Size:4
Constant $const_init_55$ refers to $var_char_ptr_54$
Initialize pointer $var_char_ptr_54$ Address: 0x00000138 Value: 0x0000013C
Declare [char * "$var_char_ptr_51$"] Address: [0x0000014C] Size:4
Constant $const_init_52$ refers to $var_char_ptr_51$
Initialize pointer $var_char_ptr_51$ Address: 0x0000014C Value: 0x00000150
Declare [char * "$var_char_ptr_45$"] Address: [0x0000016C] Size:4
Constant $const_init_46$ refers to $var_char_ptr_45$
Initialize pointer $var_char_ptr_45$ Address: 0x0000016C Value: 0x00000170
Declare [char * "$var_char_ptr_21$"] Address: [0x0000018C] Size:4
Constant $const_init_22$ refers to $var_char_ptr_21$
Initialize pointer $var_char_ptr_21$ Address: 0x0000018C Value: 0x00000190
Declare [int "global_a"] Address: [0x000001A0] Size:4
    Exp: [1 + 2] Result: [3]
    Exp: [global_a = 3] Result: [global_a]
Declare [int "global_b"] Address: [0x000001A4] Size:4
    Exp: [1 - 2] Result: [-1]
    Exp: [global_b = -1] Result: [global_b]
Declare [int "global_c"] Address: [0x000001A8] Size:4
    Exp: [1  *  2] Result: [2]
    Exp: [global_c = 2] Result: [global_c]
Declare [int "global_d"] Address: [0x000001AC] Size:4
    Exp: [1 / 2] Result: [0]
    Exp: [global_d = 0] Result: [global_d]
Declare [int "global_e"] Address: [0x000001B0] Size:4
    Exp: [1 % 2] Result: [1]
    Exp: [global_e = 1] Result: [global_e]
Declare [int "global_f"] Address: [0x000001B4] Size:4
A first chance exception of type 'SharpC.RuntimeException' occurred in SharpC.dll
Declare [int "global_g"] Address: [0x000001B8] Size:4
    Exp: [1 | 2] Result: [3]
    Exp: [global_g = 3] Result: [global_g]
Declare [int "global_h"] Address: [0x000001BC] Size:4
    Exp: [1 ^ 2] Result: [3]
    Exp: [global_h = 3] Result: [global_h]
Declare [int "global_i"] Address: [0x000001C0] Size:4
    Exp: [1 && 2] Result: [1]
    Exp: [global_i = 1] Result: [global_i]
Declare [int "global_j"] Address: [0x000001C4] Size:4
    Exp: [1 == 2] Result: [0]
    Exp: [global_j = 0] Result: [global_j]
Declare [int "global_k"] Address: [0x000001C8] Size:4
    Exp: [1 > 2] Result: [0]
    Exp: [global_k = 0] Result: [global_k]
Declare [int "global_l"] Address: [0x000001CC] Size:4
    Exp: [1 >= 2] Result: [0]
    Exp: [global_l = 0] Result: [global_l]
Declare [int "global_m"] Address: [0x000001D0] Size:4
    Exp: [1 < 2] Result: [1]
    Exp: [global_m = 1] Result: [global_m]
Declare [int "global_n"] Address: [0x000001D4] Size:4
    Exp: [1 <= 2] Result: [1]
    Exp: [global_n = 1] Result: [global_n]
Declare [int "global_o"] Address: [0x000001D8] Size:4
    Exp: [1 != 2] Result: [1]
    Exp: [global_o = 1] Result: [global_o]
Declare [int "global_p"] Address: [0x000001DC] Size:4
    Exp: [1 || 2] Result: [1]
    Exp: [global_p = 1] Result: [global_p]
Declare [int "global_q"] Address: [0x000001E0] Size:4
    Exp: [1 << 2] Result: [4]
    Exp: [global_q = 4] Result: [global_q]
Declare [int "global_r"] Address: [0x000001E4] Size:4
    Exp: [1 >> 2] Result: [0]
    Exp: [global_r = 0] Result: [global_r]
Declare [char "global_ch"] Address: [0x000001E8] Size:4
    Exp: [global_ch = 97] Result: [global_ch]
Declare [char * "global_str"] Address: [0x000001EC] Size:4
    Exp: [global_str = $var_char_ptr_21$] Result: [global_str]
Call function "fork" with [0] parameter
Declare [int "x"] Address: [0x000001F0] Size:4
    Exp: [x = 1] Result: [x]
if(x > 0)
    Exp: [x > 0] Result: [1]
Condition=1
Then
    Exp: [x = 2] Result: [x]
    Exp: [x = 2] Result: [x]
Begin For.
Declare [int "i"] Address: [0x000001F4] Size:4
    Exp: [i = 0] Result: [i]
Free local variable: i Address: [0x000001f4] Size:4
    Exp: [i < 5] Result: [1]
Condition: [i < 5] = 1
    Exp: [x ++] Result: [2]
Break
End For.
Begin While.
    Exp: [x < 10] Result: [1]
Condition: [x < 10] = 1
    Exp: [x ++] Result: [3]
    Exp: [x < 10] Result: [1]
Condition: [x < 10] = 1
    Exp: [x ++] Result: [4]
    Exp: [x < 10] Result: [1]
Condition: [x < 10] = 1
    Exp: [x ++] Result: [5]
    Exp: [x < 10] Result: [1]
Condition: [x < 10] = 1
    Exp: [x ++] Result: [6]
    Exp: [x < 10] Result: [1]
Condition: [x < 10] = 1
    Exp: [x ++] Result: [7]
    Exp: [x < 10] Result: [1]
Condition: [x < 10] = 1
    Exp: [x ++] Result: [8]
    Exp: [x < 10] Result: [1]
Condition: [x < 10] = 1
    Exp: [x ++] Result: [9]
    Exp: [x < 10] Result: [0]
Condition: [x < 10] = 0
End While.
    Exp: [x = 0] Result: [x]
Begin Do...While.
    Exp: [x ++] Result: [0]
    Exp: [x < 5] Result: [1]
Condition : x < 5 = 1
    Exp: [x ++] Result: [1]
    Exp: [x < 5] Result: [1]
Condition : x < 5 = 1
    Exp: [x ++] Result: [2]
    Exp: [x < 5] Result: [1]
Condition : x < 5 = 1
    Exp: [x ++] Result: [3]
    Exp: [x < 5] Result: [1]
Condition : x < 5 = 1
    Exp: [x ++] Result: [4]
    Exp: [x < 5] Result: [0]
Condition : x < 5 = 0
End Do...While.
    Exp: [x = 2] Result: [x]
Begin Switch.
Condition: [x] = 2
case 2
    Exp: [x ++] Result: [2]
case 3
Break.
Break.
Begin For.
    Exp: [x = 1] Result: [x]
    Exp: [x < 10] Result: [1]
Condition: [x < 10] = 1
Begin Switch.
Condition: [x] = 1
case 1
Break.
Break.
    Exp: [x ++] Result: [1]
    Exp: [x < 10] Result: [1]
Condition: [x < 10] = 1
Begin Switch.
Condition: [x] = 2
case 2
case 3
if(x == 2)
    Exp: [x == 2] Result: [1]
Condition=1
Then
    Exp: [x = 2] Result: [x]
Break.
Break.
case 4
Begin For.
Declare [int "y"] Address: [0x000001F8] Size:4
    Exp: [y = 0] Result: [y]
Free local variable: y Address: [0x000001f8] Size:4
    Exp: [y < 5] Result: [1]
Condition: [y < 5] = 1
if(y >= 3)
    Exp: [y >= 3] Result: [0]
Condition=0
    Exp: [y ++] Result: [0]
    Exp: [y < 5] Result: [1]
Condition: [y < 5] = 1
if(y >= 3)
    Exp: [y >= 3] Result: [0]
Condition=0
    Exp: [y ++] Result: [1]
    Exp: [y < 5] Result: [1]
Condition: [y < 5] = 1
if(y >= 3)
    Exp: [y >= 3] Result: [0]
Condition=0
    Exp: [y ++] Result: [2]
    Exp: [y < 5] Result: [1]
Condition: [y < 5] = 1
if(y >= 3)
    Exp: [y >= 3] Result: [1]
Condition=1
Then
Break
Break.
Break.
End For.
Break.
Break.
case 6
Break.
Break.
case 7
case 8
    Exp: [x ++] Result: [2]
    Exp: [x < 10] Result: [1]
Condition: [x < 10] = 1
Begin Switch.
Condition: [x] = 3
case 3
if(x == 2)
    Exp: [x == 2] Result: [0]
Condition=0
Else
    Exp: [x = 3] Result: [x]
Break.
Break.
case 4
Begin For.
Declare [int "y"] Address: [0x000001F4] Size:4
    Exp: [y = 0] Result: [y]
Free local variable: y Address: [0x000001f4] Size:4
    Exp: [y < 5] Result: [1]
Condition: [y < 5] = 1
if(y >= 3)
    Exp: [y >= 3] Result: [0]
Condition=0
End For.
Break.
Break.
case 6
Break.
Break.
case 7
case 8
    Exp: [x ++] Result: [3]
    Exp: [x < 10] Result: [1]
Condition: [x < 10] = 1
Begin Switch.
Condition: [x] = 4
case 4
Begin For.
Declare [int "y"] Address: [0x000001FC] Size:4
    Exp: [y = 0] Result: [y]
Free local variable: y Address: [0x000001fc] Size:4
    Exp: [y < 5] Result: [1]
Condition: [y < 5] = 1
if(y >= 3)
    Exp: [y >= 3] Result: [0]
Condition=0
End For.
Break.
Break.
case 6
Break.
Break.
case 7
case 8
    Exp: [x ++] Result: [4]
    Exp: [x < 10] Result: [1]
Condition: [x < 10] = 1
Begin Switch.
Condition: [x] = 5
Default
    Exp: [x = x] Result: [x]
Break.
    Exp: [x ++] Result: [5]
    Exp: [x < 10] Result: [1]
Condition: [x < 10] = 1
Begin Switch.
Condition: [x] = 6
case 6
Break.
Break.
case 7
case 8
    Exp: [x ++] Result: [6]
    Exp: [x < 10] Result: [1]
Condition: [x < 10] = 1
Begin Switch.
Condition: [x] = 7
case 7
case 8
    Exp: [x ++] Result: [7]
    Exp: [x < 10] Result: [1]
Condition: [x < 10] = 1
Begin Switch.
Condition: [x] = 8
case 8
    Exp: [x ++] Result: [8]
    Exp: [x < 10] Result: [1]
Condition: [x < 10] = 1
Begin Switch.
Condition: [x] = 9
Default
    Exp: [x = x] Result: [x]
Break.
    Exp: [x ++] Result: [9]
    Exp: [x < 10] Result: [0]
Condition: [x < 10] = 0
End For.
Free local variable: x Address: [0x000001f0] Size:4
Call function "fork2" with [2] parameters
Declare [int "a"] Address: [0x000001F8] Size:4
Declare [int "b"] Address: [0x000001F4] Size:4
Set parameter "a" : 5
Set parameter "b" : 5
Call function "print" with [3] parameters
Declare [char * "$var_char_ptr_123$"] Address: [0x00000200] Size:4
Declare [int "$var_int_124$"] Address: [0x000001FC] Size:4
Declare [int "$var_int_125$"] Address: [0x000001F0] Size:4
Set parameter "$var_char_ptr_123$" : 364
Set parameter "$var_int_124$" : 5
Set parameter "$var_int_125$" : 5
print("iterate fork2: a=%i, b=%i\n",5,5) output:{{iterate fork2: a=5, b=5}}
Free [char * "$var_char_ptr_123$"] Address: 00000200 Size: 4
Free [int "$var_int_124$"] Address: 000001FC Size: 4
Free [int "$var_int_125$"] Address: 000001F0 Size: 4
if(a + b == 2)
    Exp: [a + b] Result: [10]
    Exp: [10 == 2] Result: [0]
Condition=0
Else
    Exp: [a --] Result: [4]
    Exp: [b --] Result: [4]
Call function "fork2" with [2] parameters
function iteration: fork2 for 1 time
Set parameter "a" : 4
Set parameter "b" : 4
Call function "print" with [3] parameters
Declare [char * "$var_char_ptr_126$"] Address: [0x00000204] Size:4
Declare [int "$var_int_127$"] Address: [0x00000200] Size:4
Declare [int "$var_int_128$"] Address: [0x000001FC] Size:4
Set parameter "$var_char_ptr_126$" : 364
Set parameter "$var_int_127$" : 4
Set parameter "$var_int_128$" : 4
print("iterate fork2: a=%i, b=%i\n",4,4) output:{{iterate fork2: a=4, b=4}}
Free [char * "$var_char_ptr_126$"] Address: 00000204 Size: 4
Free [int "$var_int_127$"] Address: 00000200 Size: 4
Free [int "$var_int_128$"] Address: 000001FC Size: 4
if(a + b == 2)
    Exp: [a + b] Result: [8]
    Exp: [8 == 2] Result: [0]
Condition=0
Else
    Exp: [a --] Result: [3]
    Exp: [b --] Result: [3]
Call function "fork2" with [2] parameters
function iteration: fork2 for 2 times
Set parameter "a" : 3
Set parameter "b" : 3
Call function "print" with [3] parameters
Declare [char * "$var_char_ptr_129$"] Address: [0x000001F0] Size:4
Declare [int "$var_int_130$"] Address: [0x00000208] Size:4
Declare [int "$var_int_131$"] Address: [0x00000204] Size:4
Set parameter "$var_char_ptr_129$" : 364
Set parameter "$var_int_130$" : 3
Set parameter "$var_int_131$" : 3
print("iterate fork2: a=%i, b=%i\n",3,3) output:{{iterate fork2: a=3, b=3}}
Free [char * "$var_char_ptr_129$"] Address: 000001F0 Size: 4
Free [int "$var_int_130$"] Address: 00000208 Size: 4
Free [int "$var_int_131$"] Address: 00000204 Size: 4
if(a + b == 2)
    Exp: [a + b] Result: [6]
    Exp: [6 == 2] Result: [0]
Condition=0
Else
    Exp: [a --] Result: [2]
    Exp: [b --] Result: [2]
Call function "fork2" with [2] parameters
function iteration: fork2 for 3 times
Set parameter "a" : 2
Set parameter "b" : 2
Call function "print" with [3] parameters
Declare [char * "$var_char_ptr_132$"] Address: [0x00000200] Size:4
Declare [int "$var_int_133$"] Address: [0x000001FC] Size:4
Declare [int "$var_int_134$"] Address: [0x0000020C] Size:4
Set parameter "$var_char_ptr_132$" : 364
Set parameter "$var_int_133$" : 2
Set parameter "$var_int_134$" : 2
print("iterate fork2: a=%i, b=%i\n",2,2) output:{{iterate fork2: a=2, b=2}}
Free [char * "$var_char_ptr_132$"] Address: 00000200 Size: 4
Free [int "$var_int_133$"] Address: 000001FC Size: 4
Free [int "$var_int_134$"] Address: 0000020C Size: 4
if(a + b == 2)
    Exp: [a + b] Result: [4]
    Exp: [4 == 2] Result: [0]
Condition=0
Else
    Exp: [a --] Result: [1]
    Exp: [b --] Result: [1]
Call function "fork2" with [2] parameters
function iteration: fork2 for 4 times
Set parameter "a" : 1
Set parameter "b" : 1
Call function "print" with [3] parameters
Declare [char * "$var_char_ptr_135$"] Address: [0x000001F0] Size:4
Declare [int "$var_int_136$"] Address: [0x00000208] Size:4
Declare [int "$var_int_137$"] Address: [0x00000204] Size:4
Set parameter "$var_char_ptr_135$" : 364
Set parameter "$var_int_136$" : 1
Set parameter "$var_int_137$" : 1
print("iterate fork2: a=%i, b=%i\n",1,1) output:{{iterate fork2: a=1, b=1}}
Free [char * "$var_char_ptr_135$"] Address: 000001F0 Size: 4
Free [int "$var_int_136$"] Address: 00000208 Size: 4
Free [int "$var_int_137$"] Address: 00000204 Size: 4
if(a + b == 2)
    Exp: [a + b] Result: [2]
    Exp: [2 == 2] Result: [1]
Condition=1
Then
return
Set parameter "a" : 2
Set parameter "b" : 2
Set parameter "a" : 3
Set parameter "b" : 3
Set parameter "a" : 4
Set parameter "b" : 4
Set parameter "a" : 5
Set parameter "b" : 5
Call function "fork3" with [1] parameters
Declare [short "$var_short_138$"] Address: [0x00000210] Size:4
Set parameter "$var_short_138$" : 1
Declare [int "len"] Address: [0x00000200] Size:4
Call function "varlen" with [0] parameter
    Exp: [len = 1] Result: [len]
Call function "print" with [1] parameters
Declare [char * "$var_char_ptr_139$"] Address: [0x000001FC] Size:4
Set parameter "$var_char_ptr_139$" : 332
print("Variable function:fork3\n") output:{{Variable function:fork3}}
Free [char * "$var_char_ptr_139$"] Address: 000001FC Size: 4
Call function "print" with [2] parameters
Declare [char * "$var_char_ptr_140$"] Address: [0x0000020C] Size:4
Declare [int "$var_int_141$"] Address: [0x000001F0] Size:4
Set parameter "$var_char_ptr_140$" : 312
Set parameter "$var_int_141$" : 1
print("length is %i\n",1) output:{{length is 1}}
Free [char * "$var_char_ptr_140$"] Address: 0000020C Size: 4
Free [int "$var_int_141$"] Address: 000001F0 Size: 4
Begin For.
Declare [int "i"] Address: [0x00000208] Size:4
    Exp: [i = 0] Result: [i]
Free local variable: i Address: [0x00000208] Size:4
    Exp: [i < len] Result: [1]
Condition: [i < len] = 1
Declare [int "x"] Address: [0x00000204] Size:4
Call function "vararg" with [1] parameters
Declare [int "argIdx"] Address: [0x00000214] Size:4
Set parameter "argIdx" : 0
    Exp: [x = 1] Result: [x]
Call function "print" with [2] parameters
Declare [char * "$var_char_ptr_142$"] Address: [0x000001FC] Size:4
Declare [int "$var_int_143$"] Address: [0x0000020C] Size:4
Set parameter "$var_char_ptr_142$" : 300
Set parameter "$var_int_143$" : 1
print("x=%i\n",1) output:{{x=1}}
Free [char * "$var_char_ptr_142$"] Address: 000001FC Size: 4
Free [int "$var_int_143$"] Address: 0000020C Size: 4
Free local variable: x Address: [0x00000204] Size:4
    Exp: [i ++] Result: [0]
    Exp: [i < len] Result: [0]
Condition: [i < len] = 0
End For.
return
Free local variable: len Address: [0x00000200] Size:4
Free [short "$var_short_138$"] Address: 00000210 Size: 4
Call function "fork3" with [2] parameters
Declare [short "$var_short_144$"] Address: [0x000001F0] Size:4
Declare [short "$var_short_145$"] Address: [0x00000208] Size:4
Set parameter "$var_short_144$" : 1
Set parameter "$var_short_145$" : 2
Declare [int "len"] Address: [0x00000218] Size:4
Call function "varlen" with [0] parameter
    Exp: [len = 2] Result: [len]
Call function "print" with [1] parameters
Declare [char * "$var_char_ptr_146$"] Address: [0x000001FC] Size:4
Set parameter "$var_char_ptr_146$" : 332
print("Variable function:fork3\n") output:{{Variable function:fork3}}
Free [char * "$var_char_ptr_146$"] Address: 000001FC Size: 4
Call function "print" with [2] parameters
Declare [char * "$var_char_ptr_147$"] Address: [0x0000020C] Size:4
Declare [int "$var_int_148$"] Address: [0x00000204] Size:4
Set parameter "$var_char_ptr_147$" : 312
Set parameter "$var_int_148$" : 2
print("length is %i\n",2) output:{{length is 2}}
Free [char * "$var_char_ptr_147$"] Address: 0000020C Size: 4
Free [int "$var_int_148$"] Address: 00000204 Size: 4
Begin For.
Declare [int "i"] Address: [0x00000200] Size:4
    Exp: [i = 0] Result: [i]
Free local variable: i Address: [0x00000200] Size:4
    Exp: [i < len] Result: [1]
Condition: [i < len] = 1
Declare [int "x"] Address: [0x00000210] Size:4
Call function "vararg" with [1] parameters
Set parameter "argIdx" : 0
    Exp: [x = 1] Result: [x]
Call function "print" with [2] parameters
Declare [char * "$var_char_ptr_149$"] Address: [0x0000021C] Size:4
Declare [int "$var_int_150$"] Address: [0x000001FC] Size:4
Set parameter "$var_char_ptr_149$" : 300
Set parameter "$var_int_150$" : 1
print("x=%i\n",1) output:{{x=1}}
Free [char * "$var_char_ptr_149$"] Address: 0000021C Size: 4
Free [int "$var_int_150$"] Address: 000001FC Size: 4
Free local variable: x Address: [0x00000210] Size:4
    Exp: [i ++] Result: [0]
    Exp: [i < len] Result: [1]
Condition: [i < len] = 1
Declare [int "x"] Address: [0x0000020C] Size:4
Call function "vararg" with [1] parameters
Set parameter "argIdx" : 1
    Exp: [x = 2] Result: [x]
Call function "print" with [2] parameters
Declare [char * "$var_char_ptr_151$"] Address: [0x00000204] Size:4
Declare [int "$var_int_152$"] Address: [0x00000200] Size:4
Set parameter "$var_char_ptr_151$" : 300
Set parameter "$var_int_152$" : 2
print("x=%i\n",2) output:{{x=2}}
Free [char * "$var_char_ptr_151$"] Address: 00000204 Size: 4
Free [int "$var_int_152$"] Address: 00000200 Size: 4
Free local variable: x Address: [0x0000020c] Size:4
    Exp: [i ++] Result: [2]
    Exp: [i < len] Result: [0]
Condition: [i < len] = 0
End For.
return
Free local variable: len Address: [0x00000218] Size:4
Free [short "$var_short_144$"] Address: 000001F0 Size: 4
Free [short "$var_short_145$"] Address: 00000208 Size: 4
Call function "fork3" with [3] parameters
Declare [short "$var_short_153$"] Address: [0x00000220] Size:4
Declare [short "$var_short_154$"] Address: [0x0000021C] Size:4
Declare [short "$var_short_155$"] Address: [0x000001FC] Size:4
Set parameter "$var_short_153$" : 1
Set parameter "$var_short_154$" : 2
Set parameter "$var_short_155$" : 3
Declare [int "len"] Address: [0x00000210] Size:4
Call function "varlen" with [0] parameter
    Exp: [len = 3] Result: [len]
Call function "print" with [1] parameters
Declare [char * "$var_char_ptr_156$"] Address: [0x00000204] Size:4
Set parameter "$var_char_ptr_156$" : 332
print("Variable function:fork3\n") output:{{Variable function:fork3}}
Free [char * "$var_char_ptr_156$"] Address: 00000204 Size: 4
Call function "print" with [2] parameters
Declare [char * "$var_char_ptr_157$"] Address: [0x00000200] Size:4
Declare [int "$var_int_158$"] Address: [0x0000020C] Size:4
Set parameter "$var_char_ptr_157$" : 312
Set parameter "$var_int_158$" : 3
print("length is %i\n",3) output:{{length is 3}}
Free [char * "$var_char_ptr_157$"] Address: 00000200 Size: 4
Free [int "$var_int_158$"] Address: 0000020C Size: 4
Begin For.
Declare [int "i"] Address: [0x00000218] Size:4
    Exp: [i = 0] Result: [i]
Free local variable: i Address: [0x00000218] Size:4
    Exp: [i < len] Result: [1]
Condition: [i < len] = 1
Declare [int "x"] Address: [0x000001F0] Size:4
Call function "vararg" with [1] parameters
Set parameter "argIdx" : 0
    Exp: [x = 1] Result: [x]
Call function "print" with [2] parameters
Declare [char * "$var_char_ptr_159$"] Address: [0x00000208] Size:4
Declare [int "$var_int_160$"] Address: [0x00000224] Size:4
Set parameter "$var_char_ptr_159$" : 300
Set parameter "$var_int_160$" : 1
print("x=%i\n",1) output:{{x=1}}
Free [char * "$var_char_ptr_159$"] Address: 00000208 Size: 4
Free [int "$var_int_160$"] Address: 00000224 Size: 4
Free local variable: x Address: [0x000001f0] Size:4
    Exp: [i ++] Result: [0]
    Exp: [i < len] Result: [1]
Condition: [i < len] = 1
Declare [int "x"] Address: [0x00000204] Size:4
Call function "vararg" with [1] parameters
Set parameter "argIdx" : 1
    Exp: [x = 2] Result: [x]
Call function "print" with [2] parameters
Declare [char * "$var_char_ptr_161$"] Address: [0x00000200] Size:4
Declare [int "$var_int_162$"] Address: [0x0000020C] Size:4
Set parameter "$var_char_ptr_161$" : 300
Set parameter "$var_int_162$" : 2
print("x=%i\n",2) output:{{x=2}}
Free [char * "$var_char_ptr_161$"] Address: 00000200 Size: 4
Free [int "$var_int_162$"] Address: 0000020C Size: 4
Free local variable: x Address: [0x00000204] Size:4
    Exp: [i ++] Result: [1]
    Exp: [i < len] Result: [1]
Condition: [i < len] = 1
Declare [int "x"] Address: [0x00000218] Size:4
Call function "vararg" with [1] parameters
Set parameter "argIdx" : 2
    Exp: [x = 3] Result: [x]
Call function "print" with [2] parameters
Declare [char * "$var_char_ptr_163$"] Address: [0x00000228] Size:4
Declare [int "$var_int_164$"] Address: [0x00000208] Size:4
Set parameter "$var_char_ptr_163$" : 300
Set parameter "$var_int_164$" : 3
print("x=%i\n",3) output:{{x=3}}
Free [char * "$var_char_ptr_163$"] Address: 00000228 Size: 4
Free [int "$var_int_164$"] Address: 00000208 Size: 4
Free local variable: x Address: [0x00000218] Size:4
    Exp: [i ++] Result: [3]
    Exp: [i < len] Result: [0]
Condition: [i < len] = 0
End For.
return
Free local variable: len Address: [0x00000210] Size:4
Free [short "$var_short_153$"] Address: 00000220 Size: 4
Free [short "$var_short_154$"] Address: 0000021C Size: 4
Free [short "$var_short_155$"] Address: 000001FC Size: 4
Declare [char * "str"] Address: [0x00000224] Size:4
    Exp: [str = $var_char_ptr_73$] Result: [str]
Declare [char * "str2"] Address: [0x000001F0] Size:4
    Exp: [str2 = str] Result: [str2]
Call function "print" with [2] parameters
Declare [char * "$var_char_ptr_165$"] Address: [0x00000200] Size:4
Declare [char * "$var_char_ptr_166$"] Address: [0x0000020C] Size:4
Set parameter "$var_char_ptr_165$" : 272
Set parameter "$var_char_ptr_166$" : 548
print("str=%s\n",524) output:{{str=abcdefg}}
Free [char * "$var_char_ptr_165$"] Address: 00000200 Size: 4
Free [char * "$var_char_ptr_166$"] Address: 0000020C Size: 4
Call function "print" with [2] parameters
Declare [char * "$var_char_ptr_167$"] Address: [0x00000204] Size:4
Declare [char * "$var_char_ptr_168$"] Address: [0x0000022C] Size:4
Set parameter "$var_char_ptr_167$" : 256
Set parameter "$var_char_ptr_168$" : 496
print("str2=%s\n",556) output:{{str2=abcdefg}}
Free [char * "$var_char_ptr_167$"] Address: 00000204 Size: 4
Free [char * "$var_char_ptr_168$"] Address: 0000022C Size: 4
Call function "strlen" with [1] parameters
Declare [char * "str"] Address: [0x00000228] Size:4
Set parameter "str" : 548
Declare [int "len"] Address: [0x00000208] Size:4
    Exp: [len = 0] Result: [len]
Declare [char * "ptr"] Address: [0x00000218] Size:4
    Exp: [ptr = str] Result: [ptr]
Begin While.
    Exp: [ptr *] Result: [(* char)[0x00000124]]
    Exp: [(* char)[0x00000124] != 0] Result: [1]
Condition: [*ptr != 0] = 1
    Exp: [len ++] Result: [0]
    Exp: [ptr ++] Result: [536]
    Exp: [ptr *] Result: [(* char)[0x00000125]]
    Exp: [(* char)[0x00000125] != 0] Result: [1]
Condition: [*ptr != 0] = 1
    Exp: [len ++] Result: [1]
    Exp: [ptr ++] Result: [536]
    Exp: [ptr *] Result: [(* char)[0x00000126]]
    Exp: [(* char)[0x00000126] != 0] Result: [1]
Condition: [*ptr != 0] = 1
    Exp: [len ++] Result: [2]
    Exp: [ptr ++] Result: [536]
    Exp: [ptr *] Result: [(* char)[0x00000127]]
    Exp: [(* char)[0x00000127] != 0] Result: [1]
Condition: [*ptr != 0] = 1
    Exp: [len ++] Result: [3]
    Exp: [ptr ++] Result: [536]
    Exp: [ptr *] Result: [(* char)[0x00000128]]
    Exp: [(* char)[0x00000128] != 0] Result: [1]
Condition: [*ptr != 0] = 1
    Exp: [len ++] Result: [4]
    Exp: [ptr ++] Result: [536]
    Exp: [ptr *] Result: [(* char)[0x00000129]]
    Exp: [(* char)[0x00000129] != 0] Result: [1]
Condition: [*ptr != 0] = 1
    Exp: [len ++] Result: [5]
    Exp: [ptr ++] Result: [536]
    Exp: [ptr *] Result: [(* char)[0x0000012A]]
    Exp: [(* char)[0x0000012A] != 0] Result: [1]
Condition: [*ptr != 0] = 1
    Exp: [len ++] Result: [6]
    Exp: [ptr ++] Result: [536]
    Exp: [ptr *] Result: [(* char)[0x0000012B]]
    Exp: [(* char)[0x0000012B] != 0] Result: [0]
Condition: [*ptr != 0] = 0
End While.
return [7]
Free local variable: len Address: [0x00000208] Size:4
Free local variable: ptr Address: [0x00000218] Size:4
Call function "print" with [2] parameters
Declare [char * "$var_char_ptr_169$"] Address: [0x00000210] Size:4
Declare [int "$var_int_170$"] Address: [0x00000220] Size:4
Set parameter "$var_char_ptr_169$" : 236
Set parameter "$var_int_170$" : 7
print("str len=%i\n",7) output:{{str len=7}}
Free [char * "$var_char_ptr_169$"] Address: 00000210 Size: 4
Free [int "$var_int_170$"] Address: 00000220 Size: 4
Call function "strlen" with [1] parameters
Set parameter "str" : 496
Declare [int "len"] Address: [0x0000021C] Size:4
    Exp: [len = 0] Result: [len]
Declare [char * "ptr"] Address: [0x000001FC] Size:4
    Exp: [ptr = str] Result: [ptr]
Begin While.
    Exp: [ptr *] Result: [(* char)[0x00000124]]
    Exp: [(* char)[0x00000124] != 0] Result: [1]
Condition: [*ptr != 0] = 1
    Exp: [len ++] Result: [0]
    Exp: [ptr ++] Result: [508]
    Exp: [ptr *] Result: [(* char)[0x00000125]]
    Exp: [(* char)[0x00000125] != 0] Result: [1]
Condition: [*ptr != 0] = 1
    Exp: [len ++] Result: [1]
    Exp: [ptr ++] Result: [508]
    Exp: [ptr *] Result: [(* char)[0x00000126]]
    Exp: [(* char)[0x00000126] != 0] Result: [1]
Condition: [*ptr != 0] = 1
    Exp: [len ++] Result: [2]
    Exp: [ptr ++] Result: [508]
    Exp: [ptr *] Result: [(* char)[0x00000127]]
    Exp: [(* char)[0x00000127] != 0] Result: [1]
Condition: [*ptr != 0] = 1
    Exp: [len ++] Result: [3]
    Exp: [ptr ++] Result: [508]
    Exp: [ptr *] Result: [(* char)[0x00000128]]
    Exp: [(* char)[0x00000128] != 0] Result: [1]
Condition: [*ptr != 0] = 1
    Exp: [len ++] Result: [4]
    Exp: [ptr ++] Result: [508]
    Exp: [ptr *] Result: [(* char)[0x00000129]]
    Exp: [(* char)[0x00000129] != 0] Result: [1]
Condition: [*ptr != 0] = 1
    Exp: [len ++] Result: [5]
    Exp: [ptr ++] Result: [508]
    Exp: [ptr *] Result: [(* char)[0x0000012A]]
    Exp: [(* char)[0x0000012A] != 0] Result: [1]
Condition: [*ptr != 0] = 1
    Exp: [len ++] Result: [6]
    Exp: [ptr ++] Result: [508]
    Exp: [ptr *] Result: [(* char)[0x0000012B]]
    Exp: [(* char)[0x0000012B] != 0] Result: [0]
Condition: [*ptr != 0] = 0
End While.
return [7]
Free local variable: len Address: [0x0000021c] Size:4
Free local variable: ptr Address: [0x000001fc] Size:4
Call function "print" with [2] parameters
Declare [char * "$var_char_ptr_171$"] Address: [0x00000200] Size:4
Declare [int "$var_int_172$"] Address: [0x0000020C] Size:4
Set parameter "$var_char_ptr_171$" : 216
Set parameter "$var_int_172$" : 7
print("str2 len=%i\n",7) output:{{str2 len=7}}
Free [char * "$var_char_ptr_171$"] Address: 00000200 Size: 4
Free [int "$var_int_172$"] Address: 0000020C Size: 4
Declare [char * "str3"] Address: [0x00000230] Size:4
Call function "malloc" with [1] parameters
Declare [int "size"] Address: [0x00000204] Size:4
Set parameter "size" : 5
    Exp: [str3 = 564] Result: [str3]
    Exp: [str3 + 0] Result: [(char *)[0x00000234]]
    Exp: [(char *)[0x00000234] (] Result: [(char *)[0x00000234]]
    Exp: [(char *)[0x00000234] * ] Result: [(* char)[0x00000234]]
    Exp: [(* char)[0x00000234] = 97] Result: [(* char)[0x00000234]]
    Exp: [str3 + 1] Result: [(char *)[0x00000235]]
    Exp: [(char *)[0x00000235] (] Result: [(char *)[0x00000235]]
    Exp: [(char *)[0x00000235] * ] Result: [(* char)[0x00000235]]
    Exp: [(* char)[0x00000235] = 98] Result: [(* char)[0x00000235]]
    Exp: [str3 + 2] Result: [(char *)[0x00000236]]
    Exp: [(char *)[0x00000236] (] Result: [(char *)[0x00000236]]
    Exp: [(char *)[0x00000236] * ] Result: [(* char)[0x00000236]]
    Exp: [(* char)[0x00000236] = 0] Result: [(* char)[0x00000236]]
Call function "print" with [2] parameters
Declare [char * "$var_char_ptr_173$"] Address: [0x0000022C] Size:4
Declare [char * "$var_char_ptr_174$"] Address: [0x00000208] Size:4
Set parameter "$var_char_ptr_173$" : 200
Set parameter "$var_char_ptr_174$" : 560
print("str3=%s\n",520) output:{{str3=ab}}
Free [char * "$var_char_ptr_173$"] Address: 0000022C Size: 4
Free [char * "$var_char_ptr_174$"] Address: 00000208 Size: 4
Declare [int "iVal"] Address: [0x00000218] Size:4
    Exp: [iVal = 0] Result: [iVal]
if(input($var_char_ptr_96$,$var_char_ptr_98$,$var_char_ptr_100$,$var_char_ptr_102$,$var_char_ptr_104$,&iVal,))
    Exp: [iVal &] Result: [536]
Call function "input" with [6] parameters
Declare [char * "title"] Address: [0x00000210] Size:4
Declare [char * "message"] Address: [0x00000220] Size:4
Declare [char * "defValue"] Address: [0x0000021C] Size:4
Declare [char * "format"] Address: [0x000001FC] Size:4
Declare [char * "errMsg"] Address: [0x00000200] Size:4
Declare [char * "result"] Address: [0x0000020C] Size:4
Set parameter "title" : 184
Set parameter "message" : 156
Set parameter "defValue" : 148
Set parameter "format" : 140
Set parameter "errMsg" : 116
Set parameter "result" : 536
Condition=1
Then
Call function "print" with [2] parameters
Declare [char * "$var_char_ptr_175$"] Address: [0x0000023C] Size:4
Declare [int "$var_int_176$"] Address: [0x0000022C] Size:4
Set parameter "$var_char_ptr_175$" : 96
Set parameter "$var_int_176$" : 113
print("result=%i \n",113) output:{{result=113}}
Free [char * "$var_char_ptr_175$"] Address: 0000023C Size: 4
Free [int "$var_int_176$"] Address: 0000022C Size: 4
Begin Switch.
Call function "confirm" with [2] parameters
Declare [char * "title"] Address: [0x00000208] Size:4
Declare [char * "msg"] Address: [0x00000240] Size:4
Set parameter "title" : 84
Set parameter "msg" : 72
Condition: [confirm($var_char_ptr_109$,$var_char_ptr_111$,)] = 1
case 1
Call function "prompt" with [2] parameters
Declare [char * "title"] Address: [0x0000023C] Size:4
Declare [char * "msg"] Address: [0x0000022C] Size:4
Set parameter "title" : 28
Set parameter "msg" : 4
Break.
Break.
Free local variable: str Address: [0x00000224] Size:4
Free local variable: str2 Address: [0x000001f0] Size:4
Free local variable: str3 Address: [0x00000230] Size:4
Free local variable: iVal Address: [0x00000218] Size:4
Free local variable: global_a Address: [0x000001a0] Size:4
Free local variable: global_b Address: [0x000001a4] Size:4
Free local variable: global_c Address: [0x000001a8] Size:4
Free local variable: global_d Address: [0x000001ac] Size:4
Free local variable: global_e Address: [0x000001b0] Size:4
Free local variable: global_f Address: [0x000001b4] Size:4
Free local variable: global_g Address: [0x000001b8] Size:4
Free local variable: global_h Address: [0x000001bc] Size:4
Free local variable: global_i Address: [0x000001c0] Size:4
Free local variable: global_j Address: [0x000001c4] Size:4
Free local variable: global_k Address: [0x000001c8] Size:4
Free local variable: global_l Address: [0x000001cc] Size:4
Free local variable: global_m Address: [0x000001d0] Size:4
Free local variable: global_n Address: [0x000001d4] Size:4
Free local variable: global_o Address: [0x000001d8] Size:4
Free local variable: global_p Address: [0x000001dc] Size:4
Free local variable: global_q Address: [0x000001e0] Size:4
Free local variable: global_r Address: [0x000001e4] Size:4
Free local variable: global_ch Address: [0x000001e8] Size:4
Free local variable: global_str Address: [0x000001ec] Size:4

================================ Program End ================================

Time consumption: 10.0877237 sec

The thread 'vshost.RunParkingWindow' (0x45bc) has exited with code 0 (0x0).
The thread '<No Name>' (0x485c) has exited with code 0 (0x0).
Free constant variable: $var_char_ptr_121$ Address: [0x00000004]->[0x00000008] Size: 20
Free constant variable: $var_char_ptr_119$ Address: [0x0000001c]->[0x00000020] Size: 8
Free constant variable: $var_char_ptr_116$ Address: [0x00000028]->[0x0000002c] Size: 16
Free constant variable: $var_char_ptr_114$ Address: [0x0000003c]->[0x00000040] Size: 8
Free constant variable: $var_char_ptr_111$ Address: [0x00000048]->[0x0000004c] Size: 8
Free constant variable: $var_char_ptr_109$ Address: [0x00000054]->[0x00000058] Size: 8
Free constant variable: $var_char_ptr_107$ Address: [0x00000060]->[0x00000064] Size: 16
Free constant variable: $var_char_ptr_104$ Address: [0x00000074]->[0x00000078] Size: 20
Free constant variable: $var_char_ptr_102$ Address: [0x0000008c]->[0x00000090] Size: 4
Free constant variable: $var_char_ptr_100$ Address: [0x00000094]->[0x00000098] Size: 4
Free constant variable: $var_char_ptr_98$ Address: [0x0000009c]->[0x000000a0] Size: 24
Free constant variable: $var_char_ptr_96$ Address: [0x000000b8]->[0x000000bc] Size: 12
Free constant variable: $var_char_ptr_93$ Address: [0x000000c8]->[0x000000cc] Size: 12
Free constant variable: $var_char_ptr_86$ Address: [0x000000d8]->[0x000000dc] Size: 16
Free constant variable: $var_char_ptr_83$ Address: [0x000000ec]->[0x000000f0] Size: 16
Free constant variable: $var_char_ptr_80$ Address: [0x00000100]->[0x00000104] Size: 12
Free constant variable: $var_char_ptr_77$ Address: [0x00000110]->[0x00000114] Size: 12
Free constant variable: $var_char_ptr_73$ Address: [0x00000120]->[0x00000124] Size: 8
Free constant variable: $var_char_ptr_59$ Address: [0x0000012c]->[0x00000130] Size: 8
Free constant variable: $var_char_ptr_54$ Address: [0x00000138]->[0x0000013c] Size: 16
Free constant variable: $var_char_ptr_51$ Address: [0x0000014c]->[0x00000150] Size: 28
Free constant variable: $var_char_ptr_45$ Address: [0x0000016c]->[0x00000170] Size: 28
Free constant variable: $var_char_ptr_21$ Address: [0x0000018c]->[0x00000190] Size: 16
Free function "main" arguments, count: 0
Free function "malloc" arguments, count: 1
    Free argument "size" Address: [0x00000204] Size: 4
Free function "input" arguments, count: 6
    Free argument "title" Address: [0x00000210] Size: 4
    Free argument "message" Address: [0x00000220] Size: 4
    Free argument "defValue" Address: [0x0000021c] Size: 4
    Free argument "format" Address: [0x000001fc] Size: 4
    Free argument "errMsg" Address: [0x00000200] Size: 4
    Free argument "result" Address: [0x0000020c] Size: 4
Free function "confirm" arguments, count: 2
    Free argument "title" Address: [0x00000208] Size: 4
    Free argument "msg" Address: [0x00000240] Size: 4
Free function "prompt" arguments, count: 2
    Free argument "title" Address: [0x0000023c] Size: 4
    Free argument "msg" Address: [0x0000022c] Size: 4
Free function "vararg" arguments, count: 1
    Free argument "argIdx" Address: [0x00000214] Size: 4
Free function "fork2" arguments, count: 2
    Free argument "a" Address: [0x000001f8] Size: 4
    Free argument "b" Address: [0x000001f4] Size: 4
Free function "strlen" arguments, count: 1
    Free argument "str" Address: [0x00000228] Size: 4

完整的工程在这里。
All right. Github has been banned! What a fork!

正文完
 0