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