When parsing PHP files, Zend Engine 2 generates a series of operation codes, commonly known as "opcodes", representing the function of the code. This part of the manual details those opcodes and their behaviour.
Opcodes may be dumped for a given PHP file using the vld extension (see » https://pecl.php.net/package/vld).
Number | Name | Has sample code? |
---|---|---|
0 | NOP | yes |
1 | ADD | yes |
2 | SUB | yes |
3 | MUL | yes |
4 | DIV | yes |
5 | MOD | yes |
6 | SL | yes |
7 | SR | yes |
8 | CONCAT | yes |
9 | BW_OR | yes |
10 | BW_AND | yes |
11 | BW_XOR | yes |
12 | BW_NOT | yes |
13 | BOOL_NOT | yes |
14 | BOOL_XOR | yes |
15 | IS_IDENTICAL | yes |
16 | IS_NOT_IDENTICAL | yes |
17 | IS_EQUAL | yes |
18 | IS_NOT_EQUAL | yes |
19 | IS_SMALLER | yes |
20 | IS_SMALLER_OR_EQUAL | yes |
21 | CAST | yes |
22 | QM_ASSIGN | yes |
23 | ASSIGN_ADD | yes |
24 | ASSIGN_SUB | yes |
25 | ASSIGN_MUL | yes |
26 | ASSIGN_DIV | yes |
27 | ASSIGN_MOD | yes |
28 | ASSIGN_SL | yes |
29 | ASSIGN_SR | yes |
30 | ASSIGN_CONCAT | yes |
31 | ASSIGN_BW_OR | yes |
32 | ASSIGN_BW_AND | yes |
33 | ASSIGN_BW_XOR | yes |
34 | PRE_INC | yes |
35 | PRE_DEC | yes |
36 | POST_INC | yes |
37 | POST_DEC | yes |
38 | ASSIGN | yes |
39 | ASSIGN_REF | yes |
40 | ECHO | yes |
41 | yes | |
42 | JMP | yes |
43 | JMPZ | yes |
44 | JMPNZ | yes |
45 | JMPZNZ | yes |
46 | JMPZ_EX | yes |
47 | JMPNZ_EX | yes |
48 | CASE | yes |
49 | SWITCH_FREE | yes |
50 | BRK | yes |
51 | CONT | yes |
52 | BOOL | yes |
53 | INIT_STRING | yes |
54 | ADD_CHAR | yes |
55 | ADD_STRING | yes |
56 | ADD_VAR | yes |
57 | BEGIN_SILENCE | yes |
58 | END_SILENCE | yes |
59 | INIT_FCALL_BY_NAME | yes |
60 | DO_FCALL | yes |
61 | DO_FCALL_BY_NAME | yes |
62 | RETURN | yes |
63 | RECV | yes |
64 | RECV_INIT | yes |
65 | SEND_VAL | yes |
66 | SEND_VAR | yes |
67 | SEND_REF | yes |
68 | NEW | yes |
69 | INIT_NS_FCALL_BY_NAME | no |
70 | FREE | yes |
71 | INIT_ARRAY | yes |
72 | ADD_ARRAY_ELEMENT | yes |
73 | INCLUDE_OR_EVAL | yes |
74 | UNSET_VAR | yes |
75 | UNSET_DIM | yes |
76 | UNSET_OBJ | yes |
77 | FE_RESET | yes |
78 | FE_FETCH | yes |
79 | EXIT | yes |
80 | FETCH_R | yes |
81 | FETCH_DIM_R | yes |
82 | FETCH_OBJ_R | yes |
83 | FETCH_W | yes |
84 | FETCH_DIM_W | yes |
85 | FETCH_OBJ_W | yes |
86 | FETCH_RW | yes |
87 | FETCH_DIM_RW | yes |
88 | FETCH_OBJ_RW | yes |
89 | FETCH_IS | yes |
90 | FETCH_DIM_IS | no |
91 | FETCH_OBJ_IS | no |
92 | FETCH_FUNC_ARG | yes |
93 | FETCH_DIM_FUNC_ARG | yes |
94 | FETCH_OBJ_FUNC_ARG | yes |
95 | FETCH_UNSET | no |
96 | FETCH_DIM_UNSET | no |
97 | FETCH_OBJ_UNSET | no |
98 | FETCH_DIM_TMP_VAR | yes |
99 | FETCH_CONSTANT | yes |
100 | GOTO | no |
101 | EXT_STMT | yes |
102 | EXT_FCALL_BEGIN | no |
103 | EXT_FCALL_END | no |
104 | EXT_NOP | no |
105 | TICKS | yes |
106 | SEND_VAR_NO_REF | no |
107 | CATCH | yes |
108 | THROW | yes |
109 | FETCH_CLASS | yes |
110 | CLONE | yes |
111 | RETURN_BY_REF | no |
112 | INIT_METHOD_CALL | yes |
113 | INIT_STATIC_METHOD_CALL | yes |
114 | ISSET_ISEMPTY_VAR | yes |
115 | ISSET_ISEMPTY_DIM_OBJ | yes |
116 | ZEND_SEND_VAL_EX | no |
117 | ZEND_SEND_VAR | no |
118 | ZEND_INIT_USER_CALL | no |
119 | ZEND_SEND_ARRAY | no |
120 | ZEND_SEND_USER | no |
121 | ZEND_STRLEN | no |
122 | ZEND_DEFINED | no |
123 | ZEND_TYPE_CHECK | no |
124 | ZEND_VERIFY_RETURN_TYPE | no |
125 | ZEND_FE_RESET_RW | no |
126 | ZEND_FE_FETCH_RW | no |
127 | ZEND_FE_FREE | no |
128 | ZEND_INIT_DYNAMIC_CALL | no |
129 | ZEND_DO_ICALL | no |
130 | ZEND_DO_UCALL | no |
131 | ZEND_DO_FCALL_BY_NAME | no |
132 | PRE_INC_OBJ | yes |
133 | PRE_DEC_OBJ | yes |
134 | POST_INC_OBJ | yes |
135 | POST_DEC_OBJ | yes |
136 | ASSIGN_OBJ | yes |
137 | ZEND_OP_DATA | no |
138 | INSTANCEOF | yes |
139 | DECLARE_CLASS | yes |
140 | DECLARE_INHERITED_CLASS | yes |
141 | DECLARE_FUNCTION | yes |
142 | RAISE_ABSTRACT_ERROR | yes |
143 | DECLARE_CONST | no |
144 | ADD_INTERFACE | no |
145 | DECLARE_INHERITED_CLASS_DELAYED | no |
146 | VERIFY_ABSTRACT_CLASS | no |
147 | ASSIGN_DIM | yes |
148 | ISSET_ISEMPTY_PROP_OBJ | yes |
149 | HANDLE_EXCEPTION | yes |
150 | USER_OPCODE | no |
151 | ZEND_ASSERT_CHECK | no |
152 | ZEND_JMP_SET | no |
153 | ZEND_DECLARE_LAMBDA_FUNCTION | no |
154 | ZEND_ADD_TRAIT | no |
155 | ZEND_BIND_TRAITS | no |
156 | ZEND_SEPARATE | no |
157 | ZEND_FETCH_CLASS_NAME | no |
158 | ZEND_CALL_TRAMPOLINE | no |
159 | ZEND_DISCARD_EXCEPTION | no |
160 | ZEND_YIELD | no |
161 | ZEND_GENERATOR_RETURN | no |
162 | ZEND_FAST_CALL | no |
163 | ZEND_FAST_RET | no |
164 | ZEND_RECV_VARIADIC | no |
165 | ZEND_SEND_UNPACK | no |
166 | ZEND_POW | no |
167 | ZEND_ASSIGN_POW | no |
168 | ZEND_BIND_GLOBAL | no |
169 | ZEND_COALESCE | no |
170 | ZEND_SPACESHIP | no |
171 | ZEND_DECLARE_ANON_CLASS | no |
172 | ZEND_DECLARE_ANON_INHERITED_CLASS | no |
173 | ZEND_FETCH_STATIC_PROP_R | no |
174 | ZEND_FETCH_STATIC_PROP_W | no |
175 | ZEND_FETCH_STATIC_PROP_RW | no |
176 | ZEND_FETCH_STATIC_PROP_IS | no |
177 | ZEND_FETCH_STATIC_PROP_FUNC_ARG | no |
178 | ZEND_FETCH_STATIC_PROP_UNSET | no |
179 | ZEND_UNSET_STATIC_PROP | no |
180 | ZEND_ISSET_ISEMPTY_STATIC_PROP | no |
181 | ZEND_FETCH_CLASS_CONSTANT | no |
182 | ZEND_BIND_LEXICAL | no |
183 | ZEND_BIND_STATIC | no |
184 | ZEND_FETCH_THIS | no |
185 | ZEND_SEND_FUNC_ARG | no |
186 | ZEND_ISSET_ISEMPTY_THIS | no |
187 | ZEND_SWITCH_LONG | no |
188 | ZEND_SWITCH_STRING | no |
189 | ZEND_IN_ARRAY | no |
190 | ZEND_COUNT | no |
191 | ZEND_GET_CLASS | no |
192 | ZEND_GET_CALLED_CLASS | no |
193 | ZEND_GET_TYPE | no |
194 | ZEND_FUNC_NUM_ARGS | no |
195 | ZEND_FUNC_GET_ARGS | no |
196 | ZEND_UNSET_CV | no |
197 | ZEND_ISSET_ISEMPTY_CV | no |
Pseudo-opcodes that are used only temporarily during compilation.
Number | Name | Has sample code? |
---|---|---|
253 | ZEND_GOTO | no |
254 | ZEND_BRK | no |
255 | ZEND_CONT | no |