xref: /PHP-7.0/Zend/zend_vm_opcodes.c (revision 478f119a)
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