Annotation of coherent/b/bin/c/h/i8086/mchudi.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * This is the machine specific header file for the iAPX-86 compilers.
                      3:  * It is used in both the SMALL and LARGE models of segmentation.
                      4:  * It contains typedefs, register names and macros for all compiler phases.
                      5:  * This one produces a COHERENT-resident !TINY UDI compiler
                      6:  * which does both models and uses the 8087 with emulation fixups.
                      7:  */
                      8: #define        DATE            "11/18/87"      /* Date                 */
                      9: #define        VERSMWC         "V3.0.2"        /* MWC version number   */
                     10: #define        VERSINT         "X317"          /* Intel version number */
                     11: 
                     12: #define        EATDOL          1       /* Eat '$' in identifiers?      */
                     13: #define        IEEE            1       /* IEEE format?                 */
                     14: #define        DECVAX          0       /* DECVAX format?               */
                     15: #define MCFFP          0       /* Motorola fast floating point? */
                     16: #define        TINY            0       /* No code gen debug info?      */
                     17: #ifndef        YATC
                     18: #define        YATC            0       /* Not code table compile       */
                     19: #endif
                     20: #define RUNNING_LARGE  0       /* Long pointers?               */
                     21: #define        SIZEOF_LARGE    0       /* long sizeof_t fields         */
                     22: #define SPLIT_CC1      0       /* CC1A-CC1B?                   */
                     23: #define AS_FORMAT      0       /* Coherent/Rainbow .s format?  */
                     24: #define        INTEL           1       /* Intel copyright?             */
                     25: #define        OMF286          0       /* 286 object format?           */
                     26: #define        TEMPBUF         0       /* Memory tempfile buffers?     */
                     27: 
                     28: #define        NDP             1       /* 8087?                        */
                     29: #define        EMUFIXUPS       1       /* M: 8087 emulation fixups?    */
                     30: #define ONLYSMALL      0       /* Just SMALL model?            */
                     31: 
                     32: /*
                     33:  * Types.
                     34:  */
                     35: #define        S8      0               /* Signed byte */
                     36: #define        U8      1               /* Unsigned byte */
                     37: #define        S16     2               /* Signed word */
                     38: #define        U16     3               /* Unsigned word */
                     39: #define        S32     4               /* Signed long */
                     40: #define        U32     5               /* Unsigned long */
                     41: #define        F32     6               /* Short floating point */
                     42: #define        F64     7               /* Long  floating point */
                     43: #define        BLK     8               /* Block of bytes */
                     44: #define        FLD8    9               /* Field, byte wide */
                     45: #define        FLD16   10              /* Field, word wide */
                     46: #define        LPTR    11              /* Large (2 word) pointer */
                     47: #define        LPTB    12              /* Large (2 word) pointer to BLK */
                     48: #define        SPTR    13              /* Small (1 word) pointer */
                     49: #define        SPTB    14              /* Small (1 word) pointer to BLK */
                     50: 
                     51: #define        TRUTH   S16             /* Type used for truth values */
                     52: #define        LOFS    LPTR            /* Large, offset LEAF type */
                     53: #define        SOFS    SPTR            /* Small, offset LEAF type */
                     54: #define        IVAL_T  S16             /* Type for ival_t con */
                     55: #define        LVAL_T  S32             /* Type for lval_t con */
                     56: #define        DVAL_T  F64             /* Type for dval_t con */
                     57: #define        NBPBYTE 8               /* # of bits in a "byte" */
                     58: #define        NBPSTRG 8               /* Structure granularity */
                     59: 
                     60: /*
                     61:  * For each machine type there is
                     62:  * a flag bit type.
                     63:  */
                     64: #define        FS8     01
                     65: #define        FU8     02
                     66: #define        FS16    04
                     67: #define        FU16    010
                     68: #define        FS32    020
                     69: #define        FU32    040
                     70: #define        FF32    0100
                     71: #define        FF64    0200
                     72: #define        FBLK    0400
                     73: #define        FFLD8   01000
                     74: #define        FFLD16  02000
                     75: #define        FLPTR   04000
                     76: #define FLPTB  010000
                     77: #define        FSPTR   020000
                     78: #define FSPTB  040000
                     79: 
                     80: /*
                     81:  * Allocation types.
                     82:  */
                     83: #ifdef  vax
                     84: typedef        short   ival_t;         /* 16 bits */
                     85: typedef        int     lval_t;         /* 32 bits */
                     86: #else
                     87: typedef        int     ival_t;         /* ints */
                     88: typedef        long    lval_t;         /* longs */
                     89: #endif
                     90: typedef        char    dval_t[8];      /* doubles */
                     91: typedef int    sizeof_t;       /* sizeof constants */
                     92: 
                     93: /*
                     94:  * Limits.
                     95:  */
                     96: #define        MAXIV   32767L          /* Max integer */
                     97: #define        MAXUV   65535L          /* Max unsigned integer */
                     98: #define        MAXUCE  255             /* Max unsigned char enumeration */
                     99: #define        UIMASK  0xFFFF0000L     /* Unsigned int check mask */
                    100: #define        SIMASK  0xFFFF8000L     /* Signed int check mask */
                    101: #define        SLMASK  0x80000000L     /* Signed long check mask */
                    102: #define        ASMASK  0x0000FFFFL     /* Address space mask */
                    103: #define MAXMEMB        MAXIV           /* Max struct/union member offset */
                    104: #define        MAXESIZE MAXUV          /* Max struct/union/array size */
                    105: 
                    106: /*
                    107:  * Registers.
                    108:  * This list includes the machine's
                    109:  * actual registers, some registers that are
                    110:  * only given names for the benefit of the
                    111:  * code output routines, and the pseudo registers
                    112:  * used by the code generator.
                    113:  */
                    114: #define        AX      0
                    115: #define        DX      1
                    116: #define        BX      2
                    117: #define        CX      3
                    118: 
                    119: #define        SI      4
                    120: #define        DI      5
                    121: #define        SP      6
                    122: #define        BP      7
                    123: 
                    124: #define        FPAC    8
                    125: 
                    126: #define        ES      9
                    127: #define        CS      10
                    128: #define        SS      11
                    129: #define        DS      12
                    130: 
                    131: #define        DXAX    13
                    132: #define        CXBX    14
                    133: 
                    134: #define        SSSP    15
                    135: #define        SSBP    16
                    136: 
                    137: #define        ESAX    17
                    138: #define        ESBX    18
                    139: #define        ESSI    19
                    140: #define        ESDI    20
                    141: 
                    142: #define DSAX   21
                    143: #define DSBX   22
                    144: #define        DSSI    23
                    145: #define        DSDI    24
                    146: 
                    147: #define        AL      25
                    148: #define        BL      26
                    149: #define        CL      27
                    150: #define        DL      28
                    151: #define        AH      29
                    152: #define        BH      30
                    153: #define        CH      31
                    154: #define        DH      32
                    155: 
                    156: #define        NONE    33
                    157: #define        ANYR    34
                    158: #define        ANYL    35
                    159: #define        PAIR    36
                    160: #define        TEMP    37
                    161: #define        LOTEMP  38
                    162: #define        HITEMP  39
                    163: 
                    164: #define        NRREG   25      /* Number of real regs */
                    165: #define        NREG    40      /* Number of regs */
                    166: #define        FRREG   AX
                    167: 
                    168: #define        BAX     01
                    169: #define        BDX     02
                    170: #define        BBX     04
                    171: #define        BCX     010
                    172: #define        BSI     020
                    173: #define        BDI     040
                    174: #define        BSP     0100
                    175: #define        BBP     0200
                    176: #define        BFPAC   0400
                    177: #define        BES     01000
                    178: #define        BCS     02000
                    179: #define        BSS     04000
                    180: #define        BDS     010000
                    181: 
                    182: /*
                    183:  * Definitions for the "a_mode"
                    184:  * field of an AFIELD object. Some bits are
                    185:  * used only by the peephole optimizer routines in
                    186:  * the "mregstate" and "sregstate" tables.
                    187:  */
                    188: #define        A_REGM  0x000F          /* Register code, etc */
                    189: #define        A_AMOD  0x00F0          /* Address mode */
                    190: #define        A_PREFX 0x0F00          /* Escape prefix needed */
                    191: #define        A_EA    0x1000          /* Flag for peephole; effective address */
                    192: #define A_OFFS 0x2000          /* Flag for getfield; offset present */
                    193: #define        A_LID   0x4000          /* Flag for getfield; local id present */
                    194: #define        A_GID   0x8000          /* Flag for getfield; global id present */
                    195: 
                    196: #define        A_NONE  0               /* General "none" value */
                    197: 
                    198: #define        A_BR    (1<<4)          /* Byte register */
                    199: #define        A_WR    (2<<4)          /* Word register */
                    200: #define        A_SR    (3<<4)          /* Segment register */
                    201: #define        A_IMM   (4<<4)          /* Immediate */
                    202: #define        A_DIR   (5<<4)          /* Direct */
                    203: #define        A_X     (6<<4)          /* Indexed */
                    204: 
                    205: #define        A_ES    (1<<8)          /* ES: needed */
                    206: #define        A_CS    (2<<8)          /* CS: needed */
                    207: #define        A_SS    (3<<8)          /* SS: needed */
                    208: #define        A_DS    (4<<8)          /* DS: needed */
                    209: 
                    210: #define        A_XSI   (A_X|0x04)      /* [si] */
                    211: #define        A_XDI   (A_X|0x05)      /* [di] */
                    212: #define        A_XBP   (A_X|0x06)      /* [bp] */
                    213: #define        A_XBX   (A_X|0x07)      /* [bx] */
                    214: 
                    215: #define        A_RAX   (A_WR|0x00)     /* ax */
                    216: #define        A_RCX   (A_WR|0x01)     /* cx */
                    217: #define        A_RDX   (A_WR|0x02)     /* dx */
                    218: #define        A_RBX   (A_WR|0x03)     /* bx */
                    219: #define        A_RSP   (A_WR|0x04)     /* sp */
                    220: #define        A_RBP   (A_WR|0x05)     /* bp */
                    221: #define        A_RSI   (A_WR|0x06)     /* si */
                    222: #define        A_RDI   (A_WR|0x07)     /* di */
                    223: 
                    224: #define        A_RAL   (A_BR|0x00)     /* al */
                    225: #define        A_RCL   (A_BR|0x01)     /* cl */
                    226: #define        A_RDL   (A_BR|0x02)     /* dl */
                    227: #define        A_RBL   (A_BR|0x03)     /* bl */
                    228: #define        A_RAH   (A_BR|0x04)     /* ah */
                    229: #define        A_RCH   (A_BR|0x05)     /* ch */
                    230: #define        A_RDH   (A_BR|0x06)     /* dh */
                    231: #define        A_RBH   (A_BR|0x07)     /* bh */
                    232: 
                    233: #define        A_RES   (A_SR|0x00)     /* es */
                    234: #define        A_RCS   (A_SR|0x01)     /* cs */
                    235: #define        A_RSS   (A_SR|0x02)     /* ss */
                    236: #define        A_RDS   (A_SR|0x03)     /* ds */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.