Logo Search packages:      
Sourcecode: linux86 version File versions  Download package

const.h

#define align(x)        /* ((x) = ((int) (x) + (4-1)) & ~(4-1)) */
#define LOW_BYTE 0            /* must be changed for big-endian */

/* const.h - constants for assembler */

/* major switches */

#undef  I80386                /* generate 80386 code */
#define MC6809                /* generate 6809 code */
#define MNSIZE                /* allow byte size in mnemonic, e.g. "movb" */
#undef  SOS_EDOS        /* source OS is EDOS */

/* defaults */

#define DIRCHAR '/'           /* character separating filename from dir */
#define INBUFSIZE 8192
#define SOS_EOLSTR "\012"

/* defaults modified by switches */

#ifdef SOS_EDOS
# undef INBUFSIZE
# define INBUFSIZE 512
# undef SOS_EOLSTR
# define SOS_EOLSTR "\015\012"
# define STAKSIZ 256          /* table grows up to stack less this */
#endif

/* booleans */

#define FALSE 0
#define TRUE 1

/* ASCII constants */

#define ETB  23

/* C tricks */

#define EXTERN extern
#define FORWARD static
#define PRIVATE static
#define PUBLIC
#define NULL 0

/* O/S constants */

#define CREAT_PERMS 0666
#define EOF (-1)
#define STDIN 0
#define STDOUT 1

/* register codes (internal to assembler) */

#ifdef I80386

/* index regs must be first */

#define BPREG 0
#define BXREG 1
#define DIREG 2
#define SIREG 3
#define MAX16BITINDREG 3

#define EAXREG 4
#define EBPREG 5
#define EBXREG 6
#define ECXREG 7
#define EDIREG 8
#define EDXREG 9
#define ESIREG 10
#define ESPREG 11
#define MAXINDREG 11

#define AXREG 12
#define CXREG 13
#define DXREG 14
#define SPREG 15

#define AHREG 16
#define ALREG 17
#define BHREG 18
#define BLREG 19
#define CHREG 20
#define CLREG 21
#define DHREG 22
#define DLREG 23

#define CSREG 24
#define DSREG 25
#define ESREG 26
#define FSREG 27
#define GSREG 28
#define SSREG 29

#define CR0REG 30
#define CR2REG 31
#define CR3REG 32
#define DR0REG 33
#define DR1REG 34
#define DR2REG 35
#define DR3REG 36
#define DR6REG 37
#define DR7REG 38
#define TR6REG 39
#define TR7REG 40

#define NOREG 41

#endif                        /* I80386 */

#ifdef MC6809

/* index regs must be first, then PC, then other regs */

#define AREG  5
#define BREG  6
#define CCREG 7
#define DPREG 8
#define DREG  9
#define MAXINDREG 3
#define NOREG 10
#define PCREG 4
#define SREG  0
#define UREG  1
#define XREG  2
#define YREG  3

#endif

#ifdef I80386

/* type and size keywords */

#define BYTEOP     0
#define DWORDOP    1
#define FWORDOP    2
#define FAROP      3
#define PTROP      4
#define PWORDOP    5
#define QWORDOP    6
#define TBYTEOP    7
#define WORDOP     8
#endif

/* special chars */

#define EOL       0
#define MACROCHAR '?'

/* symbol codes */

/* the first 2 must be from chars in identifiers */
#define IDENT           0
#define INTCONST  1

/* the next few are best for other possibly-multi-char tokens */
#define ADDOP           2     /* also ++ */
#define BINCONST  3
#define CHARCONST 4
#define GREATERTHAN     5     /* also >> and context-sensitive */
#define HEXCONST  6
#define LESSTHAN  7     /* also << and context-sensitive */
#define SUBOP           8     /* also -- */
#define WHITESPACE      9

#define ANDOP           10
#define COMMA           11
#define EOLSYM          12
#define EQOP            13
#define IMMEDIATE 14
#define INDIRECT  15
#define LBRACKET  16
#define LPAREN          17
#define MACROARG  18
#define NOTOP           19
#define OROP            20
#define OTHERSYM  21
#define POSTINCOP 22
#define PREDECOP  23
#define RBRACKET  24
#define RPAREN          25
#define SLASH           26    /* context-sensitive */
#define SLOP            27
#define SROP            28
#define STAR            29    /* context-sensitive */
#define STRINGCONST     30
#define COLON           31

/* these are from assembler errors module */

/* syntax errors */

#define COMEXP 0
#define DELEXP 1
#define FACEXP 2
#define IREGEXP 3
#define LABEXP 4
#define LPEXP 5
#define OPEXP 6
#define RBEXP 7
#define REGEXP 8
#define RPEXP 9
#define SPEXP 10

/* expression errors */

#define ABSREQ 11
#define NONIMPREQ 12
#define RELBAD 13

/* label errors */

#define ILLAB 14
#define MACUID 15
#define MISLAB 16
#define MNUID 17
#define REGUID 18
#define RELAB 19
#define UNBLAB 20
#define UNLAB 21
#define VARLAB 22

/* addressing errors */

#define ABOUNDS 23
#define DBOUNDS 24
#define ILLMOD 25
#define ILLREG 26

/* control structure errors */

#define ELSEBAD 27
#define ELSEIFBAD 27
#define ENDBBAD 28
#define ENDIFBAD 27
#define EOFBLOCK 29
#define EOFIF 30

#define EOFLC 31
#define EOFMAC 32
#define FAILERR 33

/* overflow errors */

#define BLOCKOV 34
#define BWRAP 35
#define COUNTOV 36
#define COUNTUN 37
#define GETOV 38
#define IFOV 39

#define LINLONG 40
#define MACOV 41
#define OBJSYMOV 42
#define OWRITE 43
#define PAROV 44
#define SYMOV 45
#define SYMOUTOV 46

/* i/o errors */

#define OBJOUT 47

/* miscellaneous errors */

#define CTLINS 48
#define FURTHER 49
#define NOIMPORT 50
#define NOTIMPLEMENTED 51
#define REENTER 52
#define SEGREL 53

/* warnings */

#define MINWARN 54
#define ALREADY 54
#define SHORTB 55

/* symbol table entry */

                        /* type entry contains following flags */
#define ENTBIT   (1<<0)       /* entry point (=OBJ_N_MASK) */
#define COMMBIT  (1<<1)       /* common */
#define LABIT    (1<<2)       /* label (a PC location or defined by EQU) */
#define MNREGBIT (1<<3)       /* mnemonic for op or pseudo-op, or register */
#define MACBIT   (1<<4)       /* macro */
#define REDBIT   (1<<5)       /* redefined */
#define VARBIT   (1<<6)       /* variable (i.e. something defined by SET) */
#define EXPBIT   (1<<7)       /* exported (= OBJ_E_MASK) */

                        /* data entry contains following flags, valid */
                        /* for expressions as well as syms */
#define PAGE1    (1<<0)       /* page 1 machine op = MNREGBIT \ PAGE1 */
#define PAGE2    (1<<1)       /* page 2 machine op = MNREGBIT \ PAGE2 */
#define REGBIT   (1<<2)       /* register = MNREGBIT \ REGBIT */
#define SIZEBIT  (1<<3)       /* sizing mnemonic = MNREGBIT \ SIZEBIT */
#define SEGM     15           /* 1st 4 bits reused for segment if !MNREGBIT */
#define RELBIT   (1<<4)       /* relative (= OBJ_A_MASK) */
#define FORBIT   (1<<5)       /* forward referenced */
#define IMPBIT   (1<<6)       /* imported (= OBJ_I_MASK) */
#define UNDBIT   (1<<7)       /* undefined */

/* pseudo-op routine numbers */
/* conditionals are first, this is used to test if op is a conditional */

#define ELSEOP      0
#define ELSEIFOP    1
#define ELSEIFCOP   2
#define ENDIFOP     3
#define IFOP        4
#define IFCOP       5
#define MAXCOND     6         /* limit of conditionals */

#define BLOCKOP     6
#define COMMOP      7
#define ENDOP       8
#define ENDBOP      9
#define ENTEROP    10
#define ENTRYOP    11
#define EQUOP      12
#define EXPORTOP   13
#define FAILOP     14
#define FCBOP      15
#define FCCOP      16
#define FDBOP      17
#define GETOP      18
#define IDENTOP    19
#define IMPORTOP   20
#define _LISTOP    21
#define LOCOP      22
#define _MACLISTOP 23
#define MACROOP    24
#define _MAPOP     25
#define ORGOP      26
#define RMBOP      27
#define SETOP      28
#define SETDPOP    29
#define _WARNOP    30

#ifdef I80386

/* further pseudo-ops */

#define BSSOP      31
#define COMMOP1    32
#define DATAOP     33
#define TEXTOP     34
#define USE16OP    35
#define USE32OP    36

/* machine-op routine numbers */

#define ARPL       37
#define BCC        38
#define BOUND      39
#define CALL       40
#define DIVMUL     41
#define ENTER      42
#define GROUP1     43
#define GROUP2     44
#define GROUP6     45
#define GROUP7     46
#define GROUP8     47
#define GvEv       48
#define IMUL       49
#define IN         50
#define INCDEC     51
#define INHER      52
#define INHER16    53
#define INHER32    54
#define INHER_A    55
#define INT        56
#define JCC        57
#define JCXZ       58
#define LEA        59
#define LOAD_FULL_POINTER 60
#define MOV        61
#define MOVX       62
#define NEGNOT     63
#define OUT        64
#define PUSHPOP    65
#define RET        66
#define RETF       67
#define SEG        68
#define SETCC      69
#define SH_DOUBLE  70
#define TEST       71
#define XCHG       72

/* further pseudo-ops */

#define BLKWOP     73
#define EVENOP     74
#define FQBOP      75
#define ALIGNOP    76

/* further machine-ops */

#define CALLI      77

/* yet further pseudo-ops */

#define LCOMMOP    78
#define LCOMMOP1   79

#endif                        /* I80386 */

#ifdef MC6809

/* machine-op routine numbers */

#define ALL        31         /* all address modes allowed, like LDA */
#define ALTER      32         /* all but immediate, like STA */
#define IMMED      33         /* immediate only (ANDCC, ORCC) */
#define INDEXD     34         /* indexed (LEA's) */
#define INHER      35         /* inherent, like CLC or CLRA */
#define LONG       36         /* long branches */
#define SHORT      37         /* short branches */
#define SSTAK      38         /* S-stack (PSHS, PULS) */
#define SWAP       39         /* TFR, EXG */
#define USTAK      40         /* U-stack (PSHU,PULU) */

/* yet further pseudo-ops */

#define LCOMMOP    41

#endif

/* object code format (Introl) */

#define OBJ_SEGSZ_TWO  0x02   /* size 2 code for segment size descriptor */

#define OBJ_MAX_ABS_LEN  64   /* max length of chunk of absolute code */

#define OBJ_ABS        0x40   /* absolute code command */
#define OBJ_OFFSET_REL 0x80   /* offset relocation command */
#define OBJ_SET_SEG    0x20   /* set segment command */
#define OBJ_SKIP_1     0x11   /* skip with 1 byte count */
#define OBJ_SKIP_2     0x12   /* skip with 2 byte count */
#define OBJ_SKIP_4     0x13   /* skip with 4 byte count */
#define OBJ_SYMBOL_REL 0xC0   /* symbol relocation command */

#define OBJ_A_MASK     0x10   /* absolute bit(symbols) */
#if OBJ_A_MASK - RELBIT       /* must match internal format (~byte 1 -> 0) */
oops - RELBIT misplaced
#endif
#define OBJ_E_MASK     0x80   /* exported bit (symbols) */
#if OBJ_E_MASK - EXPBIT       /* must match internal format (byte 0 -> 0) */
oops - EXPBIT misplaced
#endif
#define OBJ_I_MASK     0x40   /* imported bit (symbols) */
#if OBJ_I_MASK - IMPBIT       /* must match internal format (byte 1 -> 0) */
oops - IMPBIT misplaced
#endif
#define OBJ_N_MASK     0x01   /* entry bit (symbols) */
#if OBJ_N_MASK - ENTBIT       /* must match internal format (byte 0 -> 1) */
oops - ENTBIT misplaced
#endif
#define OBJ_SA_MASK    0x20   /* size allocation bit (symbols) */
#define OBJ_SZ_ONE     0x40   /* size one code for symbol value */
#define OBJ_SZ_TWO     0x80   /* size two code for symbol value */
#define OBJ_SZ_FOUR    0xC0   /* size four code for symbol value */

#define OBJ_R_MASK     0x20   /* PC-rel bit (off & sym reloc commands) */
#define OBJ_SEGM_MASK  0x0F   /* segment mask (symbols, off reloc command) */

#define OBJ_OF_MASK    0x03   /* offset size code for symbol reloc */
#define OBJ_S_MASK     0x04   /* symbol number size code for symbol reloc */

#define SYMLIS_NAMELEN 26
#define SYMLIS_LEN (sizeof (struct sym_listing_s))

#define FILNAMLEN 64          /* max length of a file name */
#define LINLEN 256            /* max length of input line */
#define LINUM_LEN 5           /* length of formatted line number */

#define SPTSIZ 1024           /* number of symbol ptrs */
                        /* pseudo-op flags */
#define POPHI 1               /* set to print hi byte of adr */
#define POPLO 2               /* to print lo byte of ADR */
#define POPLC 4               /* to print LC */
#define POPLONG 8       /* to print high word of ADR */
#define MAXBLOCK 8            /* max nesting level of BLOCK stack */
#define MAXGET 8        /* max nesting level of GET stack */
#define MAXIF 8               /* max nesting level of IF stack */
#define MACPSIZ (128/sizeof (struct schain_s))
                        /* size of macro param buffer */
#define MAXMAC 8        /* max nesting level of macro stack */
#define NLOC 16               /* number of location counters */
#ifdef I80386
#define NO_SIB 0340           /* illegal sib (3 with 4) to mean no sib */
#endif

/* special segments */

#define BSSLOC 3
#define DATALOC 3
#define DPLOC 2
#define STRLOC 1
#define TEXTLOC 0

Generated by  Doxygen 1.6.0   Back to index