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