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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
689
baa67e2e54d2 *** empty log message ***
kono
parents: 688
diff changeset
1 #ifndef INLINE
baa67e2e54d2 *** empty log message ***
kono
parents: 688
diff changeset
2 #define INLINE
baa67e2e54d2 *** empty log message ***
kono
parents: 688
diff changeset
3 #endif
baa67e2e54d2 *** empty log message ***
kono
parents: 688
diff changeset
4
467
32737bad7489 fix list/tag interference
kono
parents: 427
diff changeset
5 int printf(const char *format, ...);
32737bad7489 fix list/tag interference
kono
parents: 427
diff changeset
6
689
baa67e2e54d2 *** empty log message ***
kono
parents: 688
diff changeset
7 INLINE
94
1ad7045741a7 float dbinop fix
kono
parents: 79
diff changeset
8 int
1ad7045741a7 float dbinop fix
kono
parents: 79
diff changeset
9 a0(int i);
79
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
10
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
11 int (*conv)(int);
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
12
689
baa67e2e54d2 *** empty log message ***
kono
parents: 688
diff changeset
13 INLINE
482
8370ba6e8557 *** empty log message ***
kono
parents: 467
diff changeset
14 int
79
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
15 a0(int i)
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
16 {
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
17 return i+3;
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
18 }
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
19
689
baa67e2e54d2 *** empty log message ***
kono
parents: 688
diff changeset
20 INLINE
482
8370ba6e8557 *** empty log message ***
kono
parents: 467
diff changeset
21 int
79
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
22 a1(int i)
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
23 {
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
24 return i-3;
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
25 }
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
26
689
baa67e2e54d2 *** empty log message ***
kono
parents: 688
diff changeset
27 INLINE
482
8370ba6e8557 *** empty log message ***
kono
parents: 467
diff changeset
28 int
79
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
29 a2(int i,int conv(int))
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
30 {
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
31 return conv(i);
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
32 }
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
33
689
baa67e2e54d2 *** empty log message ***
kono
parents: 688
diff changeset
34 INLINE
482
8370ba6e8557 *** empty log message ***
kono
parents: 467
diff changeset
35 int
79
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
36 a3(int i,int (*conv)(int))
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
37 {
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
38 return conv(i);
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
39 }
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
40
689
baa67e2e54d2 *** empty log message ***
kono
parents: 688
diff changeset
41 INLINE
482
8370ba6e8557 *** empty log message ***
kono
parents: 467
diff changeset
42 int
79
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
43 a4(int i,int conv(int))
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
44 {
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
45 return (*conv)(i);
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
46 }
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
47
689
baa67e2e54d2 *** empty log message ***
kono
parents: 688
diff changeset
48 INLINE
482
8370ba6e8557 *** empty log message ***
kono
parents: 467
diff changeset
49 static
8370ba6e8557 *** empty log message ***
kono
parents: 467
diff changeset
50 int a5(int i,int (*conv)(int))
79
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
51 {
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
52 return (*conv)(i);
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
53 }
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
54
482
8370ba6e8557 *** empty log message ***
kono
parents: 467
diff changeset
55 typedef int (*fptr)(int,int (*)(int));
8370ba6e8557 *** empty log message ***
kono
parents: 467
diff changeset
56
8370ba6e8557 *** empty log message ***
kono
parents: 467
diff changeset
57 unsigned long addrs[]={
8370ba6e8557 *** empty log message ***
kono
parents: 467
diff changeset
58 (unsigned long)&a0,
8370ba6e8557 *** empty log message ***
kono
parents: 467
diff changeset
59 (unsigned long)&a5,
8370ba6e8557 *** empty log message ***
kono
parents: 467
diff changeset
60 (unsigned long)a0,
8370ba6e8557 *** empty log message ***
kono
parents: 467
diff changeset
61 (unsigned long)a5,
8370ba6e8557 *** empty log message ***
kono
parents: 467
diff changeset
62 0,
8370ba6e8557 *** empty log message ***
kono
parents: 467
diff changeset
63 };
8370ba6e8557 *** empty log message ***
kono
parents: 467
diff changeset
64
8370ba6e8557 *** empty log message ***
kono
parents: 467
diff changeset
65 fptr faddrs[]={
8370ba6e8557 *** empty log message ***
kono
parents: 467
diff changeset
66 &a2,
8370ba6e8557 *** empty log message ***
kono
parents: 467
diff changeset
67 &a5,
8370ba6e8557 *** empty log message ***
kono
parents: 467
diff changeset
68 a2,
8370ba6e8557 *** empty log message ***
kono
parents: 467
diff changeset
69 a5,
8370ba6e8557 *** empty log message ***
kono
parents: 467
diff changeset
70 0,
8370ba6e8557 *** empty log message ***
kono
parents: 467
diff changeset
71 };
8370ba6e8557 *** empty log message ***
kono
parents: 467
diff changeset
72
8370ba6e8557 *** empty log message ***
kono
parents: 467
diff changeset
73
688
10c8eaf0f73b scope fix done.
kono
parents: 491
diff changeset
74
689
baa67e2e54d2 *** empty log message ***
kono
parents: 688
diff changeset
75 INLINE
688
10c8eaf0f73b scope fix done.
kono
parents: 491
diff changeset
76 void print( int i, void (*print)(int i,void (*)()) );
10c8eaf0f73b scope fix done.
kono
parents: 491
diff changeset
77
689
baa67e2e54d2 *** empty log message ***
kono
parents: 688
diff changeset
78 INLINE
688
10c8eaf0f73b scope fix done.
kono
parents: 491
diff changeset
79 void print0( int i, void (*print1)(int i,void (*)()) )
10c8eaf0f73b scope fix done.
kono
parents: 491
diff changeset
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
10c8eaf0f73b scope fix done.
kono
parents: 491
diff changeset
82 }
10c8eaf0f73b scope fix done.
kono
parents: 491
diff changeset
83
689
baa67e2e54d2 *** empty log message ***
kono
parents: 688
diff changeset
84 INLINE
688
10c8eaf0f73b scope fix done.
kono
parents: 491
diff changeset
85 void print( int i, void (*print)(int i,void (*)()) )
10c8eaf0f73b scope fix done.
kono
parents: 491
diff changeset
86 {
10c8eaf0f73b scope fix done.
kono
parents: 491
diff changeset
87 print0(i,print);
10c8eaf0f73b scope fix done.
kono
parents: 491
diff changeset
88 (*print)(i,print);
10c8eaf0f73b scope fix done.
kono
parents: 491
diff changeset
89 }
10c8eaf0f73b scope fix done.
kono
parents: 491
diff changeset
90
689
baa67e2e54d2 *** empty log message ***
kono
parents: 688
diff changeset
91 INLINE
688
10c8eaf0f73b scope fix done.
kono
parents: 491
diff changeset
92 void pppp( void (*pppp)(void (*)()) );
10c8eaf0f73b scope fix done.
kono
parents: 491
diff changeset
93
689
baa67e2e54d2 *** empty log message ***
kono
parents: 688
diff changeset
94 INLINE
688
10c8eaf0f73b scope fix done.
kono
parents: 491
diff changeset
95 void pppp0( void (*pppp1)(void (*)()) )
10c8eaf0f73b scope fix done.
kono
parents: 491
diff changeset
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
10c8eaf0f73b scope fix done.
kono
parents: 491
diff changeset
98 }
10c8eaf0f73b scope fix done.
kono
parents: 491
diff changeset
99
689
baa67e2e54d2 *** empty log message ***
kono
parents: 688
diff changeset
100 INLINE
688
10c8eaf0f73b scope fix done.
kono
parents: 491
diff changeset
101 void pppp( void (*pppp)(void (*)()) )
10c8eaf0f73b scope fix done.
kono
parents: 491
diff changeset
102 {
10c8eaf0f73b scope fix done.
kono
parents: 491
diff changeset
103 pppp0(pppp);
10c8eaf0f73b scope fix done.
kono
parents: 491
diff changeset
104 (*pppp)(pppp);
10c8eaf0f73b scope fix done.
kono
parents: 491
diff changeset
105 }
10c8eaf0f73b scope fix done.
kono
parents: 491
diff changeset
106
483
77cab9687d3f *** empty log message ***
kono
parents: 482
diff changeset
107 int
79
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
108 main(int ac,char *av[]) {
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
109 int j,k;
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
110 conv = a0;
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
111 j = conv(3);
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
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
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
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
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
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
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
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
8370ba6e8557 *** empty log message ***
kono
parents: 467
diff changeset
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
10c8eaf0f73b scope fix done.
kono
parents: 491
diff changeset
129
10c8eaf0f73b scope fix done.
kono
parents: 491
diff changeset
130 print(55,print0);
10c8eaf0f73b scope fix done.
kono
parents: 491
diff changeset
131 pppp(pppp0);
10c8eaf0f73b scope fix done.
kono
parents: 491
diff changeset
132
172
096559f07a70 some check
kono
parents: 94
diff changeset
133 return 0;
79
82d0e30f61dd *** empty log message ***
kono
parents:
diff changeset
134 }