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?
0NOPyes
1ADDyes
2SUByes
3MULyes
4DIVyes
5MODyes
6SLyes
7SRyes
8CONCATyes
9BW_ORyes
10BW_ANDyes
11BW_XORyes
12BW_NOTyes
13BOOL_NOTyes
14BOOL_XORyes
15IS_IDENTICALyes
16IS_NOT_IDENTICALyes
17IS_EQUALyes
18IS_NOT_EQUALyes
19IS_SMALLERyes
20IS_SMALLER_OR_EQUALyes
21CASTyes
22QM_ASSIGNyes
23ASSIGN_ADDyes
24ASSIGN_SUByes
25ASSIGN_MULyes
26ASSIGN_DIVyes
27ASSIGN_MODyes
28ASSIGN_SLyes
29ASSIGN_SRyes
30ASSIGN_CONCATyes
31ASSIGN_BW_ORyes
32ASSIGN_BW_ANDyes
33ASSIGN_BW_XORyes
34PRE_INCyes
35PRE_DECyes
36POST_INCyes
37POST_DECyes
38ASSIGNyes
39ASSIGN_REFyes
40ECHOyes
41PRINTyes
42JMPyes
43JMPZyes
44JMPNZyes
45JMPZNZyes
46JMPZ_EXyes
47JMPNZ_EXyes
48CASEyes
49SWITCH_FREEyes
50BRKyes
51CONTyes
52BOOLyes
53INIT_STRINGyes
54ADD_CHARyes
55ADD_STRINGyes
56ADD_VARyes
57BEGIN_SILENCEyes
58END_SILENCEyes
59INIT_FCALL_BY_NAMEyes
60DO_FCALLyes
61DO_FCALL_BY_NAMEyes
62RETURNyes
63RECVyes
64RECV_INITyes
65SEND_VALyes
66SEND_VARyes
67SEND_REFyes
68NEWyes
69INIT_NS_FCALL_BY_NAMEno
70FREEyes
71INIT_ARRAYyes
72ADD_ARRAY_ELEMENTyes
73INCLUDE_OR_EVALyes
74UNSET_VARyes
75UNSET_DIMyes
76UNSET_OBJyes
77FE_RESETyes
78FE_FETCHyes
79EXITyes
80FETCH_Ryes
81FETCH_DIM_Ryes
82FETCH_OBJ_Ryes
83FETCH_Wyes
84FETCH_DIM_Wyes
85FETCH_OBJ_Wyes
86FETCH_RWyes
87FETCH_DIM_RWyes
88FETCH_OBJ_RWyes
89FETCH_ISyes
90FETCH_DIM_ISno
91FETCH_OBJ_ISno
92FETCH_FUNC_ARGyes
93FETCH_DIM_FUNC_ARGyes
94FETCH_OBJ_FUNC_ARGyes
95FETCH_UNSETno
96FETCH_DIM_UNSETno
97FETCH_OBJ_UNSETno
98FETCH_DIM_TMP_VARyes
99FETCH_CONSTANTyes
100GOTOno
101EXT_STMTyes
102EXT_FCALL_BEGINno
103EXT_FCALL_ENDno
104EXT_NOPno
105TICKSyes
106SEND_VAR_NO_REFno
107CATCHyes
108THROWyes
109FETCH_CLASSyes
110CLONEyes
111RETURN_BY_REFno
112INIT_METHOD_CALLyes
113INIT_STATIC_METHOD_CALLyes
114ISSET_ISEMPTY_VARyes
115ISSET_ISEMPTY_DIM_OBJyes
116ZEND_SEND_VAL_EXno
117ZEND_SEND_VARno
118ZEND_INIT_USER_CALLno
119ZEND_SEND_ARRAYno
120ZEND_SEND_USERno
121ZEND_STRLENno
122ZEND_DEFINEDno
123ZEND_TYPE_CHECKno
124ZEND_VERIFY_RETURN_TYPEno
125ZEND_FE_RESET_RWno
126ZEND_FE_FETCH_RWno
127ZEND_FE_FREEno
128ZEND_INIT_DYNAMIC_CALLno
129ZEND_DO_ICALLno
130ZEND_DO_UCALLno
131ZEND_DO_FCALL_BY_NAMEno
132PRE_INC_OBJyes
133PRE_DEC_OBJyes
134POST_INC_OBJyes
135POST_DEC_OBJyes
136ASSIGN_OBJyes
137ZEND_OP_DATAno
138INSTANCEOFyes
139DECLARE_CLASSyes
140DECLARE_INHERITED_CLASSyes
141DECLARE_FUNCTIONyes
142RAISE_ABSTRACT_ERRORyes
143DECLARE_CONSTno
144ADD_INTERFACEno
145DECLARE_INHERITED_CLASS_DELAYEDno
146VERIFY_ABSTRACT_CLASSno
147ASSIGN_DIMyes
148ISSET_ISEMPTY_PROP_OBJyes
149HANDLE_EXCEPTIONyes
150USER_OPCODEno
151ZEND_ASSERT_CHECKno
152ZEND_JMP_SETno
153ZEND_DECLARE_LAMBDA_FUNCTIONno
154ZEND_ADD_TRAITno
155ZEND_BIND_TRAITSno
156ZEND_SEPARATEno
157ZEND_FETCH_CLASS_NAMEno
158ZEND_CALL_TRAMPOLINEno
159ZEND_DISCARD_EXCEPTIONno
160ZEND_YIELDno
161ZEND_GENERATOR_RETURNno
162ZEND_FAST_CALLno
163ZEND_FAST_RETno
164ZEND_RECV_VARIADICno
165ZEND_SEND_UNPACKno
166ZEND_POWno
167ZEND_ASSIGN_POWno
168ZEND_BIND_GLOBALno
169ZEND_COALESCEno
170ZEND_SPACESHIPno
171ZEND_DECLARE_ANON_CLASSno
172ZEND_DECLARE_ANON_INHERITED_CLASSno
173ZEND_FETCH_STATIC_PROP_Rno
174ZEND_FETCH_STATIC_PROP_Wno
175ZEND_FETCH_STATIC_PROP_RWno
176ZEND_FETCH_STATIC_PROP_ISno
177ZEND_FETCH_STATIC_PROP_FUNC_ARGno
178ZEND_FETCH_STATIC_PROP_UNSETno
179ZEND_UNSET_STATIC_PROPno
180ZEND_ISSET_ISEMPTY_STATIC_PROPno
181ZEND_FETCH_CLASS_CONSTANTno
182ZEND_BIND_LEXICALno
183ZEND_BIND_STATICno
184ZEND_FETCH_THISno
185ZEND_SEND_FUNC_ARGno
186ZEND_ISSET_ISEMPTY_THISno
187ZEND_SWITCH_LONGno
188ZEND_SWITCH_STRINGno
189ZEND_IN_ARRAYno
190ZEND_COUNTno
191ZEND_GET_CLASSno
192ZEND_GET_CALLED_CLASSno
193ZEND_GET_TYPEno
194ZEND_FUNC_NUM_ARGSno
195ZEND_FUNC_GET_ARGSno
196ZEND_UNSET_CVno
197ZEND_ISSET_ISEMPTY_CVno

Pseudo-opcodes that are used only temporarily during compilation.

Pseudo-opcodes List
Number Name Has sample code?
253ZEND_GOTOno
254ZEND_BRKno
255ZEND_CONTno