Mercurial > hg > CbC > old > device
annotate test/call.c @ 838:c7c19e5aefe7
CAST (left value) and BITFIELD
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 03 Dec 2010 22:06:34 +0900 |
parents | c2c709727221 |
children |
rev | line source |
---|---|
689 | 1 #ifndef INLINE |
2 #define INLINE | |
3 #endif | |
4 | |
467 | 5 int printf(const char *format, ...); |
6 | |
689 | 7 INLINE |
94 | 8 int |
9 a0(int i); | |
79 | 10 |
11 int (*conv)(int); | |
12 | |
689 | 13 INLINE |
482 | 14 int |
79 | 15 a0(int i) |
16 { | |
17 return i+3; | |
18 } | |
19 | |
689 | 20 INLINE |
482 | 21 int |
79 | 22 a1(int i) |
23 { | |
24 return i-3; | |
25 } | |
26 | |
689 | 27 INLINE |
482 | 28 int |
79 | 29 a2(int i,int conv(int)) |
30 { | |
31 return conv(i); | |
32 } | |
33 | |
689 | 34 INLINE |
482 | 35 int |
79 | 36 a3(int i,int (*conv)(int)) |
37 { | |
38 return conv(i); | |
39 } | |
40 | |
689 | 41 INLINE |
482 | 42 int |
79 | 43 a4(int i,int conv(int)) |
44 { | |
45 return (*conv)(i); | |
46 } | |
47 | |
689 | 48 INLINE |
482 | 49 static |
50 int a5(int i,int (*conv)(int)) | |
79 | 51 { |
52 return (*conv)(i); | |
53 } | |
54 | |
482 | 55 typedef int (*fptr)(int,int (*)(int)); |
56 | |
57 unsigned long addrs[]={ | |
58 (unsigned long)&a0, | |
59 (unsigned long)&a5, | |
60 (unsigned long)a0, | |
61 (unsigned long)a5, | |
62 0, | |
63 }; | |
64 | |
65 fptr faddrs[]={ | |
66 &a2, | |
67 &a5, | |
68 a2, | |
69 a5, | |
70 0, | |
71 }; | |
72 | |
73 | |
688 | 74 |
689 | 75 INLINE |
688 | 76 void print( int i, void (*print)(int i,void (*)()) ); |
77 | |
689 | 78 INLINE |
688 | 79 void print0( int i, void (*print1)(int i,void (*)()) ) |
80 { | |
748
c2c709727221
i64 continue... basic.s assembled.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
689
diff
changeset
|
81 printf("#0080:print0 %d %d\n",print1 == print,i); |
688 | 82 } |
83 | |
689 | 84 INLINE |
688 | 85 void print( int i, void (*print)(int i,void (*)()) ) |
86 { | |
87 print0(i,print); | |
88 (*print)(i,print); | |
89 } | |
90 | |
689 | 91 INLINE |
688 | 92 void pppp( void (*pppp)(void (*)()) ); |
93 | |
689 | 94 INLINE |
688 | 95 void pppp0( void (*pppp1)(void (*)()) ) |
96 { | |
748
c2c709727221
i64 continue... basic.s assembled.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
689
diff
changeset
|
97 printf("#0096:pppp0 %d\n",pppp1 == pppp); |
688 | 98 } |
99 | |
689 | 100 INLINE |
688 | 101 void pppp( void (*pppp)(void (*)()) ) |
102 { | |
103 pppp0(pppp); | |
104 (*pppp)(pppp); | |
105 } | |
106 | |
483 | 107 int |
79 | 108 main(int ac,char *av[]) { |
109 int j,k; | |
110 conv = a0; | |
111 j = conv(3); | |
112 k = a2(4,a1); | |
748
c2c709727221
i64 continue... basic.s assembled.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
689
diff
changeset
|
113 printf("#0112:6 1 = %d %d\n",j,k); |
79 | 114 k = a3(4,a1); |
748
c2c709727221
i64 continue... basic.s assembled.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
689
diff
changeset
|
115 printf("#0114:6 1 = %d %d\n",j,k); |
79 | 116 k = a4(4,a1); |
748
c2c709727221
i64 continue... basic.s assembled.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
689
diff
changeset
|
117 printf("#0116:6 1 = %d %d\n",j,k); |
79 | 118 k = a5(4,a1); |
748
c2c709727221
i64 continue... basic.s assembled.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
689
diff
changeset
|
119 printf("#0118: 1 = %d %d\n",j,k); |
c2c709727221
i64 continue... basic.s assembled.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
689
diff
changeset
|
120 printf("#0119: 1 = %d\n",(unsigned long)a0 == addrs[0]); |
c2c709727221
i64 continue... basic.s assembled.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
689
diff
changeset
|
121 printf("#0120: 1 = %d\n",(unsigned long)a5 == addrs[1]); |
c2c709727221
i64 continue... basic.s assembled.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
689
diff
changeset
|
122 printf("#0121: 1 = %d\n",(unsigned long)a0 == addrs[2]); |
c2c709727221
i64 continue... basic.s assembled.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
689
diff
changeset
|
123 printf("#0122: 1 = %d\n",(unsigned long)a5 == addrs[3]); |
482 | 124 |
748
c2c709727221
i64 continue... basic.s assembled.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
689
diff
changeset
|
125 printf("#0124: 1 = %d\n",a2 == faddrs[0]); |
c2c709727221
i64 continue... basic.s assembled.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
689
diff
changeset
|
126 printf("#0125: 1 = %d\n",a5 == faddrs[1]); |
c2c709727221
i64 continue... basic.s assembled.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
689
diff
changeset
|
127 printf("#0126: 1 = %d\n",&a2 == faddrs[2]); |
c2c709727221
i64 continue... basic.s assembled.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
689
diff
changeset
|
128 printf("#0127: 1 = %d\n",&a5 == faddrs[3]); |
688 | 129 |
130 print(55,print0); | |
131 pppp(pppp0); | |
132 | |
172 | 133 return 0; |
79 | 134 } |