196
|
1 /* Micro-C Code Generator Checker */
|
|
2 /* $Id$ */
|
|
3
|
|
4 #define FLOAT_CODE 1
|
|
5 #define LONGLONG_CODE 1
|
|
6
|
|
7 // code_lvar(int e2,int creg)
|
197
|
8
|
|
9 void
|
|
10 code_lvar()
|
|
11 {
|
|
12 char c1,c2;
|
|
13 unsigned char uc1,uc2;
|
|
14 int i1,i2;
|
|
15 short s1,s2;
|
|
16 unsinged short us1,us2;
|
|
17 #if FLOAT_CODE
|
|
18 float f0,f1;
|
|
19 double d0,d1;
|
|
20 #endif
|
|
21 #if LONGLONG_CODE
|
|
22 long long l0,l1;
|
|
23 unsigned long long ul0,ul1;
|
|
24 #endif
|
|
25
|
|
26 i1 = 1; i2 = -2;
|
|
27 s1 = -1; s2 = -3; us1 = 65535; us2 = 65535;
|
|
28 printf("code_lvar %d %d %d %d %u %u\n",i1,i2,s1,s2,us1,us2);
|
|
29 c1 = -1; c2 = -3; uc1 = 65535; uc2 = 65535;
|
|
30 printf("code_lvar %d %d %u %u\n",c1,c2,uc1,uc2);
|
|
31 #if FLOAT_CODE
|
|
32 f0 = 0.0; f1 = 0.2;
|
|
33 d0 = 10; d1 = 10e10;
|
|
34 printf("code_lvar float %f %f %g %g\n",i1,i2,f0,f1,d0,d1);
|
|
35 #endif
|
|
36 #if LOGNLONG_CODE
|
|
37 l0 = 123123123LL;
|
|
38 l1 = 123123123LL;
|
|
39 ul0 = 123123123LL;
|
|
40 ul1 = 123123123LL;
|
|
41 printf("code_lvar long long %ll %ll %ull %ull\n",i1,i2,f0,f1,d0,d1);
|
|
42 #endif
|
|
43 }
|
|
44
|
196
|
45 // code_label(int labelno)
|
197
|
46 void
|
|
47 code_label()
|
|
48 {
|
|
49 goto hoge;
|
|
50 hage:
|
|
51 goto hage;
|
|
52 hoge:
|
|
53 printf("code_label done\n");
|
|
54 }
|
|
55
|
196
|
56 // code_gvar(int e1,int creg)
|
|
57 // code_rgvar(int e1,int creg)
|
|
58 // code_crgvar(int e1,int creg,int sign,int sz)
|
197
|
59
|
|
60 char c1,c2;
|
|
61 unsigned char uc1,uc2;
|
|
62 static char s_c1,s_c2;
|
|
63 static unsigned char s_uc1,s_uc2;
|
|
64 int i1,i2;
|
|
65 short s1,s2;
|
|
66 unsinged short us1,us2;
|
|
67 static int s_i1,s_i2;
|
|
68 static short s_s1,s_s2;
|
|
69 static unsinged short s_us1,s_us2;
|
|
70 #if FLOAT_CODE
|
|
71 float f0,f1;
|
|
72 double d0,d1;
|
|
73 static float s_f0,s_f1;
|
|
74 static double s_d0,s_d1;
|
|
75 #endif
|
|
76 #if LONGLONG_CODE
|
|
77 long long l0,l1;
|
|
78 unsigned long long ul0,ul1;
|
|
79 static long long s_l0,s_l1;
|
|
80 static unsigned long long s_ul0,s_ul1;
|
|
81 #endif
|
|
82
|
|
83 void
|
|
84 code_gvar()
|
|
85 {
|
|
86 i1 = 1; i2 = -2;
|
|
87 s1 = -1; s2 = -3; us1 = 65535; us2 = 65535;
|
|
88 printf("code_gvar %d %d %u %u %u %u\n",i1,i2,s1,s2,us1,us2);
|
|
89 c1 = -1; c2 = -3; uc1 = 65535; uc2 = 65535;
|
|
90 printf("code_gvar %d %d %u %u\n",c1,c2,uc1,uc2);
|
|
91 #if FLOAT_CODE
|
|
92 f0 = 0.0; f1 = 0.2;
|
|
93 d0 = 10; d1 = 10e10;
|
|
94 printf("code_gvar float %f %f %g %g\n",i1,i2,f0,f1,d0,d1);
|
|
95 #endif
|
|
96 #if LOGNLONG_CODE
|
|
97 l0 = 123123123LL;
|
|
98 l1 = 123123123LL;
|
|
99 ul0 = 123123123LL;
|
|
100 ul1 = 123123123LL;
|
|
101 printf("code_gvar long long %ll %ll %ull %ull\n",i1,i2,f0,f1,d0,d1);
|
|
102 #endif
|
|
103 s_i1 = 1; s_i2 = 2;
|
|
104 s_s1 = -1; s_s2 = -3; s_us1 = 65535; s_us2 = 65535;
|
|
105 printf("code_gvar %d %d %u %u %u %u\n",s_i1,s_i2,s1,s_s2,s_us1,s_us2);
|
|
106 s_c1 = -1; s_c2 = -3; s_uc1 = 65535; s_uc2 = 65535;
|
|
107 printf("code_gvar %d %d %u %u\n",s_c1,s_c2,s_uc1,s_uc2);
|
|
108 #if FLOAT_CODE
|
|
109 s_f0 = 0.0; s_f1 = 0.2;
|
|
110 s_d0 = 10; s_d1 = 10e10;
|
|
111 printf("code_gvar float %f %f %g %g\n",s_i1,s_i2,s_f0,s_f1,s_d0,s_d1);
|
|
112 #endif
|
|
113 #if LOGNLONG_CODE
|
|
114 l0 = 123123123LL;
|
|
115 l1 = 123123123LL;
|
|
116 ul0 = 123123123LL;
|
|
117 ul1 = 123123123LL;
|
|
118 printf("code_gvar long long %ll %ll %ull %ull\n",s_i1,s_i2,s_f0,s_f1,s_d0,s_d1);
|
|
119 #endif
|
|
120 }
|
|
121
|
196
|
122 // code_register(int e2,int creg)
|
197
|
123
|
|
124 code_register()
|
|
125 {
|
|
126 register char c1,c2;
|
|
127 register unsigned char uc1,uc2;
|
|
128 register int i1,i2;
|
|
129 register short s1,s2;
|
|
130 register unsinged short us1,us2;
|
|
131 #if FLOAT_CODE
|
|
132 register float f0,f1;
|
|
133 register double d0,d1;
|
|
134 #endif
|
|
135 #if LONGLONG_CODE
|
|
136 register long long l0,l1;
|
|
137 register unsigned long long ul0,ul1;
|
|
138 #endif
|
|
139
|
|
140 i1 = 1; i2 = -2;
|
|
141 s1 = -1; s2 = -3; us1 = 65535; us2 = 65535;
|
|
142 printf("code_lvar %d %d %u %u %u %u\n",i1,i2,s1,s2,us1,us2);
|
|
143 c1 = -1; c2 = -3; uc1 = 65535; uc2 = 65535;
|
|
144 printf("code_gvar %d %d %u %u\n",c1,c2,uc1,uc2);
|
|
145 #if FLOAT_CODE
|
|
146 f0 = 0.0; f1 = 0.2;
|
|
147 d0 = 10; d1 = 10e10;
|
|
148 printf("code_lvar float %f %f %g %g\n",i1,i2,f0,f1,d0,d1);
|
|
149 #endif
|
|
150 #if LOGNLONG_CODE
|
|
151 l0 = 123123123LL;
|
|
152 l1 = 123123123LL;
|
|
153 ul0 = 123123123LL;
|
|
154 ul1 = 123123123LL;
|
|
155 printf("code_lvar long long %ll %ll %ull %ull\n",i1,i2,f0,f1,d0,d1);
|
|
156 #endif
|
|
157 }
|
|
158
|
196
|
159 // code_fname(NMTBL *n,int creg)
|
197
|
160
|
|
161 code_fname()
|
|
162 {
|
|
163 int i,j;
|
|
164 i = (int)code_fname;
|
|
165 j = (int)code_register;
|
|
166 printf("code_fname %d\n",i==j);
|
|
167 }
|
|
168
|
|
169
|
196
|
170 // code_neg(int creg)
|
197
|
171 void
|
|
172 code_neg()
|
|
173 {
|
|
174 int i,j;
|
|
175 i = 123123123;j = -32423;
|
|
176 printf("code_neg %d %d\n",-i,-j);
|
|
177 }
|
|
178
|
196
|
179 // code_not(int creg)
|
197
|
180 void
|
|
181 code_not()
|
|
182 {
|
|
183 int i,j;
|
|
184 i = 123123123;j = 0;
|
|
185 printf("code_neg %d %d\n",~i,~j);
|
|
186 }
|
|
187
|
196
|
188 // code_lnot(int creg)
|
197
|
189 void
|
|
190 code_lnot()
|
|
191 {
|
|
192 int i,j;
|
|
193 i = 123123123;j = 0;
|
|
194 printf("code_neg %d %d\n",!i,!j);
|
|
195 }
|
|
196
|
196
|
197 // code_preinc(int e1,int e2,int dir,int sign,int sz,int reg)
|
197
|
198 void
|
|
199 code_preinc()
|
|
200 {
|
|
201 int i,j;
|
|
202 i = 123123123;j = 0;
|
|
203 printf("code_preinc %d %d\n",++i,--j);
|
|
204 }
|
|
205
|
196
|
206 // code_postinc(int e1,int e2,int dir,int sign,int sz,int reg)
|
197
|
207 void
|
|
208 code_postinc()
|
|
209 {
|
|
210 int i,j;
|
|
211 i = 123123123;j = 0;
|
|
212 printf("code_preinc %d %d\n",i++,j--);
|
|
213 }
|
|
214
|
196
|
215 // code_return(int creg)
|
197
|
216
|
|
217 int
|
|
218 code_return_int()
|
|
219 {
|
|
220 return 1;
|
|
221 }
|
|
222
|
|
223 float
|
|
224 code_return_float()
|
|
225 {
|
|
226 return 1.0;
|
|
227 }
|
|
228
|
|
229 double
|
|
230 code_return_double()
|
|
231 {
|
|
232 return 1.0;
|
|
233 }
|
|
234
|
|
235 long long
|
|
236 code_return_longlong()
|
|
237 {
|
|
238 return 10LL;
|
|
239 }
|
|
240
|
|
241 struct aa { char a[100]; } a0;
|
|
242 struct aa
|
|
243 code_return_struct()
|
|
244 {
|
|
245 a0.a[55]=3;
|
|
246 return a0;
|
|
247 }
|
|
248
|
196
|
249 // code_gt(int cond)
|
197
|
250
|
|
251 void code_gt()
|
|
252 {
|
|
253 if (i1>i2)
|
|
254 printf("code_gt 1\n");
|
|
255 else
|
|
256 printf("code_gt 0\n");
|
|
257 }
|
|
258
|
196
|
259 // code_ugt(int cond)
|
197
|
260 void code_ugt()
|
|
261 {
|
|
262 if (ui1>ui2)
|
|
263 printf("code_ugt 1\n");
|
|
264 else
|
|
265 printf("code_ugt 0\n");
|
|
266 }
|
|
267
|
196
|
268 // code_ge(int cond)
|
197
|
269 void code_ge()
|
|
270 {
|
|
271 if (i1>=i2)
|
|
272 printf("code_ge 1\n");
|
|
273 else
|
|
274 printf("code_ge 0\n");
|
|
275 }
|
|
276
|
196
|
277 // code_uge(int cond)
|
197
|
278 void code_uge()
|
|
279 {
|
|
280 if (ui1>=ui2)
|
|
281 printf("code_uge 1\n");
|
|
282 else
|
|
283 printf("code_uge 0\n");
|
|
284 }
|
|
285
|
196
|
286 // code_eq(int cond)
|
197
|
287 void code_eq()
|
|
288 {
|
|
289 if (ui1==ui2)
|
|
290 printf("code_eq 1\n");
|
|
291 else
|
|
292 printf("code_eq 0\n");
|
|
293 if (i1!=i2)
|
|
294 printf("code_neq 1\n");
|
|
295 else
|
|
296 printf("code_neq 0\n");
|
|
297 }
|
|
298
|
|
299 // code_bool(int e1)
|
|
300
|
|
301 void
|
|
302 code_bool()
|
|
303 {
|
|
304 printf("code_bool %d %d %d %d %d %d\n",
|
|
305 i1>i2,ui1>ui2,i1>=i2,ui1>=ui2,ui1==ui2,i1!=i2);
|
|
306 #if FLOAT_CODE
|
|
307 printf("code_bool float %d %d %d %d\n",
|
|
308 f0>f1,f0>=f1,f0==f1,f0!=f1);
|
|
309 printf("code_bool double %d %d %d %d\n",
|
|
310 d0>d1,d0>=d1,d0==d1,d0!=d1);
|
|
311 #endif
|
|
312 #if LONGLONG_CODE
|
|
313 printf("code_bool long long %d %d %d %d %d %d\n",
|
|
314 l1>l0,ul1>ul0,l1>=l0,ul1>=ul0,ul1==ul0,l1!=l0);
|
|
315 #endif
|
|
316 }
|
|
317
|
|
318 void
|
|
319 code_cmp()
|
|
320 {
|
|
321 char c1,c2;
|
|
322 unsigned char uc1,uc2;
|
|
323 int i1,i2;
|
|
324 short s1,s2;
|
|
325 unsinged short us1,us2;
|
|
326 #if FLOAT_CODE
|
|
327 float f0,f1;
|
|
328 double d0,d1;
|
|
329 #endif
|
|
330 #if LONGLONG_CODE
|
|
331 long long l0,l1;
|
|
332 unsigned long long ul0,ul1;
|
|
333 #endif
|
|
334 i1 = 1; i2 = -2;
|
|
335 s1 = -1; s2 = -3; us1 = 65535; us2 = 65535;
|
|
336 c1 = -1; c2 = -3; uc1 = 65535; uc2 = 65535;
|
|
337 i1 && printf("code_bool local 1\n");
|
|
338 s1 && printf("code_bool local 2\n");
|
|
339 us1 && printf("code_bool local 3\n");
|
|
340 c1 && printf("code_bool local 4\n");
|
|
341 uc1 && printf("code_bool local 5\n");
|
|
342 #if FLOAT_CODE
|
|
343 f0 = 0.0; f1 = 0.2;
|
|
344 d0 = 10; d1 = 10e10;
|
|
345 f0 && printf("code_bool local 6\n");
|
|
346 d0 && printf("code_bool local 7\n");
|
|
347 #endif
|
|
348 #if LOGNLONG_CODE
|
|
349 l0 = 123123123LL;
|
|
350 l1 = 123123123LL;
|
|
351 ul0 = 123123123LL;
|
|
352 ul1 = 123123123LL;
|
|
353 l0 && printf("code_bool local 8\n");
|
|
354 ul0 && printf("code_bool local 9\n");
|
|
355 #endif
|
|
356
|
|
357 }
|
|
358 void
|
|
359 code_cmp_global()
|
|
360 {
|
|
361 i1 = 1; i2 = -2;
|
|
362 s1 = -1; s2 = -3; us1 = 65535; us2 = 65535;
|
|
363 c1 = -1; c2 = -3; uc1 = 65535; uc2 = 65535;
|
|
364 i1 && printf("code_bool global 1\n");
|
|
365 s1 && printf("code_bool global 2\n");
|
|
366 us1 && printf("code_bool global 3\n");
|
|
367 c1 && printf("code_bool global 4\n");
|
|
368 uc1 && printf("code_bool global 5\n");
|
|
369 #if FLOAT_CODE
|
|
370 f0 = 0.0; f1 = 0.2;
|
|
371 d0 = 10; d1 = 10e10;
|
|
372 f0 && printf("code_bool global 6\n");
|
|
373 d0 && printf("code_bool global 7\n");
|
|
374 #endif
|
|
375 #if LOGNLONG_CODE
|
|
376 l0 = 123123123LL;
|
|
377 l1 = 123123123LL;
|
|
378 ul0 = 123123123LL;
|
|
379 ul1 = 123123123LL;
|
|
380 l0 && printf("code_bool global 8\n");
|
|
381 ul0 && printf("code_bool global 9\n");
|
|
382 #endif
|
|
383 }
|
|
384
|
|
385 void
|
|
386 code_cmp_register()
|
|
387 {
|
|
388 register char c1,c2;
|
|
389 register unsigned char uc1,uc2;
|
|
390 register int i1,i2;
|
|
391 register short s1,s2;
|
|
392 register unsinged short us1,us2;
|
|
393 #if FLOAT_CODE
|
|
394 register float f0,f1;
|
|
395 register double d0,d1;
|
|
396 #endif
|
|
397 #if LONGLONG_CODE
|
|
398 register long long l0,l1;
|
|
399 register unsigned long long ul0,ul1;
|
|
400 #endif
|
|
401 i1 = 1; i2 = -2;
|
|
402 s1 = -1; s2 = -3; us1 = 65535; us2 = 65535;
|
|
403 c1 = -1; c2 = -3; uc1 = 65535; uc2 = 65535;
|
|
404 i1 && printf("code_bool register 1\n");
|
|
405 s1 && printf("code_bool register 2\n");
|
|
406 us1 && printf("code_bool register 3\n");
|
|
407 c1 && printf("code_bool register 4\n");
|
|
408 uc1 && printf("code_bool register 5\n");
|
|
409 #if FLOAT_CODE
|
|
410 f0 = 0.0; f1 = 0.2;
|
|
411 d0 = 10; d1 = 10e10;
|
|
412 f0 && printf("code_bool register 6\n");
|
|
413 d0 && printf("code_bool register 7\n");
|
|
414 #endif
|
|
415 #if LOGNLONG_CODE
|
|
416 l0 = 123123123LL;
|
|
417 l1 = 123123123LL;
|
|
418 ul0 = 123123123LL;
|
|
419 ul1 = 123123123LL;
|
|
420 l0 && printf("code_bool register 8\n");
|
|
421 ul0 && printf("code_bool register 9\n");
|
|
422 #endif
|
|
423
|
|
424 }
|
|
425
|
|
426
|
196
|
427 // code_string(int e1,int creg)
|
197
|
428
|
|
429 void
|
|
430 code_string(int e1,int creg)
|
|
431 {
|
|
432 printf("code_string test\n");
|
|
433 }
|
|
434
|
196
|
435 // struct_push(int e4,int t,int arg)
|
197
|
436
|
|
437 struct aa
|
|
438 struct_push0(int i,struct aa a)
|
|
439 {
|
|
440 a.a[55]++;
|
|
441 if (i==0) {
|
|
442 return struct_push(1,a0);
|
|
443 }
|
|
444 return a0;
|
|
445 }
|
|
446
|
|
447 void
|
|
448 struct_push()
|
|
449 {
|
|
450 a0.a[55]=3;
|
|
451 a0 = struct_push0(0,a0);
|
|
452 printf("struct_push %d\n",a0.a[55]);
|
|
453 }
|
|
454
|
196
|
455 // code_jmp(char *s)
|
|
456 // code_indirect_jmp(int e2)
|
197
|
457
|
196
|
458 // code_rindirect(int e1, int offset, int us);
|
197
|
459 void
|
|
460 code_rindirect()
|
|
461 {
|
|
462 int i1,i2;
|
|
463 unsigned int ui1,ui2;
|
|
464 int *pi1,*pi2;
|
|
465 unsigned int *pui1,*pui2;
|
|
466
|
|
467 i1 = -555; i2= 555;
|
|
468 ui1 = 632423423; ui2= 32394234;
|
|
469 pi1 = &i1;
|
|
470 pi2 = &i2;
|
|
471 pui1 = &ui1;
|
|
472 pui2 = &ui2;
|
|
473 printf("code_rindirect %d %d %u %u\n",*pi1,*pi2,*pui1,*pui2);
|
|
474 }
|
|
475
|
196
|
476 // code_crindirect(int e1, int offset, int us);
|
197
|
477 void
|
|
478 code_crindirect()
|
|
479 {
|
|
480 char i1,i2;
|
|
481 unsigned char ui1,ui2;
|
|
482 char *pi1,*pi2;
|
|
483 unsigned char *pui1,*pui2;
|
|
484
|
|
485 i1 = -55; i2= 55;
|
|
486 ui1 = 200; ui2= 128;
|
|
487 pi1 = &i1;
|
|
488 pi2 = &i2;
|
|
489 pui1 = &ui1;
|
|
490 pui2 = &ui2;
|
|
491 printf("code_cindirect %d %d %u %u\n",*pi1,*pi2,*pui1,*pui2);
|
|
492 }
|
|
493
|
196
|
494 // code_srindirect(int e1, int offset, int us);
|
197
|
495 void
|
|
496 code_srindirect()
|
|
497 {
|
|
498 short i1,i2;
|
|
499 unsigned short ui1,ui2;
|
|
500 short *pi1,*pi2;
|
|
501 unsigned short *pui1,*pui2;
|
|
502
|
|
503 i1 = -55; i2= 55;
|
|
504 ui1 = 200; ui2= 128;
|
|
505 pi1 = &i1;
|
|
506 pi2 = &i2;
|
|
507 pui1 = &ui1;
|
|
508 pui2 = &ui2;
|
|
509 printf("code_sindirect %d %d %u %u\n",*pi1,*pi2,*pui1,*pui2);
|
|
510 }
|
|
511
|
196
|
512 #if FLOAT_CODE
|
|
513 // code_drindirect(int e1, int offset, int d);
|
197
|
514 void
|
|
515 code_drindirect()
|
|
516 {
|
|
517 float i1,i2;
|
|
518 double ui1,ui2;
|
|
519 float *pi1,*pi2;
|
|
520 double *pui1,*pui2;
|
|
521
|
|
522 i1 = -55; i2= 55;
|
|
523 ui1 = 200; ui2= 128;
|
|
524 pi1 = &i1;
|
|
525 pi2 = &i2;
|
|
526 pui1 = &ui1;
|
|
527 pui2 = &ui2;
|
|
528 printf("code_dindirect %g %g %g %g\n",*pi1,*pi2,*pui1,*pui2);
|
|
529 }
|
|
530
|
196
|
531 #endif
|
197
|
532
|
196
|
533 #if LONGLONG_CODE
|
|
534 // code_lrindirect(int e1, int offset, int us);
|
197
|
535 void
|
|
536 code_lrindirect()
|
|
537 {
|
|
538 long long i1,i2;
|
|
539 unsigned long long ui1,ui2;
|
|
540 long long *pi1,*pi2;
|
|
541 unsigned long long *pui1,*pui2;
|
|
542
|
|
543 i1 = -55; i2= 55;
|
|
544 ui1 = 200; ui2= 128;
|
|
545 pi1 = &i1;
|
|
546 pi2 = &i2;
|
|
547 pui1 = &ui1;
|
|
548 pui2 = &ui2;
|
|
549 printf("code_lrindirect %lld %lld %llu %llu\n",*pi1,*pi2,*pui1,*pui2);
|
|
550 }
|
|
551
|
196
|
552 #endif
|
|
553
|
|
554 // code_assign_gvar(int e2,int creg,int byte)
|
|
555 // code_assign_lvar(int e2,int creg,int byte)
|
|
556 // code_assign_register(int e2,int byte,int creg)
|
|
557 // code_assign(int e2,int byte,int creg)
|
198
|
558
|
|
559 void
|
|
560 code_assign()
|
|
561 {
|
|
562 int i1,i2;
|
|
563 unsigned int ui1,ui2;
|
|
564 int *pi1,*pi2;
|
|
565 unsigned int *pui1,*pui2;
|
|
566
|
|
567 i1 = -555; i2= 555;
|
|
568 ui1 = 632423423; ui2= 32394234;
|
|
569 pi1 = &i1;
|
|
570 pi2 = &i2;
|
|
571 pui1 = &ui1;
|
|
572 pui2 = &ui2;
|
|
573
|
|
574 *(pi2+i1+i2) = 3;
|
|
575 *(pui2+i1+i2) = 3;
|
|
576 printf("code_rindirect %d %d %u %u\n",*pi1,*pi2,*pui1,*pui2);
|
|
577 }
|
|
578
|
196
|
579 // code_register_assop(int e2,int op,int byte)
|
198
|
580 code_register_assop()
|
|
581 {
|
|
582 register int i1;
|
|
583 register unsigned int ui1;
|
|
584 i1 = -555;
|
|
585 ui1 = 632423423;
|
|
586
|
|
587 i1 += 3;
|
|
588 printf("code_assop 1 %d\n",i1);
|
|
589 i1 -= 3;
|
|
590 printf("code_assop 2 %d\n",i1);
|
|
591 i1 /= 3;
|
|
592 printf("code_assop 3 %d\n",i1);
|
|
593 i1 *= 3;
|
|
594 printf("code_assop 4 %d\n",i1);
|
|
595 i1 |= 234;
|
|
596 printf("code_assop 5 %d\n",i1);
|
|
597 i1 &= 2324234234234234;
|
|
598 printf("code_assop 6 %d\n",i1);
|
|
599 i1 ^= 5523234234234234;
|
|
600 printf("code_assop 7 %d\n",i1);
|
|
601 i1 <<= 3;
|
|
602 printf("code_assop 8 %d\n",i1);
|
|
603 i1 >>= 3;
|
|
604 printf("code_assop 9 %d\n",i1);
|
|
605
|
|
606 ui1 += 3;
|
|
607 printf("code_assop 1 %ud\n",i1);
|
|
608 ui1 -= 3;
|
|
609 printf("code_assop 2 %ud\n",i1);
|
|
610 ui1 /= 3;
|
|
611 printf("code_assop 3 %ud\n",i1);
|
|
612 ui1 *= 3;
|
|
613 printf("code_assop 4 %ud\n",i1);
|
|
614 ui1 |= 234;
|
|
615 printf("code_assop 5 %ud\n",i1);
|
|
616 ui1 &= 2324234234234234;
|
|
617 printf("code_assop 6 %ud\n",i1);
|
|
618 ui1 ^= 5523234234234234;
|
|
619 printf("code_assop 7 %ud\n",i1);
|
|
620 ui1 <<= 3;
|
|
621 printf("code_assop 8 %ud\n",i1);
|
|
622 ui1 >>= 3;
|
|
623 printf("code_assop 9 %ud\n",i1);
|
|
624 }
|
|
625
|
196
|
626 // code_assop(int op,int byte,int sign)
|
198
|
627 code_assop()
|
|
628 {
|
|
629 int i1,i2;
|
|
630 unsigned int ui1,ui2;
|
|
631 i1 = -555; i2= 555;
|
|
632 ui1 = 632423423; ui2= 32394234;
|
|
633
|
|
634 i1 += 3;
|
|
635 printf("code_assop 1 %d\n",i1);
|
|
636 i1 -= 3;
|
|
637 printf("code_assop 2 %d\n",i1);
|
|
638 i1 /= 3;
|
|
639 printf("code_assop 3 %d\n",i1);
|
|
640 i1 *= 3;
|
|
641 printf("code_assop 4 %d\n",i1);
|
|
642 i1 |= 234;
|
|
643 printf("code_assop 5 %d\n",i1);
|
|
644 i1 &= 2324234234234234;
|
|
645 printf("code_assop 6 %d\n",i1);
|
|
646 i1 ^= 5523234234234234;
|
|
647 printf("code_assop 7 %d\n",i1);
|
|
648 i1 <<= 3;
|
|
649 printf("code_assop 8 %d\n",i1);
|
|
650 i1 >>= 3;
|
|
651 printf("code_assop 9 %d\n",i1);
|
|
652
|
|
653 ui1 += 3;
|
|
654 printf("code_assop 1 %ud\n",i1);
|
|
655 ui1 -= 3;
|
|
656 printf("code_assop 2 %ud\n",i1);
|
|
657 ui1 /= 3;
|
|
658 printf("code_assop 3 %ud\n",i1);
|
|
659 ui1 *= 3;
|
|
660 printf("code_assop 4 %ud\n",i1);
|
|
661 ui1 |= 234;
|
|
662 printf("code_assop 5 %ud\n",i1);
|
|
663 ui1 &= 2324234234234234;
|
|
664 printf("code_assop 6 %ud\n",i1);
|
|
665 ui1 ^= 5523234234234234;
|
|
666 printf("code_assop 7 %ud\n",i1);
|
|
667 ui1 <<= 3;
|
|
668 printf("code_assop 8 %ud\n",i1);
|
|
669 ui1 >>= 3;
|
|
670 printf("code_assop 9 %ud\n",i1);
|
|
671 }
|
|
672
|
|
673
|
|
674
|
196
|
675 // tosop(int op,int oreg)
|
198
|
676 void
|
|
677 tosop()
|
|
678 {
|
|
679 int i1,i2,i;
|
|
680 unsigned int ui1,ui2,u;
|
|
681 i1 = -555; i2= 555;
|
|
682 ui1 = 632423423; ui2= 32394234;
|
|
683
|
|
684 i = i1 + i2;
|
|
685 printf("tosop 1 %d\n",i1);
|
|
686 i = i1 - i2;
|
|
687 printf("tosop 2 %d\n",i1);
|
|
688 i = i1 / i2;
|
|
689 printf("tosop 3 %d\n",i1);
|
|
690 i = i1 * i2;
|
|
691 printf("tosop 4 %d\n",i1);
|
|
692 i = i1 | i2;
|
|
693 printf("tosop 5 %d\n",i1);
|
|
694 i = i1 & i2;
|
|
695 printf("tosop 6 %d\n",i1);
|
|
696 i = i1 ^ i2;
|
|
697 printf("tosop 7 %d\n",i1);
|
|
698 i = i1 << i2;
|
|
699 printf("tosop 8 %d\n",i1);
|
|
700 i = i1 >> i2;
|
|
701 printf("tosop 9 %d\n",i1);
|
|
702
|
|
703 u = u1 + u2;
|
|
704 printf("tosop 1 %ud\n",u1);
|
|
705 u = u1 - u2;
|
|
706 printf("tosop 2 %ud\n",u1);
|
|
707 u = u1 / u2;
|
|
708 printf("tosop 3 %ud\n",u1);
|
|
709 u = u1 * u2;
|
|
710 printf("tosop 4 %ud\n",u1);
|
|
711 u = u1 | u2;
|
|
712 printf("tosop 5 %ud\n",u1);
|
|
713 u = u1 & u2;
|
|
714 printf("tosop 6 %ud\n",u1);
|
|
715 u = u1 ^ u2;
|
|
716 printf("tosop 7 %ud\n",u1);
|
|
717 u = u1 << u2;
|
|
718 printf("tosop 8 %ud\n",u1);
|
|
719 u = u1 >> u2;
|
|
720 printf("tosop 9 %ud\n",u1);
|
|
721 }
|
196
|
722
|
|
723 // oprtc(int op,int v)
|
198
|
724 void
|
|
725 oprtc()
|
|
726 {
|
|
727 int i1,i;
|
|
728 unsigned int ui1,u;
|
|
729 i1 = -555;
|
|
730 ui1 = 632423423;
|
196
|
731
|
198
|
732 i = i1 + 3;
|
|
733 printf("oprtc 1 %d\n",i1);
|
|
734 i = i1 - 3;
|
|
735 printf("oprtc 2 %d\n",i1);
|
|
736 i = i1 / 3;
|
|
737 printf("oprtc 3 %d\n",i1);
|
|
738 i = i1 * 3;
|
|
739 printf("oprtc 4 %d\n",i1);
|
|
740 i = i1 | 234234234;
|
|
741 printf("oprtc 5 %d\n",i1);
|
|
742 i = i1 & 234234234234;
|
|
743 printf("oprtc 6 %d\n",i1);
|
|
744 i = i1 ^ 234234234234;
|
|
745 printf("oprtc 7 %d\n",i1);
|
|
746 i = i1 << 5;
|
|
747 printf("oprtc 8 %d\n",i1);
|
|
748 i = i1 >> 5;
|
|
749 printf("oprtc 9 %d\n",i1);
|
196
|
750
|
198
|
751 u = u1 + 3;
|
|
752 printf("oprtc 1 %ud\n",u1);
|
|
753 u = u1 - 3;
|
|
754 printf("oprtc 2 %ud\n",u1);
|
|
755 u = u1 / 3;
|
|
756 printf("oprtc 3 %ud\n",u1);
|
|
757 u = u1 * 3;
|
|
758 printf("oprtc 4 %ud\n",u1);
|
|
759 u = u1 | 234234234;
|
|
760 printf("oprtc 5 %ud\n",u1);
|
|
761 u = u1 & 234234234;
|
|
762 printf("oprtc 6 %ud\n",u1);
|
|
763 u = u1 ^ 23234234234;
|
|
764 printf("oprtc 7 %ud\n",u1);
|
|
765 u = u1 << 5;
|
|
766 printf("oprtc 8 %ud\n",u1);
|
|
767 u = u1 >> 5;
|
|
768 printf("oprtc 9 %ud\n",u1);
|
|
769 }
|
|
770
|
196
|
771
|
|
772 #if FLOAT_CODE
|
|
773 // code_cmp_dregister(int e2,int d)
|
198
|
774 void
|
|
775 code_cmp_dregister()
|
|
776 {
|
|
777 register float f0,f1;
|
|
778 register double d0,d1;
|
|
779 f0 = 0.0; f1 = 0.2;
|
|
780 d0 = 10; d1 = 10e10;
|
|
781 f0 && printf("code_bool register 6\n");
|
|
782 d0 && printf("code_bool register 7\n");
|
|
783
|
|
784 }
|
|
785
|
196
|
786 // code_dregister(int e2,int freg,int d)
|
198
|
787 code_dregister()
|
|
788 {
|
|
789 register float f0,f1;
|
|
790 register double d0,d1;
|
|
791 f0 = 0.0; f1 = 0.2;
|
|
792 d0 = 10; d1 = 10e10;
|
|
793 printf("code_lvar float %f %f %g %g\n",i1,i2,f0,f1,d0,d1);
|
|
794 }
|
|
795
|
196
|
796 // code_dassign_gvar(int e2,int freg,int d)
|
|
797 // code_dassign_lvar(int e2,int freg,int d)
|
198
|
798 // code_dassign_dregister(int e2,int d,int freg)
|
|
799
|
196
|
800 // code_dassign(int e2,int freg,int d)
|
198
|
801 void
|
|
802 code_dassign()
|
|
803 {
|
|
804 float i1,i2;
|
|
805 double ui1,ui2;
|
|
806 float *pi1,*pi2;
|
|
807 double *pui1,*pui2;
|
|
808
|
|
809 i1 = -555; i2= 555;
|
|
810 ui1 = 632423423; ui2= 32394234;
|
|
811 pi1 = &i1;
|
|
812 pi2 = &i2;
|
|
813 pui1 = &ui1;
|
|
814 pui2 = &ui2;
|
|
815
|
|
816 *(pi2+i1+i2) = 3;
|
|
817 *(pui2+i1+i2) = 3;
|
|
818 printf("code_dassign %g %g %g %g\n",*pi1,*pi2,*pui1,*pui2);
|
|
819 }
|
|
820
|
196
|
821 // code_dconst(int e2,int freg,int d)
|
|
822 // code_dneg(int freg,int d)
|
198
|
823 // code_dneg(int creg)
|
|
824 void
|
|
825 code_dneg()
|
|
826 {
|
|
827 float i,j;
|
|
828 double di,dj;
|
|
829 i = 123123123;j = -32423;
|
|
830 di = 123123123;dj = -32423;
|
|
831 printf("code_dneg %g %g\n",-i,-j);
|
|
832 printf("code_dneg %g %g\n",-di,-dj);
|
|
833 }
|
|
834
|
196
|
835 // code_d2i(int freg0)
|
198
|
836 void code_d2i()
|
|
837 {
|
|
838 double d;
|
|
839 int i;
|
|
840 d = 0.1;
|
|
841 i = d;
|
|
842 printf("code_d2i %d\n",i);
|
|
843 }
|
196
|
844 // code_i2d(int creg0)
|
198
|
845 void code_i2d()
|
|
846 {
|
|
847 double d;
|
|
848 int i;
|
|
849 i = 24234342342;
|
|
850 d = i;
|
|
851 printf("code_i2d %g\n",d);
|
|
852 }
|
196
|
853 // code_d2u(int freg0)
|
198
|
854 void code_d2u()
|
|
855 {
|
|
856 double d;
|
|
857 unsigned int i;
|
|
858 d = 0.1;
|
|
859 i = d;
|
|
860 printf("code_d2u %ud\n",i);
|
|
861 }
|
196
|
862 // code_u2d(int creg0)
|
198
|
863 void code_u2d()
|
|
864 {
|
|
865 double d;
|
|
866 unsigned int i;
|
|
867 i = 24234342342;
|
|
868 d = i;
|
|
869 printf("code_u2d %g\n",d);
|
|
870 }
|
|
871 // code_f2i(int freg0)
|
|
872 void code_f2i()
|
|
873 {
|
|
874 float d;
|
|
875 int i;
|
|
876 d = 0.1;
|
|
877 i = d;
|
|
878 printf("code_d2i %d\n",i);
|
|
879 }
|
|
880 // code_i2f(int creg0)
|
|
881 void code_i2f()
|
|
882 {
|
|
883 float d;
|
|
884 int i;
|
|
885 i = 24234342342;
|
|
886 d = i;
|
|
887 printf("code_i2f %g\n",d);
|
|
888 }
|
|
889 // code_f2u(int freg0)
|
|
890 void code_f2u()
|
|
891 {
|
|
892 float d;
|
|
893 unsigned int i;
|
|
894 d = 0.1;
|
|
895 i = d;
|
|
896 printf("code_f2u %ud\n",i);
|
|
897 }
|
|
898 // code_u2f(int creg0)
|
|
899 void code_u2f()
|
|
900 {
|
|
901 float d;
|
|
902 unsigned int i;
|
|
903 i = 24234342342;
|
|
904 d = i;
|
|
905 printf("code_u2f %g\n",d);
|
|
906 }
|
|
907
|
196
|
908
|
|
909 // code_drgvar(int e2,int d,int freg)
|
198
|
910 void
|
|
911 code_dgvar()
|
|
912 {
|
|
913 f0 = 0.0; f1 = 0.2;
|
|
914 d0 = 10; d1 = 10e10;
|
|
915 printf("code_gvar float %f %f %g %g\n",i1,i2,f0,f1,d0,d1);
|
|
916 s_f0 = 0.0; s_f1 = 0.2;
|
|
917 s_d0 = 10; s_d1 = 10e10;
|
|
918 printf("code_gvar float %f %f %g %g\n",s_i1,s_i2,s_f0,s_f1,s_d0,s_d1);
|
|
919 }
|
|
920
|
196
|
921 // code_drlvar(int e2,int d,int freg)
|
198
|
922 void
|
|
923 code_dlvar()
|
|
924 {
|
|
925 float f0,f1;
|
|
926 double d0,d1;
|
|
927 f0 = 0.0; f1 = 0.2;
|
|
928 d0 = 10; d1 = 10e10;
|
|
929 printf("code_lvar float %f %f %g %g\n",i1,i2,f0,f1,d0,d1);
|
|
930 }
|
|
931
|
|
932
|
196
|
933 // code_cmp_drgvar(int e2,int d)
|
198
|
934 void
|
|
935 code_cmp_d_global()
|
|
936 {
|
|
937 f0 = 0.0; f1 = 0.2;
|
|
938 d0 = 10; d1 = 10e10;
|
|
939 f0 && printf("code_bool global 6\n");
|
|
940 d0 && printf("code_bool global 7\n");
|
|
941 }
|
|
942
|
|
943
|
196
|
944 // code_cmp_drlvar(int e2,int d)
|
198
|
945 void
|
|
946 code_cmp_d()
|
|
947 {
|
|
948 float f0,f1;
|
|
949 double d0,d1;
|
|
950 f0 = 0.0; f1 = 0.2;
|
|
951 d0 = 10; d1 = 10e10;
|
|
952 f0 && printf("code_bool local 6\n");
|
|
953 d0 && printf("code_bool local 7\n");
|
|
954 }
|
|
955
|
196
|
956 // dtosop(int op,int e1)
|
198
|
957 void
|
|
958 dtosop()
|
|
959 {
|
|
960 double i1,i2,i;
|
|
961 float ui1,ui2,u;
|
|
962 i1 = -555; i2= 555;
|
|
963 ui1 = 632423423; ui2= 32394234;
|
|
964
|
|
965 i = i1 + i2;
|
|
966 printf("dtosop 1 %g\n",i1);
|
|
967 i = i1 - i2;
|
|
968 printf("dtosop 2 %g\n",i1);
|
|
969 i = i1 / i2;
|
|
970 printf("dtosop 3 %g\n",i1);
|
|
971 i = i1 * i2;
|
|
972 printf("dtosop 4 %g\n",i1);
|
|
973 u = u1 + u2;
|
|
974 printf("dtosop 1 %g\n",u1);
|
|
975 u = u1 - u2;
|
|
976 printf("dtosop 2 %g\n",u1);
|
|
977 u = u1 / u2;
|
|
978 printf("tosop 3 %g\n",u1);
|
|
979 u = u1 * u2;
|
|
980 printf("dtosop 4 %g\n",u1);
|
|
981 }
|
|
982
|
196
|
983
|
|
984 // code_dassop(int op,int d)
|
198
|
985 code_dassop()
|
|
986 {
|
|
987 double i1,i2;
|
|
988 float ui1,ui2;
|
|
989 i1 = -555; i2= 555;
|
|
990 ui1 = 632423423; ui2= 32394234;
|
|
991
|
|
992 i1 += 3;
|
|
993 printf("code_dassop 1 %g\n",i1);
|
|
994 i1 -= 3;
|
|
995 printf("code_dassop 2 %g\n",i1);
|
|
996 i1 /= 3;
|
|
997 printf("code_dassop 3 %g\n",i1);
|
|
998 i1 *= 3;
|
|
999 printf("code_dassop 4 %g\n",i1);
|
|
1000
|
|
1001 ui1 += 3;
|
|
1002 printf("code_dassop 1 %g\n",i1);
|
|
1003 ui1 -= 3;
|
|
1004 printf("code_dassop 2 %g\n",i1);
|
|
1005 ui1 /= 3;
|
|
1006 printf("code_dassop 3 %g\n",i1);
|
|
1007 ui1 *= 3;
|
|
1008 printf("code_dassop 4 %g\n",i1);
|
|
1009 }
|
|
1010
|
|
1011
|
196
|
1012 // code_dpreinc(int e1,int e2,int d,int reg)
|
199
|
1013 void
|
|
1014 code_dpreinc()
|
|
1015 {
|
|
1016 double i,j;
|
|
1017 float ui,uj;
|
|
1018 i = 123123123;j = 0;
|
|
1019 printf("code_dpreinc %g %g\n",++i,--j);
|
|
1020 ui = 123123123;uj = 0;
|
|
1021 printf("code_dpreinc %g %g\n",++ui,--uj);
|
|
1022 }
|
|
1023
|
196
|
1024 // code_dpostinc(int e1,int e2,int d,int reg)
|
199
|
1025 void
|
|
1026 code_dpostinc()
|
|
1027 {
|
|
1028 double i,j;
|
|
1029 float ui,uj;
|
|
1030 i = 123123123;j = 0;
|
|
1031 printf("code_dpreinc %g %g\n",i--,j--);
|
|
1032 ui = 123123123;uj = 0;
|
|
1033 printf("code_dpreinc %g %g\n",ui++,uj--);
|
|
1034 }
|
|
1035
|
196
|
1036 // drexpr(int e1, int e2,int l1, int op)
|
|
1037
|
|
1038 // case DOP+GE:
|
|
1039 // case FOP+GE:
|
|
1040 // case DOP+GT:
|
|
1041 // case FOP+GT:
|
|
1042 // case DOP+EQ:
|
|
1043 // case FOP+EQ:
|
|
1044 // case DOP+NEQ:
|
|
1045 // case FOP+NEQ:
|
199
|
1046 // code_gt(int cond)
|
|
1047
|
|
1048 void code_dgt()
|
|
1049 {
|
|
1050 if (d0>d1)
|
|
1051 printf("code_gt 1\n");
|
|
1052 else
|
|
1053 printf("code_gt 0\n");
|
|
1054 }
|
|
1055
|
|
1056 // code_ugt(int cond)
|
|
1057 void code_fgt()
|
|
1058 {
|
|
1059 if (f0>f1)
|
|
1060 printf("code_fgt 1\n");
|
|
1061 else
|
|
1062 printf("code_fgt 0\n");
|
|
1063 }
|
|
1064
|
|
1065 // code_ge(int cond)
|
|
1066 void code_dge()
|
|
1067 {
|
|
1068 if (d0>=d1)
|
|
1069 printf("code_dge 1\n");
|
|
1070 else
|
|
1071 printf("code_dge 0\n");
|
|
1072 }
|
|
1073
|
|
1074 // code_uge(int cond)
|
|
1075 void code_fge()
|
|
1076 {
|
|
1077 if (f0>=f1)
|
|
1078 printf("code_fge 1\n");
|
|
1079 else
|
|
1080 printf("code_fge 0\n");
|
|
1081 }
|
|
1082
|
|
1083 // code_eq(int cond)
|
|
1084 void code_deq()
|
|
1085 {
|
|
1086 if (f0==f1)
|
|
1087 printf("code_feq 1\n");
|
|
1088 else
|
|
1089 printf("code_feq 0\n");
|
|
1090 if (d0!=d1)
|
|
1091 printf("code_deq 1\n");
|
|
1092 else
|
|
1093 printf("code_deq 0\n");
|
|
1094 }
|
|
1095
|
|
1096 // code_dbool(int e1)
|
|
1097
|
|
1098 void
|
|
1099 code_dbool()
|
|
1100 {
|
|
1101 printf("code_bool float %d %d %d %d\n",
|
|
1102 f0>f1,f0>=f1,f0==f1,f0!=f1);
|
|
1103 printf("code_bool double %d %d %d %d\n",
|
|
1104 d0>d1,d0>=d1,d0==d1,d0!=d1);
|
|
1105 }
|
196
|
1106 #endif
|
|
1107
|
199
|
1108
|
196
|
1109 #if LONGLONG_CODE
|
|
1110 // lrexpr(int e1, int e2,int l1, int op)
|
|
1111 // int lpop_register()
|
|
1112 // code_lregister(int e2,int reg)
|
|
1113 // code_cmp_lregister(int reg)
|
|
1114 // code_cmp_lrgvar(int e1,int e2)
|
|
1115 // code_cmp_lrlvar(int e1,int e2)
|
|
1116 // code_lassign(int e1,int e2)
|
|
1117 // code_lassign_gvar(int e1,int e2)
|
|
1118 // code_lassign_lvar(int e1,int e2)
|
|
1119 // code_lassign_lregister(int e2,int reg)
|
|
1120 // code_lconst(int e1,int e2)
|
|
1121 // code_lneg(int e1,int e2)
|
|
1122 // code_lrgvar(int e1,int e2)
|
|
1123 // code_lrlvar(int e1,int e2)
|
|
1124 // ltosop(int e1,int e2)
|
|
1125 // code_i2ll(int creg)
|
|
1126 // code_i2ull(int creg)
|
|
1127 // code_u2ll(int creg)
|
|
1128 // code_u2ull(int creg)
|
|
1129 // code_ll2i(int creg)
|
|
1130 // code_ll2u(int creg)
|
|
1131 // code_ull2i(int creg)
|
|
1132 // code_ull2u(int creg)
|
|
1133 #if FLOAT_CODE
|
|
1134 // code_d2ll(int creg)
|
|
1135 // code_d2ull(int creg)
|
|
1136 // code_f2ll(int creg)
|
|
1137 // code_f2ull(int creg)
|
|
1138 // code_ll2d(int creg)
|
|
1139 // code_ll2f(int creg)
|
|
1140 // code_ull2d(int creg)
|
|
1141 // code_ull2f(int creg)
|
|
1142 // code_ull2ll(int creg)
|
|
1143 // code_ull2ull(int creg)
|
|
1144 #endif
|
|
1145
|
|
1146 #if LONGLONG_CODE
|
|
1147
|
|
1148 // code_lpreinc(int e1,int e2,int reg)
|
|
1149 // code_lpostinc(int e1,int e2,int reg)
|
|
1150 // code_lassop(int op)
|
|
1151
|
|
1152 #endif
|
|
1153 /* end */
|
|
1154
|