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 */