Annotation of researchv10no/cmd/lcc/c/ops.h, revision 1.1.1.1

1.1       root        1: #ifndef generic
                      2: #define generic(op) ((op)&~15)
                      3: #define opindex(op) ((op)>>4)
                      4: #define optype(op) ((op)&15)
                      5: #define isaddrop(op) ((op)==ADDRG+P||(op)==ADDRL+P||(op)==ADDRF+P)
                      6: 
                      7: #define F      1       /* float */
                      8: #define D      2       /* double */
                      9: #define C      3       /* char */
                     10: #define S      4       /* short */
                     11: #define I      5       /* int */
                     12: #define U      6       /* unsigned */
                     13: #define P      7       /* void* */
                     14: #define V      8       /* void */
                     15: #define B      9       /* struct */
                     16: #define TYPENAMES " FDCSIUPVB"
                     17: 
                     18: #ifdef __STDC__
                     19: typedef enum opcode {
                     20:        CNST=1<<4,
                     21:        CNSTC=(1<<4)+C,
                     22:        CNSTD=(1<<4)+D,
                     23:        CNSTF=(1<<4)+F,
                     24:        CNSTI=(1<<4)+I,
                     25:        CNSTP=(1<<4)+P,
                     26:        CNSTS=(1<<4)+S,
                     27:        CNSTU=(1<<4)+U,
                     28:        ARG=2<<4,
                     29:        ARGB=(2<<4)+B,
                     30:        ARGD=(2<<4)+D,
                     31:        ARGF=(2<<4)+F,
                     32:        ARGI=(2<<4)+I,
                     33:        ARGP=(2<<4)+P,
                     34:        ASGN=3<<4,
                     35:        ASGNB=(3<<4)+B,
                     36:        ASGNC=(3<<4)+C,
                     37:        ASGND=(3<<4)+D,
                     38:        ASGNF=(3<<4)+F,
                     39:        ASGNI=(3<<4)+I,
                     40:        ASGNS=(3<<4)+S,
                     41:        ASGNP=(3<<4)+P,
                     42:        INDIR=4<<4,
                     43:        INDIRB=(4<<4)+B,
                     44:        INDIRC=(4<<4)+C,
                     45:        INDIRD=(4<<4)+D,
                     46:        INDIRF=(4<<4)+F,
                     47:        INDIRI=(4<<4)+I,
                     48:        INDIRS=(4<<4)+S,
                     49:        INDIRP=(4<<4)+P,
                     50:        CVC=5<<4,
                     51:        CVCI=(5<<4)+I,
                     52:        CVCU=(5<<4)+U,
                     53:        CVD=6<<4,
                     54:        CVDF=(6<<4)+F,
                     55:        CVDI=(6<<4)+I,
                     56:        CVF=7<<4,
                     57:        CVFD=(7<<4)+D,
                     58:        CVI=8<<4,
                     59:        CVIC=(8<<4)+C,
                     60:        CVID=(8<<4)+D,
                     61:        CVIS=(8<<4)+S,
                     62:        CVIU=(8<<4)+U,
                     63:        CVP=9<<4,
                     64:        CVPU=(9<<4)+U,
                     65:        CVS=10<<4,
                     66:        CVSI=(10<<4)+I,
                     67:        CVSU=(10<<4)+U,
                     68:        CVU=11<<4,
                     69:        CVUC=(11<<4)+C,
                     70:        CVUI=(11<<4)+I,
                     71:        CVUP=(11<<4)+P,
                     72:        CVUS=(11<<4)+S,
                     73:        NEG=12<<4,
                     74:        NEGD=(12<<4)+D,
                     75:        NEGF=(12<<4)+F,
                     76:        NEGI=(12<<4)+I,
                     77:        CALL=13<<4,
                     78:        CALLB=(13<<4)+B,
                     79:        CALLD=(13<<4)+D,
                     80:        CALLF=(13<<4)+F,
                     81:        CALLI=(13<<4)+I,
                     82:        CALLV=(13<<4)+V,
                     83:        LOAD=14<<4,
                     84:        LOADB=(14<<4)+B,
                     85:        LOADC=(14<<4)+C,
                     86:        LOADD=(14<<4)+D,
                     87:        LOADF=(14<<4)+F,
                     88:        LOADI=(14<<4)+I,
                     89:        LOADP=(14<<4)+P,
                     90:        LOADS=(14<<4)+S,
                     91:        LOADU=(14<<4)+U,
                     92:        RET=15<<4,
                     93:        RETD=(15<<4)+D,
                     94:        RETF=(15<<4)+F,
                     95:        RETI=(15<<4)+I,
                     96:        RETV=(15<<4)+V,
                     97:        ADDRG=16<<4,
                     98:        ADDRGP=(16<<4)+P,
                     99:        ADDRF=17<<4,
                    100:        ADDRFP=(17<<4)+P,
                    101:        ADDRL=18<<4,
                    102:        ADDRLP=(18<<4)+P,
                    103:        ADD=19<<4,
                    104:        ADDD=(19<<4)+D,
                    105:        ADDF=(19<<4)+F,
                    106:        ADDI=(19<<4)+I,
                    107:        ADDP=(19<<4)+P,
                    108:        ADDU=(19<<4)+U,
                    109:        SUB=20<<4,
                    110:        SUBD=(20<<4)+D,
                    111:        SUBF=(20<<4)+F,
                    112:        SUBI=(20<<4)+I,
                    113:        SUBP=(20<<4)+P,
                    114:        SUBU=(20<<4)+U,
                    115:        LSH=21<<4,
                    116:        LSHI=(21<<4)+I,
                    117:        LSHU=(21<<4)+U,
                    118:        MOD=22<<4,
                    119:        MODI=(22<<4)+I,
                    120:        MODU=(22<<4)+U,
                    121:        RSH=23<<4,
                    122:        RSHI=(23<<4)+I,
                    123:        RSHU=(23<<4)+U,
                    124:        BAND=24<<4,
                    125:        BANDU=(24<<4)+U,
                    126:        BCOM=25<<4,
                    127:        BCOMU=(25<<4)+U,
                    128:        BOR=26<<4,
                    129:        BORU=(26<<4)+U,
                    130:        BXOR=27<<4,
                    131:        BXORU=(27<<4)+U,
                    132:        DIV=28<<4,
                    133:        DIVD=(28<<4)+D,
                    134:        DIVF=(28<<4)+F,
                    135:        DIVI=(28<<4)+I,
                    136:        DIVU=(28<<4)+U,
                    137:        MUL=29<<4,
                    138:        MULD=(29<<4)+D,
                    139:        MULF=(29<<4)+F,
                    140:        MULI=(29<<4)+I,
                    141:        MULU=(29<<4)+U,
                    142:        EQ=30<<4,
                    143:        EQD=(30<<4)+D,
                    144:        EQF=(30<<4)+F,
                    145:        EQI=(30<<4)+I,
                    146:        GE=31<<4,
                    147:        GED=(31<<4)+D,
                    148:        GEF=(31<<4)+F,
                    149:        GEI=(31<<4)+I,
                    150:        GEU=(31<<4)+U,
                    151:        GT=32<<4,
                    152:        GTD=(32<<4)+D,
                    153:        GTF=(32<<4)+F,
                    154:        GTI=(32<<4)+I,
                    155:        GTU=(32<<4)+U,
                    156:        LE=33<<4,
                    157:        LED=(33<<4)+D,
                    158:        LEF=(33<<4)+F,
                    159:        LEI=(33<<4)+I,
                    160:        LEU=(33<<4)+U,
                    161:        LT=34<<4,
                    162:        LTD=(34<<4)+D,
                    163:        LTF=(34<<4)+F,
                    164:        LTI=(34<<4)+I,
                    165:        LTU=(34<<4)+U,
                    166:        NE=35<<4,
                    167:        NED=(35<<4)+D,
                    168:        NEF=(35<<4)+F,
                    169:        NEI=(35<<4)+I,
                    170:        JUMP=36<<4,
                    171:        JUMPV=(36<<4)+V,
                    172:        LABEL=37<<4,
                    173:        LABELV=(37<<4)+V,
                    174:        MAXOP=38<<4,
                    175:        /* additional tree operators: */
                    176:        AND=MAXOP,
                    177:        NOT=MAXOP+1*16,
                    178:        OR=MAXOP+2*16,
                    179:        COND=MAXOP+3*16,
                    180:        RIGHT=MAXOP+4*16,
                    181:        FIELD=MAXOP+5*16
                    182: } Opcode;
                    183: #else
                    184: typedef int Opcode;
                    185: #define CNST   (1<<4)
                    186: #define CNSTC  ((1<<4)+C)
                    187: #define CNSTD  ((1<<4)+D)
                    188: #define CNSTF  ((1<<4)+F)
                    189: #define CNSTI  ((1<<4)+I)
                    190: #define CNSTP  ((1<<4)+P)
                    191: #define CNSTS  ((1<<4)+S)
                    192: #define CNSTU  ((1<<4)+U)
                    193: #define ARG    (2<<4)
                    194: #define ARGB   ((2<<4)+B)
                    195: #define ARGD   ((2<<4)+D)
                    196: #define ARGF   ((2<<4)+F)
                    197: #define ARGI   ((2<<4)+I)
                    198: #define ARGP   ((2<<4)+P)
                    199: #define ASGN   (3<<4)
                    200: #define ASGNB  ((3<<4)+B)
                    201: #define ASGNC  ((3<<4)+C)
                    202: #define ASGND  ((3<<4)+D)
                    203: #define ASGNF  ((3<<4)+F)
                    204: #define ASGNI  ((3<<4)+I)
                    205: #define ASGNS  ((3<<4)+S)
                    206: #define ASGNP  ((3<<4)+P)
                    207: #define INDIR  (4<<4)
                    208: #define INDIRB ((4<<4)+B)
                    209: #define INDIRC ((4<<4)+C)
                    210: #define INDIRD ((4<<4)+D)
                    211: #define INDIRF ((4<<4)+F)
                    212: #define INDIRI ((4<<4)+I)
                    213: #define INDIRS ((4<<4)+S)
                    214: #define INDIRP ((4<<4)+P)
                    215: #define CVC    (5<<4)
                    216: #define CVCI   ((5<<4)+I)
                    217: #define CVCU   ((5<<4)+U)
                    218: #define CVD    (6<<4)
                    219: #define CVDF   ((6<<4)+F)
                    220: #define CVDI   ((6<<4)+I)
                    221: #define CVF    (7<<4)
                    222: #define CVFD   ((7<<4)+D)
                    223: #define CVI    (8<<4)
                    224: #define CVIC   ((8<<4)+C)
                    225: #define CVID   ((8<<4)+D)
                    226: #define CVIS   ((8<<4)+S)
                    227: #define CVIU   ((8<<4)+U)
                    228: #define CVP    (9<<4)
                    229: #define CVPU   ((9<<4)+U)
                    230: #define CVS    (10<<4)
                    231: #define CVSI   ((10<<4)+I)
                    232: #define CVSU   ((10<<4)+U)
                    233: #define CVU    (11<<4)
                    234: #define CVUC   ((11<<4)+C)
                    235: #define CVUI   ((11<<4)+I)
                    236: #define CVUP   ((11<<4)+P)
                    237: #define CVUS   ((11<<4)+S)
                    238: #define NEG    (12<<4)
                    239: #define NEGD   ((12<<4)+D)
                    240: #define NEGF   ((12<<4)+F)
                    241: #define NEGI   ((12<<4)+I)
                    242: #define CALL   (13<<4)
                    243: #define CALLB  ((13<<4)+B)
                    244: #define CALLD  ((13<<4)+D)
                    245: #define CALLF  ((13<<4)+F)
                    246: #define CALLI  ((13<<4)+I)
                    247: #define CALLV  ((13<<4)+V)
                    248: #define LOAD   (14<<4)
                    249: #define LOADB  ((14<<4)+B)
                    250: #define LOADC  ((14<<4)+C)
                    251: #define LOADD  ((14<<4)+D)
                    252: #define LOADF  ((14<<4)+F)
                    253: #define LOADI  ((14<<4)+I)
                    254: #define LOADP  ((14<<4)+P)
                    255: #define LOADS  ((14<<4)+S)
                    256: #define LOADU  ((14<<4)+U)
                    257: #define RET    (15<<4)
                    258: #define RETD   ((15<<4)+D)
                    259: #define RETF   ((15<<4)+F)
                    260: #define RETI   ((15<<4)+I)
                    261: #define RETV   ((15<<4)+V)
                    262: #define ADDRG  (16<<4)
                    263: #define ADDRGP ((16<<4)+P)
                    264: #define ADDRF  (17<<4)
                    265: #define ADDRFP ((17<<4)+P)
                    266: #define ADDRL  (18<<4)
                    267: #define ADDRLP ((18<<4)+P)
                    268: #define ADD    (19<<4)
                    269: #define ADDD   ((19<<4)+D)
                    270: #define ADDF   ((19<<4)+F)
                    271: #define ADDI   ((19<<4)+I)
                    272: #define ADDP   ((19<<4)+P)
                    273: #define ADDU   ((19<<4)+U)
                    274: #define SUB    (20<<4)
                    275: #define SUBD   ((20<<4)+D)
                    276: #define SUBF   ((20<<4)+F)
                    277: #define SUBI   ((20<<4)+I)
                    278: #define SUBP   ((20<<4)+P)
                    279: #define SUBU   ((20<<4)+U)
                    280: #define LSH    (21<<4)
                    281: #define LSHI   ((21<<4)+I)
                    282: #define LSHU   ((21<<4)+U)
                    283: #define MOD    (22<<4)
                    284: #define MODI   ((22<<4)+I)
                    285: #define MODU   ((22<<4)+U)
                    286: #define RSH    (23<<4)
                    287: #define RSHI   ((23<<4)+I)
                    288: #define RSHU   ((23<<4)+U)
                    289: #define BAND   (24<<4)
                    290: #define BANDU  ((24<<4)+U)
                    291: #define BCOM   (25<<4)
                    292: #define BCOMU  ((25<<4)+U)
                    293: #define BOR    (26<<4)
                    294: #define BORU   ((26<<4)+U)
                    295: #define BXOR   (27<<4)
                    296: #define BXORU  ((27<<4)+U)
                    297: #define DIV    (28<<4)
                    298: #define DIVD   ((28<<4)+D)
                    299: #define DIVF   ((28<<4)+F)
                    300: #define DIVI   ((28<<4)+I)
                    301: #define DIVU   ((28<<4)+U)
                    302: #define MUL    (29<<4)
                    303: #define MULD   ((29<<4)+D)
                    304: #define MULF   ((29<<4)+F)
                    305: #define MULI   ((29<<4)+I)
                    306: #define MULU   ((29<<4)+U)
                    307: #define EQ     (30<<4)
                    308: #define EQD    ((30<<4)+D)
                    309: #define EQF    ((30<<4)+F)
                    310: #define EQI    ((30<<4)+I)
                    311: #define GE     (31<<4)
                    312: #define GED    ((31<<4)+D)
                    313: #define GEF    ((31<<4)+F)
                    314: #define GEI    ((31<<4)+I)
                    315: #define GEU    ((31<<4)+U)
                    316: #define GT     (32<<4)
                    317: #define GTD    ((32<<4)+D)
                    318: #define GTF    ((32<<4)+F)
                    319: #define GTI    ((32<<4)+I)
                    320: #define GTU    ((32<<4)+U)
                    321: #define LE     (33<<4)
                    322: #define LED    ((33<<4)+D)
                    323: #define LEF    ((33<<4)+F)
                    324: #define LEI    ((33<<4)+I)
                    325: #define LEU    ((33<<4)+U)
                    326: #define LT     (34<<4)
                    327: #define LTD    ((34<<4)+D)
                    328: #define LTF    ((34<<4)+F)
                    329: #define LTI    ((34<<4)+I)
                    330: #define LTU    ((34<<4)+U)
                    331: #define NE     (35<<4)
                    332: #define NED    ((35<<4)+D)
                    333: #define NEF    ((35<<4)+F)
                    334: #define NEI    ((35<<4)+I)
                    335: #define JUMP   (36<<4)
                    336: #define JUMPV  ((36<<4)+V)
                    337: #define LABEL  (37<<4)
                    338: #define LABELV ((37<<4)+V)
                    339: #define MAXOP  (38<<4)
                    340: #define AND    MAXOP
                    341: #define        NOT     (MAXOP+1*16)
                    342: #define        OR      (MAXOP+2*16)
                    343: #define        COND    (MAXOP+3*16)
                    344: #define        RIGHT   (MAXOP+4*16)
                    345: #define        FIELD   (MAXOP+5*16)
                    346: #endif /* __STDC__ */
                    347: #endif /* generic */
                    348: 
                    349: #ifdef NEEDNAMES
                    350: "CNST",
                    351: "ARG",
                    352: "ASGN",
                    353: "INDIR",
                    354: "CVC",
                    355: "CVD",
                    356: "CVF",
                    357: "CVI",
                    358: "CVP",
                    359: "CVS",
                    360: "CVU",
                    361: "NEG",
                    362: "CALL",
                    363: "LOAD",
                    364: "RET",
                    365: "ADDRG",
                    366: "ADDRF",
                    367: "ADDRL",
                    368: "ADD",
                    369: "SUB",
                    370: "LSH",
                    371: "MOD",
                    372: "RSH",
                    373: "BAND",
                    374: "BCOM",
                    375: "BOR",
                    376: "BXOR",
                    377: "DIV",
                    378: "MUL",
                    379: "EQ",
                    380: "GE",
                    381: "GT",
                    382: "LE",
                    383: "LT",
                    384: "NE",
                    385: "JUMP",
                    386: "LABEL",
                    387: #undef NEEDNAMES
                    388: #endif /* NEEDNAMES */

unix.superglobalmegacorp.com

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