78
|
1 /* easy test */
|
|
2 #define __environment _CbC_environment
|
|
3 #define __return _CbC_return
|
|
4
|
|
5
|
|
6 extern int printf(const char *,...);
|
|
7
|
128
|
8 #if 0 //currently gcc version dose not support void type full continuation.
|
126
|
9
|
128
|
10 __code code0(int ac,char *av[],__code (*ret)(void*));
|
|
11 __code code1(int ac,char *av[],__code (*exit)(void*));
|
|
12 __code code3(char a,char b,int c,int d,int e,int f);
|
|
13 __code code4(char a,char b,int c,int d,int e,int f);
|
|
14
|
|
15 __code (*ret)(void *);
|
78
|
16 void *env;
|
128
|
17 __code exit1(void *);
|
78
|
18
|
126
|
19 void main0(ac,av)
|
78
|
20 int ac;
|
|
21 char *av[];
|
|
22 {
|
|
23 ret = __return;
|
|
24 env = __environment;
|
|
25 printf("#0017:main0 %d start.\n",ac);
|
|
26 if (ac>=1)
|
|
27 goto code0(ac,av,__return);
|
|
28 goto code1(ac,av,exit1);
|
|
29 // not reached. (warning?)
|
|
30 printf("#0022:main0 %d end.\n",ac);
|
|
31 }
|
|
32
|
128
|
33 __code exit1(void *env)
|
78
|
34 {
|
|
35 // exit(0);
|
|
36 goto code3(0,1,2,3,4,5);
|
|
37 }
|
|
38
|
|
39 __code code3(a,b,c,d,e,f)
|
|
40 char a,b;
|
|
41 int c,d,e,f;
|
|
42 {
|
|
43 printf("#0035:code3: %d %d %d %d %d %d\n",a,b,c,d,e,f);
|
|
44 if(a<10)
|
|
45 goto code3(a+1,b,c,d,e,f);
|
|
46 else
|
|
47 goto code4(a+3,b+3,c+3,d+3,e+3,f+3);
|
|
48 }
|
|
49
|
|
50 __code code4(a,b,c,d,e,f)
|
|
51 char a,b;
|
|
52 int c,d,e,f;
|
|
53 {
|
|
54 int i=1,j=2;
|
|
55 printf("#0047:code4: %d %d %d %d %d %d\n",a,b,c,d,e,f);
|
|
56 if(a<20) // cyclic binary dependency
|
|
57 goto code3(a+b,b+c,c+d,d+e,e+f,f+a);
|
|
58 else if(a<30)
|
|
59 goto code3(a,b,c,d,e,f);
|
|
60 else if(a<40) // cyclic dependency
|
|
61 goto code3(b,c,a,e,f,d);
|
|
62 else if(a<50)
|
|
63 goto code4(a+i,b+j,c+i,d+3,e+3,f+3);
|
128
|
64 else goto ret(env);
|
78
|
65 }
|
|
66
|
|
67 __code code0(ac,av,ret)
|
|
68 int ac;
|
|
69 char *av[];
|
128
|
70 __code (*ret)(void *env);
|
78
|
71 {
|
|
72 goto code1(ac,av,ret);
|
|
73 }
|
|
74
|
|
75 __code code1(ac,av,exit)
|
|
76 int ac;
|
128
|
77 __code (*exit)(void*);
|
78
|
78 char *av[];
|
|
79 {
|
128
|
80 __code (*f)(void *);
|
78
|
81 printf("#0073:code1: %d\n",ac);
|
|
82 f = exit;
|
|
83 if (ac>3)
|
|
84 goto code1(ac,av,f);
|
|
85 else if (ac>2)
|
128
|
86 goto code1(ac,av,f);
|
78
|
87 else
|
128
|
88 goto (*f)(env);
|
78
|
89 }
|
|
90
|
128
|
91 #endif
|
|
92
|
|
93 int main(int ac,char *av[])
|
78
|
94 {
|
128
|
95 // main0(1,av);
|
78
|
96 printf("#0087:main continue.\n");
|
128
|
97 // main0(0,av);
|
78
|
98 printf("#0089:main end.\n");
|
|
99 return 0;
|
|
100 }
|
|
101
|
|
102 /* end */
|