Mercurial > hg > CbC > old > device
annotate mc.h @ 604:ff033b46cac5
*** empty log message ***
author | kono |
---|---|
date | Mon, 30 Jan 2006 13:42:12 +0900 |
parents | 429ec87e03e7 |
children | e055df7c1082 |
rev | line source |
---|---|
0 | 1 /* Micro-C header file */ |
2 | |
195 | 3 #define FLOAT_CODE 1 |
237 | 4 #define LONGLONG_CODE 1 |
292 | 5 #define CASE_CODE 1 |
316 | 6 #define ASM_CODE 1 |
329 | 7 #define BIT_FIELD_CODE 1 |
195 | 8 |
164 | 9 /* reserved word start */ |
10 | |
482 | 11 /* type ( keyword ) */ |
12 | |
327 | 13 #define INT (-1) |
14 #define UNSIGNED (-2) | |
15 #define CHAR (-3) | |
16 #define UCHAR (-4) | |
162 | 17 #define POINTER (-5) |
327 | 18 #define ARRAY (-6) |
19 #define STRUCT (-7) | |
20 #define UNION (-8) | |
21 #define FUNCTION (-9) | |
0 | 22 |
482 | 23 #define SIGNED (-10) |
24 #define LONG (-11) | |
25 #define SHORT (-12) | |
26 #define USHORT (-13) | |
27 #define VOID (-14) | |
28 #define CODE (-15) | |
29 #define ENUM (-16) | |
30 | |
31 #define FLOAT (-17) | |
32 #define DOUBLE (-18) | |
33 #define LONGLONG (-19) | |
34 #define ULONGLONG (-20) | |
35 | |
36 /* type qualifier */ | |
37 | |
38 #define KONST (-21) | |
39 #define STATIC (-22) | |
40 #define EXTRN (-23) | |
41 #define EXTRN1 (-24) | |
42 #define VOLATILE (-25) | |
43 #define RESTRICT (-26) | |
44 #define INLINE (-27) | |
45 #define REGISTER (-28) | |
46 #define FREGISTER (-29) | |
47 #define DREGISTER (-30) | |
48 #define LREGISTER (-31) | |
49 | |
50 #define DOTS (-32) | |
0 | 51 |
482 | 52 /* keyword */ |
53 | |
54 #define GOTO (-33) | |
55 #define RETURN (-34) | |
56 #define BREAK (-35) | |
57 #define CONTINUE (-36) | |
58 #define IF (-37) | |
59 #define ELSE (-38) | |
60 #define FOR (-39) | |
61 #define DO (-40) | |
62 #define WHILE (-41) | |
63 #define SWITCH (-42) | |
64 #define CASE (-43) | |
65 #define DEFAULT (-44) | |
66 #define RESERVE (-45) | |
67 #define TAG (-46) | |
68 #define FIELD (-47) | |
69 #define IDENT (-48) | |
70 #define MACRO (-49) | |
71 #define BLABEL (-50) | |
72 #define FLABEL (-51) | |
73 #define TYPEDEF (-52) | |
74 #define SIZEOF (-53) | |
75 #define TYPE (-54) | |
76 #define DEFINED (-55) | |
77 | |
78 #define ENVIRONMENT (-56) | |
79 | |
80 #define FMACRO (-57) | |
81 #define LMACRO (-58) | |
82 | |
461 | 83 #define TYPEOF (-59) |
84 #define ASM (-60) | |
164 | 85 |
544 | 86 #define C_FILE (-61) |
87 #define C_FUNCTION (-62) | |
88 #define C_LINE (-63) | |
89 | |
164 | 90 /* reserved word end */ |
78 | 91 |
327 | 92 #define EMPTY (-99) |
103 | 93 |
164 | 94 /* mode start */ |
327 | 95 #define TOP 0 |
96 #define GDECL 1 | |
97 #define GSDECL 2 | |
98 #define GUDECL 3 | |
99 #define ADECL 4 | |
100 #define LDECL 5 | |
101 #define LSDECL 6 | |
102 #define LUDECL 7 | |
0 | 103 #define STADECL 8 |
327 | 104 #define STAT 9 |
105 #define GTDECL 10 | |
106 #define LTDECL 11 | |
107 #define IFDEF 12 | |
108 #define MDECL 13 | |
176 | 109 #define GEDECL 14 |
110 #define LEDECL 15 | |
362 | 111 #define LLDECL 16 |
112 #define SFDINIT 17 | |
164 | 113 /* mode end */ |
114 | |
327 | 115 #define US 1 |
116 #define AS 10000 | |
117 #define SOP 200 | |
118 #define COP 400 | |
119 #define DOP 600 | |
120 #define FOP 800 | |
121 #define LOP 1000 | |
164 | 122 |
123 /* tree node tags start */ | |
124 | |
316 | 125 #define LIST_ARGS(i) (i==FUNCTION||i==CODE||i==ASM) |
599 | 126 #define OP(i) (i%SOP) /* tag value without attribute */ |
127 #define OP_TAG(i) (((i)/SOP)*SOP) /* attribute of tag */ | |
164 | 128 |
129 /* nullary argments */ | |
0 | 130 |
327 | 131 #define GVAR 1 |
132 #define RGVAR 2 | |
133 #define URGVAR 3 | |
134 #define LVAR 4 | |
135 #define RLVAR 5 | |
136 #define URLVAR 6 | |
137 #define CRGVAR (COP+RGVAR) | |
138 #define CURGVAR (COP+URGVAR) | |
139 #define CRLVAR (COP+RLVAR) | |
140 #define CURLVAR (COP+URLVAR) | |
141 #define FRGVAR (FOP+RGVAR) | |
142 #define FRLVAR (FOP+RLVAR) | |
143 #define DRGVAR (DOP+RGVAR) | |
144 #define DRLVAR (DOP+RLVAR) | |
145 #define SRGVAR (SOP+RGVAR) | |
146 #define SURGVAR (SOP+URGVAR) | |
147 #define SRLVAR (SOP+RLVAR) | |
148 #define SURLVAR (SOP+URLVAR) | |
149 #define LRGVAR (LOP+RGVAR) | |
150 #define LURGVAR (LOP+URGVAR) | |
151 #define LRLVAR (LOP+RLVAR) | |
152 #define LURLVAR (LOP+URLVAR) | |
164 | 153 |
327 | 154 #define CONST 7 |
155 #define DCONST (DOP+CONST) | |
156 #define FCONST (FOP+CONST) | |
157 #define LCONST (LOP+CONST) | |
158 #define STRING 8 | |
159 #define FNAME 9 | |
450
eaf9e2746c83
parallel assign for simple expr. (too complex solution)
kono
parents:
449
diff
changeset
|
160 #define LCALL 10 |
452 | 161 #define COMMENT 11 |
162 #define DECL 12 | |
163 #define COMP 13 | |
602 | 164 #define IVAR 14 |
165 #define RIVAR 15 | |
166 #define LABEL 16 | |
164 | 167 |
450
eaf9e2746c83
parallel assign for simple expr. (too complex solution)
kono
parents:
449
diff
changeset
|
168 #define NULLARY_ARGS(i) (i==RETURN||i==ENVIRONMENT||i==LCALL||i==REGISTER||i==DREGISTER||i==FREGISTER||i==LREGISTER||(GVAR<=(i%SOP)&&(i%SOP)<=LABEL)) |
164 | 169 |
170 /* unary argments */ | |
171 | |
602 | 172 #define ADDRESS 17 |
173 #define MINUS 18 | |
174 #define LNOT 19 | |
175 #define BNOT 20 | |
176 #define INC 21 | |
177 #define POSTINC 22 | |
178 #define UPOSTINC 23 | |
179 #define PREINC 24 | |
180 #define UPREINC 25 | |
181 #define POSTDEC 26 | |
182 #define UPOSTDEC 27 | |
183 #define PREDEC 28 | |
184 #define UPREDEC 29 | |
185 #define DEC 30 | |
196 | 186 #define CPOSTINC (COP+POSTINC) |
187 #define CUPOSTINC (COP+UPOSTINC) | |
188 #define CPREINC (COP+PREINC) | |
189 #define CUPREINC (COP+UPREINC) | |
190 #define CPOSTDEC (COP+POSTDEC) | |
191 #define CUPOSTDEC (COP+UPOSTDEC) | |
192 #define CPREDEC (COP+CPREDEC) | |
193 #define CUPREDEC (COP+UPREDEC) | |
194 #define SPOSTINC (SOP+POSTINC) | |
195 #define SUPOSTINC (SOP+UPOSTINC) | |
196 #define SPREINC (SOP+PREINC) | |
197 #define SUPREINC (SOP+UPREINC) | |
198 #define SPOSTDEC (SOP+POSTDEC) | |
199 #define SUPOSTDEC (SOP+UPOSTDEC) | |
200 #define SPREDEC (SOP+PREDEC) | |
201 #define SUPREDEC (SOP+UPREDEC) | |
327 | 202 #define FPOSTINC (FOP+POSTINC) |
203 #define FPREINC (FOP+PREINC) | |
204 #define DPOSTINC (DOP+POSTINC) | |
205 #define DPREINC (DOP+PREINC) | |
206 #define LPOSTINC (LOP+POSTINC) | |
207 #define LPREINC (LOP+PREINC) | |
208 #define LUPOSTINC (LOP+UPOSTINC) | |
209 #define LUPREINC (LOP+UPREINC) | |
602 | 210 #define INDIRECT 31 |
211 #define RINDIRECT 32 | |
212 #define URINDIRECT 33 | |
327 | 213 #define CRINDIRECT (COP+RINDIRECT) |
214 #define CURINDIRECT (COP+URINDIRECT) | |
215 #define SRINDIRECT (SOP+RINDIRECT) | |
216 #define SURINDIRECT (SOP+URINDIRECT) | |
217 #define FRINDIRECT (FOP+RINDIRECT) | |
218 #define DRINDIRECT (DOP+RINDIRECT) | |
219 #define LRINDIRECT (LOP+RINDIRECT) | |
220 #define LURINDIRECT (LOP+URINDIRECT) | |
602 | 221 #define RSTRUCT 34 |
222 #define ALLOCA 35 | |
223 #define BUILTINP 36 | |
224 #define BUILTIN_EXPECT 37 | |
225 #define ATTRIBUTE 38 | |
226 #define BIT_FIELD 39 | |
227 #define RBIT_FIELD 40 | |
228 #define BPREINC 41 | |
229 #define BPOSTINC 42 | |
230 #define RPERIOD 43 | |
231 #define RARROW 44 | |
232 #define CONV 45 | |
164 | 233 |
234 #define UNARY_ARGS(i) (ADDRESS<=(i%SOP)&&(i%SOP)<=CONV) | |
235 | |
236 /* binary argments */ | |
237 | |
602 | 238 #define MUL 46 |
239 #define UMUL 47 | |
240 #define DIV 48 | |
241 #define UDIV 49 | |
242 #define MOD 50 | |
243 #define UMOD 51 | |
244 #define ADD 52 | |
245 #define SUB 53 | |
246 #define CMP 54 | |
247 #define RSHIFT 55 | |
248 #define URSHIFT 56 | |
249 #define LSHIFT 57 | |
250 #define ULSHIFT 58 | |
251 #define GT 59 | |
252 #define UGT 60 | |
253 #define GE 61 | |
254 #define UGE 62 | |
255 #define LT 63 | |
256 #define ULT 64 | |
257 #define LE 65 | |
258 #define ULE 66 | |
259 #define EQ 67 | |
260 #define NEQ 68 | |
261 #define BAND 69 | |
262 #define EOR 70 | |
263 #define BOR 71 | |
264 #define LAND 72 | |
265 #define LOR 73 | |
266 #define ASS 74 | |
267 #define UCMP 75 | |
268 #define UCMPGE 76 | |
269 #define CMPGE 77 | |
270 #define CMPEQ 78 | |
271 #define CMPNEQ 79 | |
272 #define ASSOP 80 | |
273 #define COMMA 81 | |
164 | 274 |
602 | 275 #define CASS 82 |
276 #define CASSOP 83 | |
277 #define CUASSOP 84 | |
0 | 278 |
327 | 279 #define SASS (SOP+CASS) |
164 | 280 #define SASSOP (SOP+CASSOP) |
281 #define SUASSOP (SOP+CUASSOP) | |
282 | |
327 | 283 #define DASS (DOP+ASS) |
284 #define DCMPGE (DOP+CMPGE) | |
285 #define DCMPEQ (DOP+CMPEQ) | |
286 #define DCMPNEQ (DOP+CMPNEQ) | |
287 #define DASSOP (DOP+ASSOP) | |
288 #define DCMP (DOP+CMP) | |
289 #define DMINUS (DOP+MINUS) | |
290 #define DMUL (DOP+MUL) | |
291 #define DDIV (DOP+DIV) | |
292 #define DADD (DOP+ADD) | |
293 #define DSUB (DOP+SUB) | |
164 | 294 |
327 | 295 #define FASS (FOP+ASS) |
296 #define FCMPGE (FOP+CMPGE) | |
297 #define FCMPEQ (FOP+CMPEQ) | |
298 #define FCMPNEQ (FOP+CMPNEQ) | |
299 #define FASSOP (FOP+ASSOP) | |
300 #define FCMP (FOP+CMP) | |
301 #define FMINUS (FOP+MINUS) | |
302 #define FMUL (FOP+MUL) | |
303 #define FDIV (FOP+DIV) | |
304 #define FADD (FOP+ADD) | |
305 #define FSUB (FOP+SUB) | |
78 | 306 |
327 | 307 #define LASS (LOP+CASS) |
308 #define LCMPGE (LOP+CMPGE) | |
309 #define LCMPEQ (LOP+CMPEQ) | |
310 #define LCMPNEQ (LOP+CMPNEQ) | |
195 | 311 #define LASSOP (LOP+CASSOP) |
164 | 312 #define LUASSOP (LOP+CUASSOP) |
327 | 313 #define LCMP (LOP+CMP) |
314 #define LMINUS (LOP+MINUS) | |
315 #define LMUL (LOP+MUL) | |
316 #define LDIV (LOP+DIV) | |
317 #define LUMUL (LOP+UMUL) | |
318 #define LUDIV (LOP+UDIV) | |
319 #define LADD (LOP+ADD) | |
320 #define LSUB (LOP+SUB) | |
81 | 321 |
195 | 322 |
327 | 323 #define LMOD (LOP+MOD) |
324 #define LUMOD (LOP+UMOD) | |
325 #define LLSHIFT (LOP+LSHIFT) | |
326 #define LULSHIFT (LOP+ULSHIFT) | |
327 #define LRSHIFT (LOP+RSHIFT) | |
328 #define LURSHIFT (LOP+URSHIFT) | |
329 #define LBAND (LOP+BAND) | |
330 #define LEOR (LOP+EOR) | |
331 #define LBOR (LOP+BOR) | |
195 | 332 |
602 | 333 #define BASS 85 |
334 #define BASSOP 86 | |
335 #define BFD_REPL 87 | |
195 | 336 |
602 | 337 #define STASS 88 |
326 | 338 |
164 | 339 |
340 #define BINARY_ARGS(i) (MUL<=(i%SOP)&&(i%SOP)<=STASS) | |
341 | |
342 /* tarnary argments */ | |
343 | |
602 | 344 #define COND 89 |
345 #define UCOND 90 | |
327 | 346 #define SCOND (SOP+COND) |
490 | 347 #define SUCOND (SOP+UCOND) |
327 | 348 #define DCOND (DOP+COND) |
349 #define FCOND (FOP+COND) | |
350 #define LCOND (LOP+COND) | |
490 | 351 #define LUCOND (LOP+UCOND) |
164 | 352 |
491 | 353 #define TARNARY_ARGS(i) (COND==(i%SOP)||UCOND==(i%SOP)) |
164 | 354 |
355 /* not appeared as tags */ | |
81 | 356 |
602 | 357 #define LPAR 91 |
358 #define RPAR 92 | |
359 #define LBRA 93 | |
360 #define RBRA 94 | |
361 #define LC 95 | |
362 #define RC 96 | |
363 #define COLON 97 | |
364 #define SM 98 | |
365 #define PERIOD 99 | |
366 #define ARROW 100 | |
367 #define CNAME 101 | |
194 | 368 |
602 | 369 #define I2C 102 |
370 #define I2S 103 | |
371 #define I2I 104 | |
372 #define I2U 105 | |
373 #define I2D 106 | |
374 #define I2F 107 | |
375 #define I2LL 108 | |
376 #define I2ULL 109 | |
353 | 377 |
602 | 378 #define U2UC 110 |
379 #define U2US 111 | |
380 #define U2I 112 | |
381 #define U2U 113 | |
382 #define U2D 114 | |
383 #define U2F 115 | |
384 #define U2LL 116 | |
385 #define U2ULL 117 | |
353 | 386 |
194 | 387 |
327 | 388 #define D2I (DOP+I2I) |
389 #define D2U (DOP+I2U) | |
390 #define D2D (DOP+I2D) | |
391 #define D2F (DOP+I2F) | |
392 #define D2LL (DOP+I2LL) | |
393 #define D2ULL (DOP+I2ULL) | |
164 | 394 |
327 | 395 #define F2I (FOP+I2I) |
396 #define F2U (FOP+I2U) | |
397 #define F2D (FOP+I2D) | |
398 #define F2F (FOP+I2F) | |
399 #define F2LL (FOP+I2LL) | |
400 #define F2ULL (FOP+I2ULL) | |
194 | 401 |
327 | 402 #define LL2I (LOP+I2I) |
403 #define LL2U (LOP+I2U) | |
404 #define LL2D (LOP+I2D) | |
405 #define LL2F (LOP+I2F) | |
406 #define LL2LL (LOP+I2LL) | |
407 #define LL2ULL (LOP+I2ULL) | |
194 | 408 |
327 | 409 #define ULL2I (LOP+U2I) |
410 #define ULL2U (LOP+U2U) | |
411 #define ULL2D (LOP+U2D) | |
412 #define ULL2F (LOP+U2F) | |
413 #define ULL2LL (LOP+U2LL) | |
414 #define ULL2ULL (LOP+U2ULL) | |
194 | 415 |
164 | 416 /* tree node tags end */ |
417 | |
453 | 418 /* statement start */ |
419 | |
602 | 420 #define ST_DECL 118 |
421 #define ST_IF 119 | |
422 #define ST_DO 120 | |
423 #define ST_WHILE 121 | |
424 #define ST_FOR 122 | |
425 #define ST_SWITCH 123 | |
426 #define ST_COMP 124 | |
427 #define ST_BREAK 125 | |
428 #define ST_CONTINUE 126 | |
429 #define ST_CASE 127 | |
430 #define ST_DEFAULT 128 | |
431 #define ST_RETURN 129 | |
432 #define ST_GOTO 130 | |
433 #define ST_ASM 131 | |
434 #define ST_LABEL 132 | |
435 #define ST_OP 133 | |
436 #define ST_COMMENT 134 | |
453 | 437 |
509 | 438 #define IS_STATEMENT(i) (i==INLINE||(ST_DECL<=i&&i<=ST_COMMENT)) |
453 | 439 |
602 | 440 #define HAS_ADDRESS 135 |
526 | 441 |
453 | 442 /* statement end */ |
443 | |
164 | 444 /* error number start */ |
0 | 445 |
327 | 446 #define FILERR 1 |
447 #define DCERR 2 | |
448 #define RDERR 3 | |
449 #define STERR 4 | |
450 #define EXERR 5 | |
451 #define CNERR 6 | |
452 #define CHERR 7 | |
453 #define GSERR 8 | |
454 #define LSERR 9 | |
455 #define STRERR 10 | |
456 #define LNERR 11 | |
457 #define EOFERR 12 | |
458 #define MCERR 13 | |
459 #define INCERR 14 | |
460 #define HPERR 15 | |
461 #define TYERR 16 | |
462 #define LVERR 17 | |
463 #define UDERR 18 | |
464 #define OPTION 19 | |
465 #define REG_ERR 20 | |
389 | 466 #define RGERR 21 |
467 #define CODE_ERR 22 | |
468 #define MSERR 23 | |
469 #define BTERR 24 | |
470 #define HSERR 25 | |
471 #define NMERR 26 | |
472 #define MMERR 27 | |
473 #define INERR 28 | |
523 | 474 #define AGERR 29 |
475 #define ILERR 30 | |
558 | 476 #define CSERR 31 |
572 | 477 #define GTERR 32 |
478 #define FNERR 33 | |
479 #define UCERR 34 | |
480 #define UFERR 35 | |
574 | 481 #define ENERR 36 |
482 #define SIERR 37 | |
327 | 483 |
164 | 484 /* error number end */ |
0 | 485 |
526 | 486 /* ctmode bit */ |
487 | |
461 | 488 #define KONST_BIT 1 |
489 #define VOLATILE_BIT 2 | |
490 #define RESTRICT_BIT 4 | |
491 | |
25 | 492 #define FILES 10 |
327 | 493 #define MAX_INCLUDE_PATH_COUNT 10 |
448 | 494 /* |
495 For this comiler 8192*2 is Ok. Linux kernel requires 8192*4. | |
496 */ | |
447 | 497 #define GSYMS (8192*4) |
358 | 498 #define HEAPSIZE 30000 |
452 | 499 #define CHEAPSIZE (sizeof(NMTBL)*8192) |
327 | 500 #define LBUFSIZE 4096 |
347 | 501 #define STRSIZE 4096 |
254 | 502 |
0 | 503 typedef struct nametable { |
327 | 504 char *nm; |
348 | 505 struct nametable *next; |
445 | 506 int sc,attr; |
507 int ty,dsp; } NMTBL; | |
0 | 508 |
452 | 509 extern int *heap; /* heap area (in cheap ) */ |
510 extern NMTBL *global_list; /* list of all global NMTBL */ | |
511 extern NMTBL *local_static_list; /* list of local static variable */ | |
0 | 512 |
195 | 513 #if FLOAT_CODE |
81 | 514 extern int dlist2(int e1, double e2); |
195 | 515 #endif |
516 #if LONGLONG_CODE | |
517 extern int llist2(int e1, long long e2); | |
518 #endif | |
61 | 519 extern int list2(int e1, int e2); |
520 extern int list3(int e1, int e2, int e3); | |
521 extern int list4(int e1, int e2, int e3,int e4); | |
450
eaf9e2746c83
parallel assign for simple expr. (too complex solution)
kono
parents:
449
diff
changeset
|
522 extern int list5(int e1, int e2, int e3,int e4,int e5); |
318 | 523 extern int length(int e1); |
464 | 524 extern int getfree(int size); |
318 | 525 extern int nth(int n,int e1); |
61 | 526 extern int reverse0(int t1); |
527 extern int append4(int p,int a1,int a2,int a3); | |
450
eaf9e2746c83
parallel assign for simple expr. (too complex solution)
kono
parents:
449
diff
changeset
|
528 extern int append5(int p,int a1,int a2,int a3,int a4); |
309 | 529 extern int insert_ascend(int p,int e,int eq()); |
61 | 530 |
347 | 531 extern void free_nptr(NMTBL *n); |
532 extern NMTBL *get_nptr(); | |
346 | 533 |
590 | 534 #if 1 |
450
eaf9e2746c83
parallel assign for simple expr. (too complex solution)
kono
parents:
449
diff
changeset
|
535 extern int heapsize; |
467 | 536 #define CHECK_HEAP(b) ({int _k=(int)(b);if(_k>heapsize||_k<0)error(-1);_k;}) |
450
eaf9e2746c83
parallel assign for simple expr. (too complex solution)
kono
parents:
449
diff
changeset
|
537 #else |
eaf9e2746c83
parallel assign for simple expr. (too complex solution)
kono
parents:
449
diff
changeset
|
538 #define CHECK_HEAP(b) (b) |
eaf9e2746c83
parallel assign for simple expr. (too complex solution)
kono
parents:
449
diff
changeset
|
539 #endif |
33 | 540 |
450
eaf9e2746c83
parallel assign for simple expr. (too complex solution)
kono
parents:
449
diff
changeset
|
541 #define car(e) (heap[(int)(CHECK_HEAP(e))]) |
eaf9e2746c83
parallel assign for simple expr. (too complex solution)
kono
parents:
449
diff
changeset
|
542 |
eaf9e2746c83
parallel assign for simple expr. (too complex solution)
kono
parents:
449
diff
changeset
|
543 #define cadr(e) (heap[((int)(CHECK_HEAP(e)))+1]) |
33 | 544 |
450
eaf9e2746c83
parallel assign for simple expr. (too complex solution)
kono
parents:
449
diff
changeset
|
545 #define caddr(e) (heap[((int)(CHECK_HEAP(e)))+2]) |
33 | 546 |
450
eaf9e2746c83
parallel assign for simple expr. (too complex solution)
kono
parents:
449
diff
changeset
|
547 #define cadddr(e) (heap[((int)(CHECK_HEAP(e)))+3]) |
eaf9e2746c83
parallel assign for simple expr. (too complex solution)
kono
parents:
449
diff
changeset
|
548 |
eaf9e2746c83
parallel assign for simple expr. (too complex solution)
kono
parents:
449
diff
changeset
|
549 #define caddddr(e) (heap[((int)(CHECK_HEAP(e)))+4]) |
449 | 550 |
195 | 551 #if FLOAT_CODE |
81 | 552 #define dcadr(e) (*(double*)&heap[((int)(e))+1]) |
553 #define dcaddr(e) (*(double*)&heap[((int)(e))+2]) | |
195 | 554 #endif |
555 | |
556 #if LONGLONG_CODE | |
557 #define lcadr(e) (*(long long*)&heap[((int)(e))+1]) | |
558 #define lcaddr(e) (*(long long*)&heap[((int)(e))+2]) | |
559 #endif | |
81 | 560 |
33 | 561 /* end */ |