Mercurial > hg > CbC > CbC_gcc
diff CbC-examples/tmpa.c @ 78:365b84b6fe04
more examples
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 20 Sep 2011 17:32:20 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CbC-examples/tmpa.c Tue Sep 20 17:32:20 2011 +0900 @@ -0,0 +1,49 @@ +#define __environment _CbC_environment +#define __return _CbC_return + +#include <stdio.h> + +struct enemy{ + int charno; // image number + float x; // x location + float y; // y location + int ap; // armor point +}; +void +print_param(struct enemy *e) +{ + printf("#0014:charno:%d x,y:%f,%f hp:%d\n", + e->charno,e->x,e->y,e->ap); +} + +typedef struct{ + char dest; + int VF01[4]; + __code (*ret)(); + void *env; +} interface; + +__code a0(interface a) { + printf("#0026:%d\n",a.dest); + goto a.ret(0,a.env); +} + + +int main(int argc,char *argv[]) +{ + struct enemy e; +#if 0 + interface args = {15,{0,0,0,0},return,environment}; +#else + interface args = {15,{0,0,0,0},0,0}; + args.ret = __return; + args.env = __environment; +#endif + + e.charno=5; e.x=50.0; e.y=30.0; e.ap=100; + print_param(&e); + + printf("#0045:%d %d\n",args.VF01[2],args.VF01[1]); + goto a0(args); +} +