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);
+}
+