annotate CbC-examples/arg.c @ 126:5d30d517ebed

fix example
author mir3636
date Sun, 08 Apr 2018 20:55:21 +0900
parents a5786e986ad2
children 26042f4007d5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
78
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 #include "stdio.h"
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 #define __environment _CbC_environment
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 #define __return _CbC_return
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 struct arg {
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 int a0;int a1;int a2;int a3;int a4;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 };
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 extern void exit(int);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 void *exit_env;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 __code (*exit___code)();
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15
126
5d30d517ebed fix example
mir3636
parents: 84
diff changeset
16 #ifndef __llvm__
5d30d517ebed fix example
mir3636
parents: 84
diff changeset
17 __code carg2(int arg0,int arg1,int arg2,int arg3,int arg4,__code(*exit1)(int, void*),void *env);
5d30d517ebed fix example
mir3636
parents: 84
diff changeset
18 __code cargs(struct arg args0,__code exit1(int, void*),void *env);
5d30d517ebed fix example
mir3636
parents: 84
diff changeset
19 __code carg4(struct arg args0,struct arg args1,int i, int j,int k,int l);
5d30d517ebed fix example
mir3636
parents: 84
diff changeset
20 __code carg5(struct arg args0,struct arg args1,int i, int j,int k,int l);
5d30d517ebed fix example
mir3636
parents: 84
diff changeset
21 __code carg6(int i, int j,int k,int l,struct arg args0);
5d30d517ebed fix example
mir3636
parents: 84
diff changeset
22 #endif
5d30d517ebed fix example
mir3636
parents: 84
diff changeset
23
84
a5786e986ad2 modify gcc/c-parser.c
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 78
diff changeset
24 __code carg1(int arg0,int arg1,int arg2,int arg3,int arg4,__code(*exit1)(int, void*),void *env)
78
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 {
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 printf("#0017:arg1: %d %d %d %d %d : %x %x\n",arg0,arg1,arg2,arg3,arg4,exit1==exit___code,env==exit_env);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 goto carg2(arg1,arg2,arg3,arg4,arg0,exit1,env);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 }
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29
84
a5786e986ad2 modify gcc/c-parser.c
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 78
diff changeset
30 __code carg2(int arg0,int arg1,int arg2,int arg3,int arg4,__code(*exit1)(int, void*),void *env)
78
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 {
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 struct arg args0;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 printf("#0024:arg1: %d %d %d %d %d : %x %x\n",arg0,arg1,arg2,arg3,arg4,exit1==exit___code,env==exit_env );
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 args0.a0 = arg0;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 args0.a1 = arg1;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 args0.a2 = arg2;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 args0.a3 = arg3;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 args0.a4 = arg4;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 goto cargs(args0,exit1,env);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 }
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41
84
a5786e986ad2 modify gcc/c-parser.c
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 78
diff changeset
42 __code cargs(struct arg args0,__code exit1(int, void*),void *env)
78
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 {
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 printf("#0035:args: %d %d %d %d %d : %x %x\n",
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 args0.a0,args0.a1,args0.a2,args0.a3,args0.a4,
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 exit1==exit___code,env==exit_env);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 // goto exit1(321),env;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 goto (*exit1)(0,env);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 }
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 __code carg3(struct arg args0,struct arg args1,int i, int j,int k,int l)
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 {
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 printf("#0045:args3: %d %d %d %d %d : %x %x %x %x\n",
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 args0.a0,args0.a1,args0.a2,args0.a3,args0.a4,i,j,k,l);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 printf("#0047:args3: args0 %d %d %d %d %d : args1 %d %d %d %d %d : %x %x %x %x\n",
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 args0.a0,args0.a1,args0.a2,args0.a3,args0.a4,
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 args1.a0,args1.a1,args1.a2,args1.a3,args1.a4,
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 i,j,k,l);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 if (args0.a0==args1.a0) exit(0);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 goto carg4(args0,args1,j,k,l,i);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 }
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 __code carg4(struct arg args0,struct arg args1,int i, int j,int k,int l)
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 {
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 printf("#0057:args4: %d %d %d %d %d : %x %x %x %x\n",
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 args0.a0,args0.a1,args0.a2,args0.a3,args0.a4,i,j,k,l);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 goto carg5(args1,args0,j,k,l,i);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 }
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 __code carg5(struct arg args0,struct arg args1,int i, int j,int k,int l)
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 {
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 printf("#0064:args5: %d %d %d %d %d : %x %x %x %x\n",
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 args0.a0,args0.a1,args0.a2,args0.a3,args0.a4,i,j,k,l);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 goto carg6(i,j,k,l,args0);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 }
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
77
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 __code carg6(int i, int j,int k,int l,struct arg args0)
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 {
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 printf("#0071:args6: %d %d %d %d %d : %x %x %x %x\n",
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 args0.a0,args0.a1,args0.a2,args0.a3,args0.a4,i,j,k,l);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 goto carg3(args0,args0,i,j,k,l);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 }
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
84
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 int main1(int n)
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 {
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 goto carg1(0,1,2,3,4,exit___code=__return,exit_env=__environment);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 return n;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 }
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
90
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 struct arg a00;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 struct arg a01;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94 int main( int ac, char *av[])
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 {
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
96 int n;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 n = main1(123);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 printf("#0089:321=%d\n",n);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
99
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
100 a00.a0 = 11;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
101 a00.a1 = 22;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
102 a00.a2 = 33;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
103 a00.a3 = 44;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 a00.a4 = 55;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
105 a01.a0 = 66;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
106 a01.a1 = 77;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
107 a01.a2 = 88;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
108 a01.a3 = 99;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
109 a01.a4 = 10;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 goto carg3(a00,a01,1,2,3,4);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
111 }
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
112