* added compilers lcc and bcc (linux86)
[mascara-docs.git] / compilers / linux86-0.16.17 / as / 6809 / const.h
blobabd94694533e59c912fed345d96df3dc736db83e
1 #define align(x) /* ((x) = ((int) (x) + (4-1)) & ~(4-1)) */
2 #define LOW_BYTE 0 /* must be changed for big-endian */
4 /* const.h - constants for assembler */
6 /* major switches */
8 #undef I80386 /* generate 80386 code */
9 #define MC6809 /* generate 6809 code */
10 #define MNSIZE /* allow byte size in mnemonic, e.g. "movb" */
11 #undef SOS_EDOS /* source OS is EDOS */
13 /* defaults */
15 #define DIRCHAR '/' /* character separating filename from dir */
16 #define INBUFSIZE 8192
17 #define SOS_EOLSTR "\012"
19 /* defaults modified by switches */
21 #ifdef SOS_EDOS
22 # undef INBUFSIZE
23 # define INBUFSIZE 512
24 # undef SOS_EOLSTR
25 # define SOS_EOLSTR "\015\012"
26 # define STAKSIZ 256 /* table grows up to stack less this */
27 #endif
29 /* booleans */
31 #define FALSE 0
32 #define TRUE 1
34 /* ASCII constants */
36 #define ETB 23
38 /* C tricks */
40 #define EXTERN extern
41 #define FORWARD static
42 #define PRIVATE static
43 #define PUBLIC
44 #define NULL 0
46 /* O/S constants */
48 #define CREAT_PERMS 0666
49 #define EOF (-1)
50 #define STDIN 0
51 #define STDOUT 1
53 /* register codes (internal to assembler) */
55 #ifdef I80386
57 /* index regs must be first */
59 #define BPREG 0
60 #define BXREG 1
61 #define DIREG 2
62 #define SIREG 3
63 #define MAX16BITINDREG 3
65 #define EAXREG 4
66 #define EBPREG 5
67 #define EBXREG 6
68 #define ECXREG 7
69 #define EDIREG 8
70 #define EDXREG 9
71 #define ESIREG 10
72 #define ESPREG 11
73 #define MAXINDREG 11
75 #define AXREG 12
76 #define CXREG 13
77 #define DXREG 14
78 #define SPREG 15
80 #define AHREG 16
81 #define ALREG 17
82 #define BHREG 18
83 #define BLREG 19
84 #define CHREG 20
85 #define CLREG 21
86 #define DHREG 22
87 #define DLREG 23
89 #define CSREG 24
90 #define DSREG 25
91 #define ESREG 26
92 #define FSREG 27
93 #define GSREG 28
94 #define SSREG 29
96 #define CR0REG 30
97 #define CR2REG 31
98 #define CR3REG 32
99 #define DR0REG 33
100 #define DR1REG 34
101 #define DR2REG 35
102 #define DR3REG 36
103 #define DR6REG 37
104 #define DR7REG 38
105 #define TR6REG 39
106 #define TR7REG 40
108 #define NOREG 41
110 #endif /* I80386 */
112 #ifdef MC6809
114 /* index regs must be first, then PC, then other regs */
116 #define AREG 5
117 #define BREG 6
118 #define CCREG 7
119 #define DPREG 8
120 #define DREG 9
121 #define MAXINDREG 3
122 #define NOREG 10
123 #define PCREG 4
124 #define SREG 0
125 #define UREG 1
126 #define XREG 2
127 #define YREG 3
129 #endif
131 #ifdef I80386
133 /* type and size keywords */
135 #define BYTEOP 0
136 #define DWORDOP 1
137 #define FWORDOP 2
138 #define FAROP 3
139 #define PTROP 4
140 #define PWORDOP 5
141 #define QWORDOP 6
142 #define TBYTEOP 7
143 #define WORDOP 8
144 #endif
146 /* special chars */
148 #define EOL 0
149 #define MACROCHAR '?'
151 /* symbol codes */
153 /* the first 2 must be from chars in identifiers */
154 #define IDENT 0
155 #define INTCONST 1
157 /* the next few are best for other possibly-multi-char tokens */
158 #define ADDOP 2 /* also ++ */
159 #define BINCONST 3
160 #define CHARCONST 4
161 #define GREATERTHAN 5 /* also >> and context-sensitive */
162 #define HEXCONST 6
163 #define LESSTHAN 7 /* also << and context-sensitive */
164 #define SUBOP 8 /* also -- */
165 #define WHITESPACE 9
167 #define ANDOP 10
168 #define COMMA 11
169 #define EOLSYM 12
170 #define EQOP 13
171 #define IMMEDIATE 14
172 #define INDIRECT 15
173 #define LBRACKET 16
174 #define LPAREN 17
175 #define MACROARG 18
176 #define NOTOP 19
177 #define OROP 20
178 #define OTHERSYM 21
179 #define POSTINCOP 22
180 #define PREDECOP 23
181 #define RBRACKET 24
182 #define RPAREN 25
183 #define SLASH 26 /* context-sensitive */
184 #define SLOP 27
185 #define SROP 28
186 #define STAR 29 /* context-sensitive */
187 #define STRINGCONST 30
188 #define COLON 31
190 /* these are from assembler errors module */
192 /* syntax errors */
194 #define COMEXP 0
195 #define DELEXP 1
196 #define FACEXP 2
197 #define IREGEXP 3
198 #define LABEXP 4
199 #define LPEXP 5
200 #define OPEXP 6
201 #define RBEXP 7
202 #define REGEXP 8
203 #define RPEXP 9
204 #define SPEXP 10
206 /* expression errors */
208 #define ABSREQ 11
209 #define NONIMPREQ 12
210 #define RELBAD 13
212 /* label errors */
214 #define ILLAB 14
215 #define MACUID 15
216 #define MISLAB 16
217 #define MNUID 17
218 #define REGUID 18
219 #define RELAB 19
220 #define UNBLAB 20
221 #define UNLAB 21
222 #define VARLAB 22
224 /* addressing errors */
226 #define ABOUNDS 23
227 #define DBOUNDS 24
228 #define ILLMOD 25
229 #define ILLREG 26
231 /* control structure errors */
233 #define ELSEBAD 27
234 #define ELSEIFBAD 27
235 #define ENDBBAD 28
236 #define ENDIFBAD 27
237 #define EOFBLOCK 29
238 #define EOFIF 30
240 #define EOFLC 31
241 #define EOFMAC 32
242 #define FAILERR 33
244 /* overflow errors */
246 #define BLOCKOV 34
247 #define BWRAP 35
248 #define COUNTOV 36
249 #define COUNTUN 37
250 #define GETOV 38
251 #define IFOV 39
253 #define LINLONG 40
254 #define MACOV 41
255 #define OBJSYMOV 42
256 #define OWRITE 43
257 #define PAROV 44
258 #define SYMOV 45
259 #define SYMOUTOV 46
261 /* i/o errors */
263 #define OBJOUT 47
265 /* miscellaneous errors */
267 #define CTLINS 48
268 #define FURTHER 49
269 #define NOIMPORT 50
270 #define NOTIMPLEMENTED 51
271 #define REENTER 52
272 #define SEGREL 53
274 /* warnings */
276 #define MINWARN 54
277 #define ALREADY 54
278 #define SHORTB 55
280 /* symbol table entry */
282 /* type entry contains following flags */
283 #define ENTBIT (1<<0) /* entry point (=OBJ_N_MASK) */
284 #define COMMBIT (1<<1) /* common */
285 #define LABIT (1<<2) /* label (a PC location or defined by EQU) */
286 #define MNREGBIT (1<<3) /* mnemonic for op or pseudo-op, or register */
287 #define MACBIT (1<<4) /* macro */
288 #define REDBIT (1<<5) /* redefined */
289 #define VARBIT (1<<6) /* variable (i.e. something defined by SET) */
290 #define EXPBIT (1<<7) /* exported (= OBJ_E_MASK) */
292 /* data entry contains following flags, valid */
293 /* for expressions as well as syms */
294 #define PAGE1 (1<<0) /* page 1 machine op = MNREGBIT \ PAGE1 */
295 #define PAGE2 (1<<1) /* page 2 machine op = MNREGBIT \ PAGE2 */
296 #define REGBIT (1<<2) /* register = MNREGBIT \ REGBIT */
297 #define SIZEBIT (1<<3) /* sizing mnemonic = MNREGBIT \ SIZEBIT */
298 #define SEGM 15 /* 1st 4 bits reused for segment if !MNREGBIT */
299 #define RELBIT (1<<4) /* relative (= OBJ_A_MASK) */
300 #define FORBIT (1<<5) /* forward referenced */
301 #define IMPBIT (1<<6) /* imported (= OBJ_I_MASK) */
302 #define UNDBIT (1<<7) /* undefined */
304 /* pseudo-op routine numbers */
305 /* conditionals are first, this is used to test if op is a conditional */
307 #define ELSEOP 0
308 #define ELSEIFOP 1
309 #define ELSEIFCOP 2
310 #define ENDIFOP 3
311 #define IFOP 4
312 #define IFCOP 5
313 #define MAXCOND 6 /* limit of conditionals */
315 #define BLOCKOP 6
316 #define COMMOP 7
317 #define ENDOP 8
318 #define ENDBOP 9
319 #define ENTEROP 10
320 #define ENTRYOP 11
321 #define EQUOP 12
322 #define EXPORTOP 13
323 #define FAILOP 14
324 #define FCBOP 15
325 #define FCCOP 16
326 #define FDBOP 17
327 #define GETOP 18
328 #define IDENTOP 19
329 #define IMPORTOP 20
330 #define _LISTOP 21
331 #define LOCOP 22
332 #define _MACLISTOP 23
333 #define MACROOP 24
334 #define _MAPOP 25
335 #define ORGOP 26
336 #define RMBOP 27
337 #define SETOP 28
338 #define SETDPOP 29
339 #define _WARNOP 30
341 #ifdef I80386
343 /* further pseudo-ops */
345 #define BSSOP 31
346 #define COMMOP1 32
347 #define DATAOP 33
348 #define TEXTOP 34
349 #define USE16OP 35
350 #define USE32OP 36
352 /* machine-op routine numbers */
354 #define ARPL 37
355 #define BCC 38
356 #define BOUND 39
357 #define CALL 40
358 #define DIVMUL 41
359 #define ENTER 42
360 #define GROUP1 43
361 #define GROUP2 44
362 #define GROUP6 45
363 #define GROUP7 46
364 #define GROUP8 47
365 #define GvEv 48
366 #define IMUL 49
367 #define IN 50
368 #define INCDEC 51
369 #define INHER 52
370 #define INHER16 53
371 #define INHER32 54
372 #define INHER_A 55
373 #define INT 56
374 #define JCC 57
375 #define JCXZ 58
376 #define LEA 59
377 #define LOAD_FULL_POINTER 60
378 #define MOV 61
379 #define MOVX 62
380 #define NEGNOT 63
381 #define OUT 64
382 #define PUSHPOP 65
383 #define RET 66
384 #define RETF 67
385 #define SEG 68
386 #define SETCC 69
387 #define SH_DOUBLE 70
388 #define TEST 71
389 #define XCHG 72
391 /* further pseudo-ops */
393 #define BLKWOP 73
394 #define EVENOP 74
395 #define FQBOP 75
396 #define ALIGNOP 76
398 /* further machine-ops */
400 #define CALLI 77
402 /* yet further pseudo-ops */
404 #define LCOMMOP 78
405 #define LCOMMOP1 79
407 #endif /* I80386 */
409 #ifdef MC6809
411 /* machine-op routine numbers */
413 #define ALL 31 /* all address modes allowed, like LDA */
414 #define ALTER 32 /* all but immediate, like STA */
415 #define IMMED 33 /* immediate only (ANDCC, ORCC) */
416 #define INDEXD 34 /* indexed (LEA's) */
417 #define INHER 35 /* inherent, like CLC or CLRA */
418 #define LONG 36 /* long branches */
419 #define SHORT 37 /* short branches */
420 #define SSTAK 38 /* S-stack (PSHS, PULS) */
421 #define SWAP 39 /* TFR, EXG */
422 #define USTAK 40 /* U-stack (PSHU,PULU) */
424 /* yet further pseudo-ops */
426 #define LCOMMOP 41
428 #endif
430 /* object code format (Introl) */
432 #define OBJ_SEGSZ_TWO 0x02 /* size 2 code for segment size descriptor */
434 #define OBJ_MAX_ABS_LEN 64 /* max length of chunk of absolute code */
436 #define OBJ_ABS 0x40 /* absolute code command */
437 #define OBJ_OFFSET_REL 0x80 /* offset relocation command */
438 #define OBJ_SET_SEG 0x20 /* set segment command */
439 #define OBJ_SKIP_1 0x11 /* skip with 1 byte count */
440 #define OBJ_SKIP_2 0x12 /* skip with 2 byte count */
441 #define OBJ_SKIP_4 0x13 /* skip with 4 byte count */
442 #define OBJ_SYMBOL_REL 0xC0 /* symbol relocation command */
444 #define OBJ_A_MASK 0x10 /* absolute bit(symbols) */
445 #if OBJ_A_MASK - RELBIT /* must match internal format (~byte 1 -> 0) */
446 oops - RELBIT misplaced
447 #endif
448 #define OBJ_E_MASK 0x80 /* exported bit (symbols) */
449 #if OBJ_E_MASK - EXPBIT /* must match internal format (byte 0 -> 0) */
450 oops - EXPBIT misplaced
451 #endif
452 #define OBJ_I_MASK 0x40 /* imported bit (symbols) */
453 #if OBJ_I_MASK - IMPBIT /* must match internal format (byte 1 -> 0) */
454 oops - IMPBIT misplaced
455 #endif
456 #define OBJ_N_MASK 0x01 /* entry bit (symbols) */
457 #if OBJ_N_MASK - ENTBIT /* must match internal format (byte 0 -> 1) */
458 oops - ENTBIT misplaced
459 #endif
460 #define OBJ_SA_MASK 0x20 /* size allocation bit (symbols) */
461 #define OBJ_SZ_ONE 0x40 /* size one code for symbol value */
462 #define OBJ_SZ_TWO 0x80 /* size two code for symbol value */
463 #define OBJ_SZ_FOUR 0xC0 /* size four code for symbol value */
465 #define OBJ_R_MASK 0x20 /* PC-rel bit (off & sym reloc commands) */
466 #define OBJ_SEGM_MASK 0x0F /* segment mask (symbols, off reloc command) */
468 #define OBJ_OF_MASK 0x03 /* offset size code for symbol reloc */
469 #define OBJ_S_MASK 0x04 /* symbol number size code for symbol reloc */
471 #define SYMLIS_NAMELEN 26
472 #define SYMLIS_LEN (sizeof (struct sym_listing_s))
474 #define FILNAMLEN 64 /* max length of a file name */
475 #define LINLEN 256 /* max length of input line */
476 #define LINUM_LEN 5 /* length of formatted line number */
478 #define SPTSIZ 1024 /* number of symbol ptrs */
479 /* pseudo-op flags */
480 #define POPHI 1 /* set to print hi byte of adr */
481 #define POPLO 2 /* to print lo byte of ADR */
482 #define POPLC 4 /* to print LC */
483 #define POPLONG 8 /* to print high word of ADR */
484 #define MAXBLOCK 8 /* max nesting level of BLOCK stack */
485 #define MAXGET 8 /* max nesting level of GET stack */
486 #define MAXIF 8 /* max nesting level of IF stack */
487 #define MACPSIZ (128/sizeof (struct schain_s))
488 /* size of macro param buffer */
489 #define MAXMAC 8 /* max nesting level of macro stack */
490 #define NLOC 16 /* number of location counters */
491 #ifdef I80386
492 #define NO_SIB 0340 /* illegal sib (3 with 4) to mean no sib */
493 #endif
495 /* special segments */
497 #define BSSLOC 3
498 #define DATALOC 3
499 #define DPLOC 2
500 #define STRLOC 1
501 #define TEXTLOC 0