Annotation of coherent/d/bin/cc/c/h/i8086/cc2mch.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * This file contains the machine
                      3:  * specific definitions used by the direct to
                      4:  * bits C compiler's final phase. This version is
                      5:  * for the Intel 8086 (SMALL and LARGE). This is
                      6:  * the new VAX base, including all edits up to
                      7:  * revision 48.
                      8:  */
                      9: typedef        unsigned short  ADDRESS;
                     10: typedef short          SIGNEDADDRESS;
                     11: 
                     12: #define        UNCON   ZJMP
                     13: #define        ischnrel(rel) (rel!=ZLOOP && rel!=ZLOOPE && rel!=ZLOOPNE && rel!=ZJCXZ)
                     14: #define        isrevrel(rel) (rel!=ZJMP && rel!=ZLOOP && rel!=ZLOOPE && rel!=ZLOOPNE && rel!=ZJCXZ)
                     15: 
                     16: /*
                     17:  * These definitions are used in the
                     18:  * opcode table. They tell the coder the style
                     19:  * of the instruction.
                     20:  */
                     21: #define        OF_BYTE    0            /* Byte data */
                     22: #define        OF_CALL    1            /* Direct call */
                     23: #define        OF_ICALL   2            /* Indirect call */
                     24: #define        OF_IN      3            /* In */
                     25: #define        OF_INH     4            /* Inherent (1 byte) */
                     26: #define        OF_INH2    5            /* One byte, 0x0A prefix */
                     27: #define        OF_INT     6            /* Interrupt */
                     28: #define        OF_JMP     7            /* Jumps */
                     29: #define        OF_LEA     8            /* Lea, lds, les */
                     30: #define        OF_REL     9            /* Jcxz, loops */
                     31: #define        OF_MUL     10           /* Mul and div */
                     32: #define        OF_MOV     11           /* Moves */
                     33: #define        OF_NRET    12           /* Return with pop of n */
                     34: #define        OF_OUT     13           /* Out */
                     35: #define        OF_POP     14           /* Pop */
                     36: #define        OF_PUSH    15           /* Push */
                     37: #define        OF_DOP     16           /* Double operand */
                     38: #define        OF_SHR     17           /* Shifts */
                     39: #define        OF_SOP     18           /* Single operand */
                     40: #define        OF_WORD    19           /* Word data */
                     41: #define        OF_XCALL   20           /* Cross segment calls */
                     42: #define        OF_DOPS    21           /* Double op, sw encoding valid */
                     43: #define        OF_FWAIT   22           /* FWAIT */
                     44: #define        OF_FRM     23           /* Floating point, uses standard address */
                     45: #define        OF_FD9     24           /* Single byte, D9 prefix */
                     46: #define        OF_FDE     25           /* Single byte, DE prefix */
                     47: #define        OF_LPTR    26           /* Local pointer (offset only) */
                     48: #define        OF_GPTR    27           /* Global pointer (segment and offset) */
                     49: #define        OF_FDD     28           /* Single byte, DD prefix */
                     50: #define        OF_MUL3    29           /* Multiply immediate, 3 operands */
                     51: 
                     52: #define        is8087op(op)    ((op)==OF_FWAIT||(op)==OF_FD9||(op)==OF_FDD||(op)==OF_FDE||(op)==OF_FRM)
                     53: 
                     54: /* Flags */
                     55: #define        OP_BYTE    010          /* Byte instruction */
                     56: #define        OP_NPTR    020          /* No PTR in output */
                     57: #define        OP_DWORD   040          /* Dword instruction */
                     58: 
                     59: /* If !EMUFIXUPS, the routines outf[bw]() write an absolute 8087 op. */
                     60: #if    !EMUFIXUPS
                     61: #define        outfb(b)        outab(b)
                     62: #define        outfw(w, pfx)   outaw(w)
                     63: #endif
                     64: 
                     65: /*
                     66:  * Externals.
                     67:  */
                     68: extern int     framesize;      /* Size of frame */
                     69: 

unix.superglobalmegacorp.com

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