Annotation of 43BSD/lib/c2/c2.h, revision 1.1.1.1

1.1       root        1: /*     c2.h    4.10    85/08/22        */
                      2: 
                      3: /*
                      4:  * Header for object code improver
                      5:  */
                      6: 
                      7: #define        JBR     1
                      8: #define        CBR     2
                      9: #define        JMP     3
                     10: #define        LABEL   4
                     11: #define        DLABEL  5
                     12: #define        EROU    7
                     13: #define        JSW     9
                     14: #define        MOV     10
                     15: #define        CLR     11
                     16: #define        INC     12
                     17: #define        DEC     13
                     18: #define        TST     14
                     19: #define        PUSH    15
                     20: #define CVT 16
                     21: #define        CMP     17
                     22: #define        ADD     18
                     23: #define        SUB     19
                     24: #define        BIT     20
                     25: #define        BIC     21
                     26: #define        BIS     22
                     27: #define        XOR     23
                     28: #define        COM     24
                     29: #define        NEG     25
                     30: #define        MUL     26
                     31: #define        DIV     27
                     32: #define        ASH     28
                     33: #define EXTV   29
                     34: #define EXTZV  30
                     35: #define INSV   31
                     36: #define        CALLS   32
                     37: #define RET    33
                     38: #define        CASE    34
                     39: #define        SOB     35
                     40: #define        TEXT    36
                     41: #define        DATA    37
                     42: #define        BSS     38
                     43: #define        ALIGN   39
                     44: #define        END     40
                     45: #define MOVZ 41
                     46: #define WGEN 42
                     47: #define SOBGEQ 43
                     48: #define SOBGTR 44
                     49: #define AOBLEQ 45
                     50: #define AOBLSS 46
                     51: #define ACB 47
                     52: #define MOVA 48
                     53: #define PUSHA 49
                     54: #define LGEN 50
                     55: #define SET 51
                     56: #define MOVC3 52
                     57: #define RSB 53
                     58: #define JSB 54
                     59: #define MFPR 55
                     60: #define MTPR 56
                     61: #define PROBER 57
                     62: #define PROBEW 58
                     63: #define        LCOMM 59
                     64: #define        COMM 60
                     65: 
                     66: #define        JEQ     0
                     67: #define        JNE     1
                     68: #define        JLE     2
                     69: #define        JGE     3
                     70: #define        JLT     4
                     71: #define        JGT     5
                     72: /* rearranged for unsigned branches so that jxxu = jxx + 6 */
                     73: #define        JLOS    8
                     74: #define        JHIS    9
                     75: #define        JLO     10
                     76: #define        JHI     11
                     77: 
                     78: #define JBC 12
                     79: #define JBS 13
                     80: #define JLBC 14
                     81: #define JLBS 15
                     82: #define JBCC 16
                     83: #define JBSC 17
                     84: #define JBCS 18
                     85: #define JBSS 19
                     86: 
                     87: #define        JCC 20
                     88: #define        JCS 21
                     89: #define        JVC 22
                     90: #define        JVS 23
                     91: 
                     92: /*
                     93:  *     When the new opcodes were added, the relative
                     94:  *     ordering of the first 3 (those that are not float)
                     95:  *     had to be retained, so that other parts of the program
                     96:  *     were not broken.
                     97:  *
                     98:  *     In addition, the distance between OP3 and OP2 must be preserved.
                     99:  *     The order of definitions above OP2 must not be changed.
                    100:  *
                    101:  *     Note that these definitions DO NOT correspond to
                    102:  *     those definitions used in as, adb and sdb.
                    103:  */
                    104: #define        BYTE    1
                    105: #define        WORD    2
                    106: #define LONG   3
                    107: #define        FFLOAT  4
                    108: #define        DFLOAT  5
                    109: #define QUAD   6
                    110: #define OP2    7
                    111: #define OP3    8
                    112: #define OPB    9
                    113: #define OPX    10
                    114: #define        GFLOAT  11
                    115: #define        HFLOAT  12
                    116: #define OCTA   13
                    117: 
                    118: #define T(a,b) (a|((b)<<8))
                    119: #define U(a,b) (a|((b)<<4))
                    120: 
                    121: #define C2_ASIZE 128
                    122: 
                    123: struct optab {
                    124:        char    opstring[7];
                    125:        short   opcode;
                    126: } optab[];
                    127: 
                    128: struct node {
                    129:        union {
                    130:                struct {
                    131:                        char op_op;
                    132:                        char op_subop;
                    133:                } un_op;
                    134:                short   un_combop;
                    135:        } op_un;
                    136:        short   refc;
                    137:        struct  node    *forw;
                    138:        struct  node    *back;
                    139:        struct  node    *ref;
                    140:        char    *code;
                    141:        struct  optab   *pop;
                    142:        long    labno;
                    143:        short   seq;
                    144: };
                    145: 
                    146: #define op op_un.un_op.op_op
                    147: #define subop op_un.un_op.op_subop
                    148: #define combop op_un.un_combop
                    149: 
                    150: char   line[512];
                    151: struct node    first;
                    152: char   *curlp;
                    153: int    nbrbr;
                    154: int    nsaddr;
                    155: int    redunm;
                    156: int    iaftbr;
                    157: int    njp1;
                    158: int    nrlab;
                    159: int    nxjump;
                    160: int    ncmot;
                    161: int    nrevbr;
                    162: int    loopiv;
                    163: int    nredunj;
                    164: int    nskip;
                    165: int    ncomj;
                    166: int    nsob;
                    167: int    nrtst;
                    168: int nbj;
                    169: int nfield;
                    170: 
                    171: int    nchange;
                    172: long   isn;
                    173: int    debug;
                    174: char   revbr[];
                    175: #define        NREG    12
                    176: char   *regs[NREG+5]; /* 0-11, 4 for operands, 1 for running off end */
                    177: char   conloc[C2_ASIZE];
                    178: char   conval[C2_ASIZE];
                    179: char   ccloc[C2_ASIZE];
                    180: 
                    181: #define        RT1     12
                    182: #define        RT2     13
                    183: #define RT3 14
                    184: #define RT4 15
                    185: #define        LABHS   127
                    186: 
                    187: char *copy();
                    188: long getnum();
                    189: struct node *codemove();
                    190: struct node *insertl();
                    191: struct node *nonlab();
                    192: 
                    193: #ifdef notdef
                    194: #define decref(p) \
                    195:        ((p) && --(p)->refc <= 0 ? nrlab++, delnode(p) : 0)
                    196: #define delnode(p) \
                    197:        ((p)->back->forw = (p)->forw, (p)->forw->back = (p)->back)
                    198: #endif notdef
                    199: 
                    200: char *xalloc();
                    201: extern char *newa;
                    202: extern char *lasta;
                    203: extern char *lastr;
                    204: #define        XALIGN(n) \
                    205:                (((n)+(sizeof (char *) - 1)) & ~(sizeof (char *) - 1))
                    206: #define        alloc(n) \
                    207:                ((struct node *) \
                    208:                 ((newa = lasta) + (n) > lastr ? \
                    209:                        xalloc(n) : \
                    210:                        (lasta += XALIGN(n), newa)))

unix.superglobalmegacorp.com

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