|
|
1.1 ! root 1: /* ! 2: * Opcode table structure. ! 3: */ ! 4: ! 5: struct opentry { ! 6: char *op_name; /* name of opcode */ ! 7: int op_code; /* opcode number */ ! 8: }; ! 9: ! 10: /* ! 11: * External definitions. ! 12: */ ! 13: ! 14: extern struct opentry optable[]; ! 15: extern int NOPCODES; ! 16: ! 17: /* ! 18: * Opcode definitions used in icode. These values must agree with those ! 19: * used in iconx/interp.s. ! 20: */ ! 21: ! 22: /* Operators. */ ! 23: ! 24: #define OP_ASGN 1 ! 25: #define OP_BANG 2 ! 26: #define OP_CAT 3 ! 27: #define OP_COMPL 4 ! 28: #define OP_DIFF 5 ! 29: #define OP_DIV 6 ! 30: #define OP_EQV 7 ! 31: #define OP_INTER 8 ! 32: #define OP_LCONCAT 9 ! 33: #define OP_LEXEQ 10 ! 34: #define OP_LEXGE 11 ! 35: #define OP_LEXGT 12 ! 36: #define OP_LEXLE 13 ! 37: #define OP_LEXLT 14 ! 38: #define OP_LEXNE 15 ! 39: #define OP_MINUS 16 ! 40: #define OP_MOD 17 ! 41: #define OP_MULT 18 ! 42: #define OP_NEG 19 ! 43: #define OP_NEQV 20 ! 44: #define OP_NONNULL 21 ! 45: #define OP_NULL 22 ! 46: #define OP_NUMBER 23 ! 47: #define OP_NUMEQ 24 ! 48: #define OP_NUMGE 25 ! 49: #define OP_NUMGT 26 ! 50: #define OP_NUMLE 27 ! 51: #define OP_NUMLT 28 ! 52: #define OP_NUMNE 29 ! 53: #define OP_PLUS 30 ! 54: #define OP_POWER 31 ! 55: #define OP_RANDOM 32 ! 56: #define OP_RASGN 33 ! 57: #define OP_REFRESH 34 ! 58: #define OP_RSWAP 35 ! 59: #define OP_SECT 36 ! 60: #define OP_SIZE 37 ! 61: #define OP_SUBSC 38 ! 62: #define OP_SWAP 39 ! 63: #define OP_TABMAT 40 ! 64: #define OP_TOBY 41 ! 65: #define OP_UNIONCS 42 ! 66: #define OP_VALUE 43 ! 67: ! 68: /* Instructions. */ ! 69: ! 70: #define OP_BSCAN 44 ! 71: #define OP_CCASE 45 ! 72: #define OP_CHFAIL 46 ! 73: #define OP_COACT 47 ! 74: #define OP_COFAIL 48 ! 75: #define OP_CORET 49 ! 76: #define OP_CREATE 50 ! 77: #define OP_CSET 51 ! 78: #define OP_DUP 52 ! 79: #define OP_EFAIL 53 ! 80: #define OP_ERET 54 ! 81: #define OP_ESCAN 55 ! 82: #define OP_ESUSP 56 ! 83: #define OP_FIELD 57 ! 84: #define OP_FILE 58 ! 85: #define OP_GOTO 59 ! 86: #define OP_INCRES 60 ! 87: #define OP_INIT 61 ! 88: #define OP_INT 62 ! 89: #define OP_INVOKE 63 ! 90: #define OP_KEYWD 64 ! 91: #define OP_LAB 65 ! 92: #define OP_LIMIT 66 ! 93: #define OP_LINE 67 ! 94: #define OP_LLIST 68 ! 95: #define OP_LSUSP 69 ! 96: #define OP_MARK 70 ! 97: #define OP_PFAIL 71 ! 98: #define OP_PNULL 72 ! 99: #define OP_POP 73 ! 100: #define OP_PRET 74 ! 101: #define OP_PSUSP 75 ! 102: #define OP_PUSH1 76 ! 103: #define OP_PUSHN1 77 ! 104: #define OP_REAL 78 ! 105: #define OP_SDUP 79 ! 106: #define OP_STR 80 ! 107: #define OP_UNMARK 81 ! 108: #define OP_VAR 82 ! 109: ! 110: /* Declarations. */ ! 111: ! 112: #define OP_PROC 83 ! 113: #define OP_LOCAL 84 ! 114: #define OP_CON 85 ! 115: #define OP_DECLEND 86 ! 116: #define OP_END 87 ! 117: /* See below for OP_LINK. */ ! 118: ! 119: /* Global symbol table declarations. */ ! 120: ! 121: #define OP_RECORD 88 ! 122: #define OP_IMPL 89 ! 123: #define OP_ERROR 90 ! 124: #define OP_TRACE 91 ! 125: #define OP_GLOBAL 92 ! 126: ! 127: /* Interpreter instructions not defined above. */ ! 128: ! 129: #define OP_ARG 93 ! 130: #define OP_STATIC 94 ! 131: #define OP_MARK0 95 ! 132: #define OP_LINK 96 ! 133: /* ! 134: * The following opcodes cannot be renumbered easily, for example, the ! 135: * interpreter assumes that OP_GLOBX is a multiple of 16. ! 136: */ ! 137: #define OP_GLOBX 112 /* 16 opcodes */ ! 138: #define OP_LOCX 128 /* 16 opcodes */ ! 139: #define OP_INTX 144 /* 16 opcodes */ ! 140: #define OP_STATX 160 /* 8 opcodes */ ! 141: #define OP_ARGX 168 /* 8 opcodes */ ! 142: #define OP_UNMKX 176 /* 8 opcodes */ ! 143: #define OP_INVKX 184 /* 8 opcodes */ ! 144: #define OP_LINEX 192 /* 64 opcodes */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.