Annotation of 43BSDTahoe/bin/as/as.tahoe/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        TYPF            004     /* F float */
        !            16: #define        TYPD            005     /* D float */
        !            17: #define        TYPNONE         006     /* when nothing */
        !            18: #define        TYPLG           3       /* number of bits the above take up */
        !            19: 
        !            20: #define        TYPMASK ((1<<TYPLG)-1)  /* the mask (assumes 2's comp arith) */
        !            21: /*
        !            22:  *     Constructors and extractors for argument access kinds and types
        !            23:  */
        !            24: #define A_CONS(access, type)   ((access) | (type))
        !            25: #define        A_ACCEXT(consed)        ((consed) & (TYPMASK << TYPLG))
        !            26: #define        A_TYPEXT(consed)        ((consed) & TYPMASK)
        !            27: 
        !            28: /*
        !            29:  * Argument access types used to test validity of operands to operators
        !            30:  */
        !            31: #define        ACCR    (1<<TYPLG)                      /* read */
        !            32: #define        ACCW    (2<<TYPLG)                      /* write */
        !            33: #define        ACCB    (4<<TYPLG)                      /* branch displacement */
        !            34: #define        ACCA    (8<<TYPLG)                      /* address only */
        !            35: #define        ACCM    (ACCR | ACCW)                   /* modify */
        !            36: #define        ACCI    (ACCB | ACCR)                   /* XFC code */
        !            37: 
        !            38: #define ACCESSMASK     (ACCA | ACCR | ACCW | ACCB)     /* the mask */
        !            39: 
        !            40: /*
        !            41:  *     Construction of TYPX and ACCX, to make the instrs table
        !            42:  *     easy to use and read.
        !            43:  */
        !            44: /*
        !            45:  *     For real memory address
        !            46:  */
        !            47: #define        A_AB    A_CONS(ACCA, TYPB)
        !            48: #define        A_AW    A_CONS(ACCA, TYPW)
        !            49: #define        A_AL    A_CONS(ACCA, TYPL)
        !            50: #define        A_AQ    A_CONS(ACCA, TYPQ)
        !            51: #define        A_AF    A_CONS(ACCA, TYPF)
        !            52: #define        A_AD    A_CONS(ACCA, TYPD)
        !            53: /*
        !            54:  *     For branch displacement
        !            55:  */
        !            56: #define        A_BB    A_CONS(ACCB, TYPB)
        !            57: #define        A_BW    A_CONS(ACCB, TYPW)
        !            58: /*
        !            59:  *     For modification
        !            60:  */
        !            61: #define        A_MB    A_CONS(ACCM, TYPB)
        !            62: #define        A_MW    A_CONS(ACCM, TYPW)
        !            63: #define        A_ML    A_CONS(ACCM, TYPL)
        !            64: #define        A_MF    A_CONS(ACCM, TYPF)
        !            65: #define        A_MD    A_CONS(ACCM, TYPD)
        !            66: /*
        !            67:  *     For reading
        !            68:  */
        !            69: #define        A_RB    A_CONS(ACCR, TYPB)
        !            70: #define        A_RW    A_CONS(ACCR, TYPW)
        !            71: #define        A_RL    A_CONS(ACCR, TYPL)
        !            72: #define        A_RQ    A_CONS(ACCR, TYPQ)
        !            73: #define        A_RF    A_CONS(ACCR, TYPF)
        !            74: #define        A_RD    A_CONS(ACCR, TYPD)
        !            75: /*
        !            76:  *     For writing
        !            77:  */
        !            78: #define        A_WB    A_CONS(ACCW, TYPB)
        !            79: #define        A_WW    A_CONS(ACCW, TYPW)
        !            80: #define        A_WL    A_CONS(ACCW, TYPL)
        !            81: #define        A_WQ    A_CONS(ACCW, TYPQ)
        !            82: #define        A_WF    A_CONS(ACCW, TYPF)
        !            83: #define        A_WD    A_CONS(ACCW, TYPD)
        !            84: 
        !            85: #ifndef INSTTAB
        !            86: /*
        !            87:  *     Define what the entries in the table look like.
        !            88:  *     This is only used for adb and sdb; not for as.
        !            89:  */
        !            90: #define        INSTTAB
        !            91: struct insttab{
        !            92:        char    *iname;
        !            93:        u_char  opcode;
        !            94:        char    nargs;
        !            95:        u_char  argtype[6];
        !            96: } insttab[];
        !            97: 
        !            98: #define OP(name,opcode,nargs,a1,a2,a3,a4,a5,a6) {name,opcode,nargs,a1,a2,a3,a4,a5,a6}
        !            99: 
        !           100: #endif INSTTAB
        !           101: 

unix.superglobalmegacorp.com

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