Annotation of 43BSDReno/pgrm/as.tahoe/instrs.h, revision 1.1.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.