1 /*
2 +----------------------------------------------------------------------+
3 | Zend Engine |
4 +----------------------------------------------------------------------+
5 | Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
6 +----------------------------------------------------------------------+
7 | This source file is subject to version 2.00 of the Zend license, |
8 | that is bundled with this package in the file LICENSE, and is |
9 | available through the world-wide-web at the following url: |
10 | http://www.zend.com/license/2_00.txt. |
11 | If you did not receive a copy of the Zend license and are unable to |
12 | obtain it through the world-wide-web, please send a note to |
13 | license@zend.com so we can mail you a copy immediately. |
14 +----------------------------------------------------------------------+
15 | Authors: Andi Gutmans <andi@zend.com> |
16 | Zeev Suraski <zeev@zend.com> |
17 | Dmitry Stogov <dmitry@zend.com> |
18 +----------------------------------------------------------------------+
19 */
20
21 #include <stdio.h>
22 #include <zend.h>
23
24 const char *zend_vm_opcodes_map[168] = {
25 "ZEND_NOP",
26 "ZEND_ADD",
27 "ZEND_SUB",
28 "ZEND_MUL",
29 "ZEND_DIV",
30 "ZEND_MOD",
31 "ZEND_SL",
32 "ZEND_SR",
33 "ZEND_CONCAT",
34 "ZEND_BW_OR",
35 "ZEND_BW_AND",
36 "ZEND_BW_XOR",
37 "ZEND_BW_NOT",
38 "ZEND_BOOL_NOT",
39 "ZEND_BOOL_XOR",
40 "ZEND_IS_IDENTICAL",
41 "ZEND_IS_NOT_IDENTICAL",
42 "ZEND_IS_EQUAL",
43 "ZEND_IS_NOT_EQUAL",
44 "ZEND_IS_SMALLER",
45 "ZEND_IS_SMALLER_OR_EQUAL",
46 "ZEND_CAST",
47 "ZEND_QM_ASSIGN",
48 "ZEND_ASSIGN_ADD",
49 "ZEND_ASSIGN_SUB",
50 "ZEND_ASSIGN_MUL",
51 "ZEND_ASSIGN_DIV",
52 "ZEND_ASSIGN_MOD",
53 "ZEND_ASSIGN_SL",
54 "ZEND_ASSIGN_SR",
55 "ZEND_ASSIGN_CONCAT",
56 "ZEND_ASSIGN_BW_OR",
57 "ZEND_ASSIGN_BW_AND",
58 "ZEND_ASSIGN_BW_XOR",
59 "ZEND_PRE_INC",
60 "ZEND_PRE_DEC",
61 "ZEND_POST_INC",
62 "ZEND_POST_DEC",
63 "ZEND_ASSIGN",
64 "ZEND_ASSIGN_REF",
65 "ZEND_ECHO",
66 "ZEND_PRINT",
67 "ZEND_JMP",
68 "ZEND_JMPZ",
69 "ZEND_JMPNZ",
70 "ZEND_JMPZNZ",
71 "ZEND_JMPZ_EX",
72 "ZEND_JMPNZ_EX",
73 "ZEND_CASE",
74 "ZEND_SWITCH_FREE",
75 "ZEND_BRK",
76 "ZEND_CONT",
77 "ZEND_BOOL",
78 "ZEND_INIT_STRING",
79 "ZEND_ADD_CHAR",
80 "ZEND_ADD_STRING",
81 "ZEND_ADD_VAR",
82 "ZEND_BEGIN_SILENCE",
83 "ZEND_END_SILENCE",
84 "ZEND_INIT_FCALL_BY_NAME",
85 "ZEND_DO_FCALL",
86 "ZEND_DO_FCALL_BY_NAME",
87 "ZEND_RETURN",
88 "ZEND_RECV",
89 "ZEND_RECV_INIT",
90 "ZEND_SEND_VAL",
91 "ZEND_SEND_VAR",
92 "ZEND_SEND_REF",
93 "ZEND_NEW",
94 "ZEND_INIT_NS_FCALL_BY_NAME",
95 "ZEND_FREE",
96 "ZEND_INIT_ARRAY",
97 "ZEND_ADD_ARRAY_ELEMENT",
98 "ZEND_INCLUDE_OR_EVAL",
99 "ZEND_UNSET_VAR",
100 "ZEND_UNSET_DIM",
101 "ZEND_UNSET_OBJ",
102 "ZEND_FE_RESET",
103 "ZEND_FE_FETCH",
104 "ZEND_EXIT",
105 "ZEND_FETCH_R",
106 "ZEND_FETCH_DIM_R",
107 "ZEND_FETCH_OBJ_R",
108 "ZEND_FETCH_W",
109 "ZEND_FETCH_DIM_W",
110 "ZEND_FETCH_OBJ_W",
111 "ZEND_FETCH_RW",
112 "ZEND_FETCH_DIM_RW",
113 "ZEND_FETCH_OBJ_RW",
114 "ZEND_FETCH_IS",
115 "ZEND_FETCH_DIM_IS",
116 "ZEND_FETCH_OBJ_IS",
117 "ZEND_FETCH_FUNC_ARG",
118 "ZEND_FETCH_DIM_FUNC_ARG",
119 "ZEND_FETCH_OBJ_FUNC_ARG",
120 "ZEND_FETCH_UNSET",
121 "ZEND_FETCH_DIM_UNSET",
122 "ZEND_FETCH_OBJ_UNSET",
123 "ZEND_FETCH_DIM_TMP_VAR",
124 "ZEND_FETCH_CONSTANT",
125 "ZEND_GOTO",
126 "ZEND_EXT_STMT",
127 "ZEND_EXT_FCALL_BEGIN",
128 "ZEND_EXT_FCALL_END",
129 "ZEND_EXT_NOP",
130 "ZEND_TICKS",
131 "ZEND_SEND_VAR_NO_REF",
132 "ZEND_CATCH",
133 "ZEND_THROW",
134 "ZEND_FETCH_CLASS",
135 "ZEND_CLONE",
136 "ZEND_RETURN_BY_REF",
137 "ZEND_INIT_METHOD_CALL",
138 "ZEND_INIT_STATIC_METHOD_CALL",
139 "ZEND_ISSET_ISEMPTY_VAR",
140 "ZEND_ISSET_ISEMPTY_DIM_OBJ",
141 NULL,
142 NULL,
143 NULL,
144 NULL,
145 NULL,
146 NULL,
147 NULL,
148 NULL,
149 NULL,
150 NULL,
151 NULL,
152 NULL,
153 NULL,
154 NULL,
155 NULL,
156 NULL,
157 "ZEND_PRE_INC_OBJ",
158 "ZEND_PRE_DEC_OBJ",
159 "ZEND_POST_INC_OBJ",
160 "ZEND_POST_DEC_OBJ",
161 "ZEND_ASSIGN_OBJ",
162 NULL,
163 "ZEND_INSTANCEOF",
164 "ZEND_DECLARE_CLASS",
165 "ZEND_DECLARE_INHERITED_CLASS",
166 "ZEND_DECLARE_FUNCTION",
167 "ZEND_RAISE_ABSTRACT_ERROR",
168 "ZEND_DECLARE_CONST",
169 "ZEND_ADD_INTERFACE",
170 "ZEND_DECLARE_INHERITED_CLASS_DELAYED",
171 "ZEND_VERIFY_ABSTRACT_CLASS",
172 "ZEND_ASSIGN_DIM",
173 "ZEND_ISSET_ISEMPTY_PROP_OBJ",
174 "ZEND_HANDLE_EXCEPTION",
175 "ZEND_USER_OPCODE",
176 NULL,
177 "ZEND_JMP_SET",
178 "ZEND_DECLARE_LAMBDA_FUNCTION",
179 "ZEND_ADD_TRAIT",
180 "ZEND_BIND_TRAITS",
181 "ZEND_SEPARATE",
182 "ZEND_QM_ASSIGN_VAR",
183 "ZEND_JMP_SET_VAR",
184 "ZEND_DISCARD_EXCEPTION",
185 "ZEND_YIELD",
186 "ZEND_GENERATOR_RETURN",
187 "ZEND_FAST_CALL",
188 "ZEND_FAST_RET",
189 "ZEND_RECV_VARIADIC",
190 "ZEND_SEND_UNPACK",
191 "ZEND_POW",
192 "ZEND_ASSIGN_POW",
193 };
194
zend_get_opcode_name(zend_uchar opcode)195 ZEND_API const char* zend_get_opcode_name(zend_uchar opcode) {
196 return zend_vm_opcodes_map[opcode];
197 }
198