1 /*
2 +----------------------------------------------------------------------+
3 | Zend Engine |
4 +----------------------------------------------------------------------+
5 | Copyright (c) 1998-2017 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[173] = {
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 NULL,
67 "ZEND_JMP",
68 "ZEND_JMPZ",
69 "ZEND_JMPNZ",
70 "ZEND_JMPZNZ",
71 "ZEND_JMPZ_EX",
72 "ZEND_JMPNZ_EX",
73 "ZEND_CASE",
74 NULL,
75 NULL,
76 NULL,
77 "ZEND_BOOL",
78 "ZEND_FAST_CONCAT",
79 "ZEND_ROPE_INIT",
80 "ZEND_ROPE_ADD",
81 "ZEND_ROPE_END",
82 "ZEND_BEGIN_SILENCE",
83 "ZEND_END_SILENCE",
84 "ZEND_INIT_FCALL_BY_NAME",
85 "ZEND_DO_FCALL",
86 "ZEND_INIT_FCALL",
87 "ZEND_RETURN",
88 "ZEND_RECV",
89 "ZEND_RECV_INIT",
90 "ZEND_SEND_VAL",
91 "ZEND_SEND_VAR_EX",
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_R",
103 "ZEND_FE_FETCH_R",
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_LIST",
124 "ZEND_FETCH_CONSTANT",
125 NULL,
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 "ZEND_SEND_VAL_EX",
142 "ZEND_SEND_VAR",
143 "ZEND_INIT_USER_CALL",
144 "ZEND_SEND_ARRAY",
145 "ZEND_SEND_USER",
146 "ZEND_STRLEN",
147 "ZEND_DEFINED",
148 "ZEND_TYPE_CHECK",
149 "ZEND_VERIFY_RETURN_TYPE",
150 "ZEND_FE_RESET_RW",
151 "ZEND_FE_FETCH_RW",
152 "ZEND_FE_FREE",
153 "ZEND_INIT_DYNAMIC_CALL",
154 "ZEND_DO_ICALL",
155 "ZEND_DO_UCALL",
156 "ZEND_DO_FCALL_BY_NAME",
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 "ZEND_OP_DATA",
163 "ZEND_INSTANCEOF",
164 "ZEND_DECLARE_CLASS",
165 "ZEND_DECLARE_INHERITED_CLASS",
166 "ZEND_DECLARE_FUNCTION",
167 "ZEND_YIELD_FROM",
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 "ZEND_ASSERT_CHECK",
177 "ZEND_JMP_SET",
178 "ZEND_DECLARE_LAMBDA_FUNCTION",
179 "ZEND_ADD_TRAIT",
180 "ZEND_BIND_TRAITS",
181 "ZEND_SEPARATE",
182 "ZEND_FETCH_CLASS_NAME",
183 "ZEND_CALL_TRAMPOLINE",
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 "ZEND_BIND_GLOBAL",
194 "ZEND_COALESCE",
195 "ZEND_SPACESHIP",
196 "ZEND_DECLARE_ANON_CLASS",
197 "ZEND_DECLARE_ANON_INHERITED_CLASS",
198 };
199
zend_get_opcode_name(zend_uchar opcode)200 ZEND_API const char* zend_get_opcode_name(zend_uchar opcode) {
201 return zend_vm_opcodes_map[opcode];
202 }
203