Annotation of researchv9/jerq/sgs/dis/dis.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  *     static  char    *dish_ID[] = "@(#) dis.h: 1.3 12/14/83";
                      3:  */
                      4: 
                      5: /*
                      6:  *     This is the header file for the m32A disassembler.
                      7:  *     The information contained in the first part of the file
                      8:  *     is common to each version, while the last part is dependent
                      9:  *     on the particular machine architecture being used.
                     10:  */
                     11: 
                     12: #define                NCPS    10      /* number of chars per symbol   */
                     13: #define                NHEX    80      /* max # chars in object per line       */
                     14: #define                NLINE   80      /* max # chars in mnemonic per line     */
                     15: #define                FAIL    0
                     16: #define                TRUE    1
                     17: #define                FALSE   0
                     18: #define                LEAD    1
                     19: #define                NOLEAD  0
                     20: #define                TERM    0       /* used in tables.c to indicate         */
                     21:                                /* that the 'indirect' field of the     */
                     22:                                /* 'instable' terminates - no pointer.  */
                     23:                                /* Is also checked in 'dis_text()' in   */
                     24:                                /* bits.c.                              */
                     25: 
                     26: #ifdef AR32W
                     27: #define        LNNOBLKSZ       1024    /* size of blocks of line numbers               */
                     28: #define        SYMBLKSZ        1024    /* size if blocks of symbol table entries       */
                     29: #else
                     30: #define        LNNOBLKSZ       512     /* size of blocks of line numbers               */
                     31: #define        SYMBLKSZ        512     /* size of blocks of symbol table entries       */
                     32: #endif
                     33: #define                STRNGEQ 0       /* used in string compare operation     */
                     34:                                /* in 'disassembly' routine             */
                     35: 
                     36: /*
                     37:  *     The following are constants that are used in the disassembly 
                     38:  *     of floating point immediate operands.
                     39:  */
                     40: #define                NOTFLOAT        0
                     41: #define                FPSINGLE        1
                     42: #define                FPDOUBLE        2
                     43: #define                TWO_23  8388608         /* 2 ** 23 used in conversion   
                     44:                                         * of floating point object to  
                     45:                                         * a decimal number in _utls.c 
                     46:                                         */
                     47: #define                TWO_32  4294967296.     /* 2 ** 32 also used in floating
                     48:                                         * point number conversion in
                     49:                                         * _utls.c
                     50:                                         */
                     51: #define                TWO_52  4503599627370496.       /* 2 ** 52 also used in
                     52:                                                 * floating point conversion
                     53:                                                 * routines.
                     54:                                                 */
                     55: 
                     56: #define                BIAS    127     /* bias on 8 bit exponent of floating   
                     57:                                 * point number in _utls.c              
                     58:                                 */
                     59: #define                DBIAS   1023    /* bias on 11 bit exponent of double    
                     60:                                 * precision floating point number      
                     61:                                 * in _utls.c                           
                     62:                                 */
                     63: 
                     64: /*
                     65:  * The following are the 7 posssible types of floating point immediate  
                     66:  * operands. These are the possible values of [s|d]fpconv() which 
                     67:  * are in _utls.c.                                                             
                     68:  */
                     69: 
                     70: #define                NOTANUM         0
                     71: #define                NEGINF          1
                     72: #define                INFINITY        2
                     73: #define                ZERO            3
                     74: #define                NEGZERO         4
                     75: #define                FPNUM           5
                     76: #define                FPBIGNUM        6
                     77: 
                     78: /*
                     79:  *     This is the structure that will be used for storing all the
                     80:  *     op code information.  The structure values themselves are
                     81:  *     in 'tables.c'.
                     82:  */
                     83: 
                     84: struct instable {
                     85:        char            name[NCPS];
                     86:        unsigned        class;
                     87: };
                     88: /*
                     89:  *     This is the structure that will be used for storing all the
                     90:  *     address modification information.  The structure values
                     91:  *     themselves are in 'tables.c'.
                     92:  */
                     93: struct formtable {
                     94:        char            name[NCPS];
                     95:        unsigned        typ;
                     96: };
                     97: /*     NOTE:   the following information in this file must be changed
                     98:  *             between the different versions of the disassembler.
                     99:  *
                    100:  *     These are the instruction classes as they appear in
                    101:  *     'tables.c'.  Here they are given numerical values
                    102:  *     for use in the actual disassembly of an object file.
                    103:  */
                    104: 
                    105: #define UNKNOWN                0
                    106: #define OPRNDS0                1       /* instructions with no operands        */
                    107: #define OPRNDS1                2       /* instructions with 1 operand          */
                    108: #define OPRNDS2                3       /* instructions with 2 operands         */
                    109: #define OPRNDS3                4       /* instructions with 3 operands         */
                    110: #define OPRNDS4                5       /* instructions with 4 operands         */
                    111: #define JUMP           6       /* "jump" instruction                   */
                    112: #define JUMPSB         7       /* "jumpsb" instruction                 */
                    113: #define JUMP1          8       /* 1 byte offset jump instruction       */
                    114: #define JUMP2          9       /* 2 byte offset jump instruction       */
                    115: #define        BSBB            10      /* "BSBB" instruction                   */
                    116: #define        BSBH            11      /* "BSBB" instruction                   */
                    117: #define NOOP8          12      /* 8 bit offset (no operands)           */
                    118: #define NOOP16         13      /* 16 bit offset (no operands)          */
                    119: #define CALL           14      /* "call" instruction                   */
                    120: #define EXT            15      /* "extendop" instruction               */
                    121: #define AD1OP3         17      /* 4 operands but add 1 to 3nd operand! */
                    122: #define SFPOPS2                18      /* single floating point,  2 operands   */
                    123: #define        SFPOPS3         19      /* single floating point,  3 operands   */
                    124: #define        MACRO           20      /* macro-rom instruction                */
                    125: #define DFPOPS2                21      /* double floating point, 2 operands    */
                    126: #define        DFPOPS3         22      /* double floating point, 3 operands    */
                    127: #define SPRTOP0                23      /* support processor inst. 0 operands   */
                    128: #define SPRTOP1                24      /* support processor inst. 1 operand    */
                    129: #define SPRTOP2                25      /* support processor inst. 2 operands   */
                    130:  
                    131: /*
                    132:  *     These are the address modification types as they appear in
                    133:  *     'tables.c'.  Here they are given numerical values for
                    134:  *     use in the actual disassembly of an object file.
                    135:  */
                    136: 
                    137:  
                    138: #define IM6    1       /* immediate 6 bit field                        */
                    139: #define R      2       /* register                                     */
                    140: #define RDF    3       /* register deferred (indirect)         */
                    141: #define R4     4       /* register and 4 bit displacement              */
                    142: #define IMB    5       /* immediate byte                               */
                    143: #define IMH    6       /* immediate half word                          */
                    144: #define IMW    7       /* immediate word                               */
                    145: #define BDB    8       /* base (register) and byte displacement        */
                    146: #define BDH    9       /* base (register) and half word displacement   */
                    147: #define BDW    10      /* base (register) and word displacement        */
                    148: #define BDBDF  11      /* base and byte displacement deferred          */
                    149: #define BDHDF  12      /* base and half word displacement deferred     */
                    150: #define BDWDF  13      /* base and word displacement deferred          */
                    151: #define EXPSB  14      /* expanded signed byte                         */
                    152: #define EXPUB  15      /* expanded unsigned byte                       */
                    153: #define EXPSH  16      /* expanded signed half word                    */
                    154: #define EXPUH  17      /* expanded unsigned half word                  */
                    155: #define EXPSW  18      /* expanded signed word                         */
                    156: #define EXPUW  19      /* expanded unsigned word                       */
                    157: #define IM4    20      /* immediate 4 bit field                        */
                    158: #define ABAD   21      /* absolute address                             */
                    159: #define ABADDF 22      /* absolute address deferred                    */
                    160: #define        IMD     23      /* immediate double (floating point)            */

unix.superglobalmegacorp.com

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