|
|
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 ONLYSMALL DECVAX compiler. ! 6: */ ! 7: #define DATE "07/11/89" /* Date */ ! 8: #define VERSMWC "V3.0.7" /* MWC version number */ ! 9: #define VERSINT "X324" /* Intel version number */ ! 10: ! 11: #define EATDOL 0 /* Eat '$' in identifiers? */ ! 12: #define IEEE 0 /* IEEE format? */ ! 13: #define DECVAX 1 /* DECVAX format? */ ! 14: #define NATIVEFP 1 /* Host fp == target fp? */ ! 15: #define MCFFP 0 /* Motorola fast floating point? */ ! 16: #define TINY 1 /* 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 1 /* Coherent/Rainbow .s format? */ ! 24: #define INTEL 0 /* Intel copyright? */ ! 25: #define OMF286 0 /* 286 object format? */ ! 26: #define TEMPBUF 0 /* Memory tempfile buffers? */ ! 27: ! 28: #define NDP 0 /* 8087? */ ! 29: #define EMUFIXUPS 0 /* M: 8087 emulation fixups? */ ! 30: #define ONLYSMALL 1 /* 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 */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.