annotate CbC-examples/tmpa.c @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 365b84b6fe04
children
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 #define __environment _CbC_environment
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 #define __return _CbC_return
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 #include <stdio.h>
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 struct enemy{
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 int charno; // image number
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 float x; // x location
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 float y; // y location
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 int ap; // armor point
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 };
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 void
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 print_param(struct enemy *e)
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 {
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 printf("#0014:charno:%d x,y:%f,%f hp:%d\n",
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 e->charno,e->x,e->y,e->ap);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 }
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 typedef struct{
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 char dest;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 int VF01[4];
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 __code (*ret)();
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 void *env;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 } interface;
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 __code a0(interface a) {
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 printf("#0026:%d\n",a.dest);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 goto a.ret(0,a.env);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 }
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30
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 int main(int argc,char *argv[])
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 {
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 struct enemy e;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 #if 0
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 interface args = {15,{0,0,0,0},return,environment};
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 #else
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 interface args = {15,{0,0,0,0},0,0};
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 args.ret = __return;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 args.env = __environment;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 #endif
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 e.charno=5; e.x=50.0; e.y=30.0; e.ap=100;
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 print_param(&e);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 printf("#0045:%d %d\n",args.VF01[2],args.VF01[1]);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 goto a0(args);
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 }
365b84b6fe04 more examples
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49