1
  
2
  
3
  
4
  
5
  
6
  
7
  
8
  
9
  
10
  
11
  
12
  
13
  
14
  
15
  
16
  
17
  
18
  
19
  
20
  
21
  
22
  
23
  
24
  
25
  
26
  
27
  
28
  
29
  
30
  
31
  
32
  
33
  
34
  
35
  
36
  
37
  
38
  
39
  
40
  
41
  
42
  
43
  
44
  
45
  
46
  
47
  
48
  
49
  
50
  
51
  
52
  
53
  
54
  
55
  
56
  
57
  
58
  
59
  
60
  
61
  
62
  
63
  
64
  
65
  
66
  
67
  
68
  
69
  
70
  
71
  
72
  
73
  
74
  
75
  
76
  
77
  
78
  
79
  
80
  
81
  
82
  
83
  
84
  
85
  
86
  
87
  
88
  
89
  
90
  
91
  
92
  
93
  
94
  
95
  
/* 
 * These values are used by the stack machine, and can not be directly 
 * called from Pike. 
 */ 
OPCODE_NOCODE("arg+=256", F_PREFIX_256,0) 
OPCODE_NOCODE("arg+=512", F_PREFIX_512,0) 
OPCODE_NOCODE("arg+=768", F_PREFIX_768,0) 
OPCODE_NOCODE("arg+=1024", F_PREFIX_1024,0) 
OPCODE_NOCODE("arg+=256*X", F_PREFIX_CHARX256,0) 
OPCODE_NOCODE("arg+=256*XX", F_PREFIX_WORDX256,0) 
OPCODE_NOCODE("arg+=256*XXX", F_PREFIX_24BITX256,0) 
 
OPCODE_NOCODE("arg+=256", F_PREFIX2_256,0) 
OPCODE_NOCODE("arg+=512", F_PREFIX2_512,0) 
OPCODE_NOCODE("arg+=768", F_PREFIX2_768,0) 
OPCODE_NOCODE("arg+=1024", F_PREFIX2_1024,0) 
OPCODE_NOCODE("arg+=256*X", F_PREFIX2_CHARX256,0) 
OPCODE_NOCODE("arg+=256*XX", F_PREFIX2_WORDX256,0) 
OPCODE_NOCODE("arg+=256*XXX", F_PREFIX2_24BITX256,0) 
 
#include "interpret_protos.h" 
 
/* Used to mark an entry point from eval_instruction(). */ 
OPCODE_NOCODE("entry", F_ENTRY,0) 
 
/* These two are only used for dumping. */ 
OPCODE_NOCODE("filename", F_FILENAME, 0) 
OPCODE_NOCODE("line", F_LINE, 0) 
 
/* Alias for F_EXTERNAL when the identifier is a getter/setter. */ 
OPCODE_NOCODE("get/set", F_GET_SET, 0) 
 
/* 
 * These are token values that needn't have an associated code for the 
 * compiled file 
 */ 
OPCODE_NOCODE("opcode_max", F_MAX_OPCODE, 0) 
 
OPCODE_NOCODE("+=", F_ADD_EQ,0) 
OPCODE_NOCODE("&=", F_AND_EQ,0) 
OPCODE_NOCODE("arg_list", F_ARG_LIST, 0) 
OPCODE_NOCODE("comma_expr", F_COMMA_EXPR, 0) 
OPCODE_NOCODE("break", F_BREAK,0) 
OPCODE_NOCODE("case", F_CASE,0) 
OPCODE_NOCODE("case_range", F_CASE_RANGE,0) 
OPCODE_NOCODE("continue", F_CONTINUE,0) 
OPCODE_NOCODE("default", F_DEFAULT,0) 
OPCODE_NOCODE("/=", F_DIV_EQ,0) 
OPCODE_NOCODE("do-while", F_DO,0) 
OPCODE_NOCODE("call_efun", F_EFUN_CALL, 0) 
OPCODE_NOCODE("for", F_FOR,0) 
OPCODE_NOCODE("<<=", F_LSH_EQ,0) 
OPCODE_NOCODE("lvalue_list", F_LVALUE_LIST,0) 
OPCODE_NOCODE("%=", F_MOD_EQ,0) 
OPCODE_NOCODE("|=", F_OR_EQ,0) 
OPCODE_NOCODE("*=", F_MULT_EQ,0) 
OPCODE_NOCODE("**=", F_POW_EQ,0) 
OPCODE_NOCODE(">>=", F_RSH_EQ,0) 
OPCODE_NOCODE("-=", F_SUB_EQ,0) 
OPCODE_NOCODE("val_lval", F_VAL_LVAL, 0) 
OPCODE_NOCODE("^=", F_XOR_EQ,0) 
OPCODE_NOCODE("multi_assign", F_MULTI_ASSIGN, 0) 
OPCODE_NOCODE("nop", F_NOP,0) 
 
/* a[i.. */ 
OPCODE_NOCODE("[i..]", F_RANGE_FROM_BEG, 0)  
 
/* a[<i.. */ 
OPCODE_NOCODE("[<i..]", F_RANGE_FROM_END, 0) 
 
/* a[.. */ 
OPCODE_NOCODE("[..]", F_RANGE_OPEN, 0) 
OPCODE_NOCODE("version", F_VERSION, 0) 
OPCODE_NOCODE("align", F_ALIGN, I_HASARG) 
OPCODE_NOCODE("pointer", F_POINTER, I_ISPOINTER) 
OPCODE_NOCODE("label", F_LABEL,I_HASARG) 
OPCODE_NOCODE("stmt_label", F_NORMAL_STMT_LABEL,I_HASARG) 
OPCODE_NOCODE("custom_label", F_CUSTOM_STMT_LABEL,I_HASARG) 
OPCODE_NOCODE("data", F_DATA, I_DATA) 
OPCODE_NOCODE("function start", F_START_FUNCTION,0) 
OPCODE_NOCODE("byte", F_BYTE, I_DATA) 
OPCODE_NOCODE("notreached!", F_NOTREACHED, 0) 
OPCODE_NOCODE("auto_map_marker", F_AUTO_MAP_MARKER, 0) 
OPCODE_NOCODE("auto_map", F_AUTO_MAP, 0) 
 
/* Alias for F_RETURN, but cannot be optimized into a tail recursion call */ 
OPCODE_NOCODE("volatile_return", F_VOLATILE_RETURN, 0) 
 
/* Alias for F_ASSIGN, used when LHS has side-effects that should                                          
 * only be evaluated once. */ 
OPCODE_NOCODE("assign_self", F_ASSIGN_SELF, 0) 
 
OPCODE_NOCODE("instr_max", F_MAX_INSTR, 0)