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

1.1       root        1: /*     c2.h    4.7     83/08/11        */
                      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: /*
                     88:  *     When the new opcodes were added, the relative
                     89:  *     ordering of the first 3 (those that are not float)
                     90:  *     had to be retained, so that other parts of the program
                     91:  *     were not broken.
                     92:  *
                     93:  *     In addition, the distance between OP3 and OP2 must be preserved.
                     94:  *     The order of definitions above OP2 must not be changed.
                     95:  *
                     96:  *     Note that these definitions DO NOT correspond to
                     97:  *     those definitions used in as, adb and sdb.
                     98:  */
                     99: #define        BYTE    1
                    100: #define        WORD    2
                    101: #define LONG   3
                    102: #define        FFLOAT  4
                    103: #define        DFLOAT  5
                    104: #define QUAD   6
                    105: #define OP2    7
                    106: #define OP3    8
                    107: #define OPB    9
                    108: #define OPX    10
                    109: #define        GFLOAT  11
                    110: #define        HFLOAT  12
                    111: #define OCTA   13
                    112: 
                    113: #define T(a,b) (a|((b)<<8))
                    114: #define U(a,b) (a|((b)<<4))
                    115: 
                    116: #define C2_ASIZE 128
                    117: 
                    118: struct optab {
                    119:        char    opstring[7];
                    120:        short   opcode;
                    121: } optab[];
                    122: 
                    123: struct node {
                    124:        char    op;
                    125:        char    subop;
                    126:        short   refc;
                    127:        struct  node    *forw;
                    128:        struct  node    *back;
                    129:        struct  node    *ref;
                    130:        char    *code;
                    131:        struct  optab   *pop;
                    132:        long    labno;
                    133:        short   seq;
                    134: };
                    135: 
                    136: struct {
                    137:        short   combop;
                    138: };
                    139: 
                    140: char   line[512];
                    141: struct node    first;
                    142: char   *curlp;
                    143: int    nbrbr;
                    144: int    nsaddr;
                    145: int    redunm;
                    146: int    iaftbr;
                    147: int    njp1;
                    148: int    nrlab;
                    149: int    nxjump;
                    150: int    ncmot;
                    151: int    nrevbr;
                    152: int    loopiv;
                    153: int    nredunj;
                    154: int    nskip;
                    155: int    ncomj;
                    156: int    nsob;
                    157: int    nrtst;
                    158: int nbj;
                    159: int nfield;
                    160: 
                    161: int    nchange;
                    162: int    isn;
                    163: int    debug;
                    164: char   *lasta;
                    165: char   *lastr;
                    166: char   *firstr;
                    167: char   revbr[];
                    168: #define        NREG    12
                    169: char   *regs[NREG+5]; /* 0-11, 4 for operands, 1 for running off end */
                    170: char   conloc[C2_ASIZE];
                    171: char   conval[C2_ASIZE];
                    172: char   ccloc[C2_ASIZE];
                    173: 
                    174: #define        RT1     12
                    175: #define        RT2     13
                    176: #define RT3 14
                    177: #define RT4 15
                    178: #define        LABHS   127
                    179: 
                    180: struct { char lbyte; };
                    181: 
                    182: char *copy();
                    183: long getnum();
                    184: struct node *codemove();
                    185: struct node *insertl();
                    186: struct node *nonlab();

unix.superglobalmegacorp.com

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