|
|
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.