Annotation of 42BSD/bin/as/instrs.h, revision 1.1

1.1     ! root        1: /*
        !             2:  *     Copyright (c) 1982 Regents of the University of California
        !             3:  *     @(#)instrs.h 4.5 6/9/83
        !             4:  */
        !             5: /*
        !             6:  *     Argument data types
        !             7:  *
        !             8:  *     If you change these definitions, you must also change the tables
        !             9:  *     in assizetab.c
        !            10:  */
        !            11: #define        TYPB            000     /* byte integer */
        !            12: #define        TYPW            001     /* word integer */
        !            13: #define        TYPL            002     /* long integer */
        !            14: #define        TYPQ            003     /* quad integer */
        !            15: #define        TYPO            004     /* octa integer */
        !            16: #define        TYPF            005     /* F float */
        !            17: #define        TYPD            006     /* D float */
        !            18: #define        TYPG            007     /* G float */
        !            19: #define        TYPH            010     /* H float */
        !            20: #define        TYPUNPACKED     011     /* when unpacked into mantissa & exponent */
        !            21: #define        TYPNONE         012     /* when nothing */
        !            22: #define        TYPLG           4       /* number of bits the above take up */
        !            23: 
        !            24: #define        TYPMASK ((1<<TYPLG)-1)  /* the mask (assumes 2's comp arith) */
        !            25: /*
        !            26:  *     Constructors and extractors for argument access kinds and types
        !            27:  */
        !            28: #define A_CONS(access, type)   ((access) | (type))
        !            29: #define        A_ACCEXT(consed)        ((consed) & (TYPMASK << TYPLG))
        !            30: #define        A_TYPEXT(consed)        ((consed) & TYPMASK)
        !            31: 
        !            32: /*
        !            33:  * Argument access types used to test validity of operands to operators
        !            34:  */
        !            35: #define        ACCR    (1<<TYPLG)                      /* read */
        !            36: #define        ACCW    (2<<TYPLG)                      /* write */
        !            37: #define        ACCB    (4<<TYPLG)                      /* branch displacement */
        !            38: #define        ACCA    (8<<TYPLG)                      /* address only */
        !            39: #define        ACCV    (8<<TYPLG)                      /* address only */
        !            40: #define        ACCM    (ACCR | ACCW)                   /* modify */
        !            41: #define        ACCI    (ACCB | ACCR)                   /* XFC code */
        !            42: 
        !            43: #define ACCESSMASK     (ACCA | ACCR | ACCW | ACCB)     /* the mask */
        !            44: 
        !            45: /*
        !            46:  *     Construction of TYPX and ACCX, to make the instrs table
        !            47:  *     easy to use and read.
        !            48:  */
        !            49: /*
        !            50:  *     For real memory address
        !            51:  */
        !            52: #define        A_AB    A_CONS(ACCA, TYPB)
        !            53: #define        A_AW    A_CONS(ACCA, TYPW)
        !            54: #define        A_AL    A_CONS(ACCA, TYPL)
        !            55: #define        A_AQ    A_CONS(ACCA, TYPQ)
        !            56: #define        A_AO    A_CONS(ACCA, TYPO)
        !            57: #define        A_AF    A_CONS(ACCA, TYPF)
        !            58: #define        A_AD    A_CONS(ACCA, TYPD)
        !            59: #define        A_AG    A_CONS(ACCA, TYPG)
        !            60: #define        A_AH    A_CONS(ACCA, TYPH)
        !            61: /*
        !            62:  *     For real memory addresses, or register addresses [sic]
        !            63:  *
        !            64:  *     CHEAT! we just call these read access, since
        !            65:  *     registers are allowed. All field instruction, except insv,
        !            66:  *     are are read access fields.
        !            67:  */
        !            68: #define        A_VB    A_CONS(ACCR, TYPB)
        !            69: #define        A_VW    A_CONS(ACCR, TYPW)
        !            70: #define        A_VL    A_CONS(ACCR, TYPL)
        !            71: #define        A_VQ    A_CONS(ACCR, TYPQ)
        !            72: #define        A_VO    A_CONS(ACCR, TYPO)
        !            73: #define        A_VF    A_CONS(ACCR, TYPF)
        !            74: #define        A_VD    A_CONS(ACCR, TYPD)
        !            75: #define        A_VG    A_CONS(ACCR, TYPG)
        !            76: #define        A_VH    A_CONS(ACCR, TYPH)
        !            77: /*
        !            78:  *     For branch displacement
        !            79:  */
        !            80: #define        A_BB    A_CONS(ACCB, TYPB)
        !            81: #define        A_BW    A_CONS(ACCB, TYPW)
        !            82: /*
        !            83:  *     For modification
        !            84:  */
        !            85: #define        A_MB    A_CONS(ACCM, TYPB)
        !            86: #define        A_MW    A_CONS(ACCM, TYPW)
        !            87: #define        A_ML    A_CONS(ACCM, TYPL)
        !            88: #define        A_MF    A_CONS(ACCM, TYPF)
        !            89: #define        A_MD    A_CONS(ACCM, TYPD)
        !            90: #define        A_MG    A_CONS(ACCM, TYPG)
        !            91: #define        A_MH    A_CONS(ACCM, TYPH)
        !            92: /*
        !            93:  *     For reading
        !            94:  */
        !            95: #define        A_RB    A_CONS(ACCR, TYPB)
        !            96: #define        A_RW    A_CONS(ACCR, TYPW)
        !            97: #define        A_RL    A_CONS(ACCR, TYPL)
        !            98: #define        A_RQ    A_CONS(ACCR, TYPQ)
        !            99: #define        A_RO    A_CONS(ACCR, TYPO)
        !           100: #define        A_RF    A_CONS(ACCR, TYPF)
        !           101: #define        A_RD    A_CONS(ACCR, TYPD)
        !           102: #define        A_RG    A_CONS(ACCR, TYPG)
        !           103: #define        A_RH    A_CONS(ACCR, TYPH)
        !           104: /*
        !           105:  *     For writing
        !           106:  */
        !           107: #define        A_WB    A_CONS(ACCW, TYPB)
        !           108: #define        A_WW    A_CONS(ACCW, TYPW)
        !           109: #define        A_WL    A_CONS(ACCW, TYPL)
        !           110: #define        A_WQ    A_CONS(ACCW, TYPQ)
        !           111: #define        A_WO    A_CONS(ACCW, TYPO)
        !           112: #define        A_WF    A_CONS(ACCW, TYPF)
        !           113: #define        A_WD    A_CONS(ACCW, TYPD)
        !           114: #define        A_WG    A_CONS(ACCW, TYPG)
        !           115: #define        A_WH    A_CONS(ACCW, TYPH)
        !           116: 
        !           117: #ifndef INSTTAB
        !           118: /*
        !           119:  *     Define what the entries in the table look like.
        !           120:  *     This is only used for adb and sdb; not for as.
        !           121:  */
        !           122: #define        INSTTAB
        !           123: struct insttab{
        !           124:        char    *iname;
        !           125:        u_char  eopcode;
        !           126:        u_char  popcode;
        !           127:        char    nargs;
        !           128:        u_char  argtype[6];
        !           129: } insttab[];
        !           130: 
        !           131: #define OP(name,eopcode,popdcode,nargs,a1,a2,a3,a4,a5,a6) {name,eopcode,popdcode,nargs,a1,a2,a3,a4,a5,a6}
        !           132: 
        !           133: #endif INSTTAB
        !           134: 
        !           135: /*
        !           136:  *     Definitions for the escape bytes
        !           137:  */
        !           138: #define        CORE    0
        !           139: #define        NEW     1
        !           140: #define        ESCD    0xfd
        !           141: #define        ESCF    0xff

unix.superglobalmegacorp.com

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