Php/docs/internals2.opcodes

From Get docs

Zend Engine 2 Opcodes

Table of Contents

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).

Opcode List
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 PRINT 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.

Pseudo-opcodes List
Number Name Has sample code?
253 ZEND_GOTO no
254 ZEND_BRK no
255 ZEND_CONT no