Annotation of researchv10no/cmd/lcc/c/ops.h, revision 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.