xref: /PHP-5.5/Zend/zend_vm_opcodes.c (revision 73c1be26)
1 /*
2    +----------------------------------------------------------------------+
3    | Zend Engine                                                          |
4    +----------------------------------------------------------------------+
5    | Copyright (c) 1998-2015 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[164] = {
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 };
190 
zend_get_opcode_name(zend_uchar opcode)191 ZEND_API const char* zend_get_opcode_name(zend_uchar opcode) {
192 	return zend_vm_opcodes_map[opcode];
193 }
194