Annotation of researchv9/cmd/sun/c2/oper.h, revision 1.1.1.1

1.1       root        1: /*     @(#)oper.h 1.1 86/02/03 SMI     */
                      2: 
                      3: /*
                      4:  * Copyright (c) 1985 by Sun Microsystems, Inc.
                      5:  */
                      6: 
                      7: /* operand types */
                      8: /* T_PCPLUS used inside ins.c only! */
                      9: typedef enum { T_NULL=0, T_REG, T_DEFER, T_POSTINC, T_PREDEC, T_DISPL, T_INDEX,
                     10:               T_ABSS, T_ABSL, T_IMMED, T_NORMAL, 
                     11:               T_REGPAIR, T_STRING, T_FLOAT, T_PCPLUS,
                     12:               T_REGLIST, T_FREGLIST, T_FCREGLIST
                     13: } operand_t;
                     14: 
                     15: 
                     16: /* operand structure */
                     17: struct oper {
                     18:        operand_t       type_o :8;      /* operand type info            */
                     19:        unsigned        flags_o:16,     /* operand flags                */
                     20:                        reg_o:8,        /* Register subfield value      */
                     21:                        scale_o:8;      /* index scale factor           */
                     22:        struct sym_bkt  *sym_o;         /* symbol used for relocation   */
                     23:        struct sym_bkt  *sym2_o;                /* symbol used for relocation   */
                     24: #if C2
                     25:        struct oper     *nsym_o;                /* chain of users of this symbol */
                     26: #endif
                     27:        long            value_o;        /* register # for T_REG, offset for T_DISPL */
                     28:        double          fval_o;         /* floating-point value for T_FLOAT */
                     29:        char           *stringval_o;    /* string pointer for T_STRING */
                     30:        long            disp_o;         /* displacement value for index mode */
                     31:        long            disp2_o;        /* displacement value for full index mode */
                     32:        unsigned                access_o;       /* access bits */
                     33:        int             bfoffset_o;     /* bit-field offset modifier    */
                     34:        int             bfwidth_o;      /* bit-field width modifier     */
                     35: 
                     36: };
                     37: 
                     38: /* operand flags */
                     39: #define O_WINDEX  1
                     40: #define O_LINDEX  2
                     41: #define O_COMPLEX 4
                     42: #define O_BFLD    010  /* bit field modifier */
                     43: #define O_COMPLEX2 040000 /* second displacement of index is complex */
                     44: #define O_FLOAT          0100000 /* immediate value is floating-point */
                     45: /* modifiers for full indexing mode */
                     46: #define O_BSUPRESS 020  /* base  supress */
                     47: #define O_INDIRECT 040  /* memory indirect */
                     48: #define O_POSTINDEX 0100 /* index after indirection */
                     49: #define O_PREINDEX 0200 /* index before indirection */
                     50: #define O_WDISP    0400 /* word-length displacement */
                     51: #define O_LDISP    01000 /* long-length displacement */
                     52: #define O_LDISP2   02000 /* long-length 2nd displacement */
                     53: #define O_WDISP2   04000 /* word-length 2nd displacement */
                     54: /* modifiers for bit fields */
                     55: #define O_BFOREG   010000 /* offset field is a register */
                     56: #define O_BFWREG   020000 /* width field is a register */
                     57: 
                     58: struct optree {
                     59:     struct oper  *right_t;
                     60:     struct oper  *left_t;
                     61:     char op_t;
                     62: };

unix.superglobalmegacorp.com

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