|
|
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 */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.