annotate CbC-examples/test_func2code.c @ 21:959d4c8c8abc

add conv.c conv1.c
author kent <kent@cr.ie.u-ryukyu.ac.jp>
date Tue, 29 Sep 2009 20:15:16 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
21
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 #include<stdio.h>
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 #include<stdlib.h>
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 #define DEBUG 1
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 #ifdef DEBUG
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 #define log(f, args...) \
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 fprintf(stderr, "in %s: "f, __FUNCTION__, ## args)
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 #else
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 #define log(f, args...) ;
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 #endif
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
11
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 __code
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 exitter(int a)
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 {
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 exit(0);
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 }
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
17
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 __code
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 cs0(int x, int y)
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 {
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 log("x = %d, y = %d.\n", x, y);
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 log("will exit with code %d.\n", x*y);
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 goto exitter(x*y);
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 }
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 void
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 continuation(int a)
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 {
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 log("go code segment cs0\n");
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 goto cs0(a, a*20);
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 log("Error: continuation reachs bad region.\n");
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 }
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
33
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 int
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 main(int argc, char **argv)
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 {
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 int a;
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 if (argc>2) {
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 a = atoi(argv[1]);
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 }
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
41
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 continuation(20);
959d4c8c8abc add conv.c conv1.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 }