PHP at the Core: A Hacker's Guide
PHP Manual

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 » http://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
116not documentedno
117not documentedno
118not documentedno
119not documentedno
120not documentedno
121not documentedno
122not documentedno
123not documentedno
124not documentedno
125not documentedno
126not documentedno
127not documentedno
128not documentedno
129not documentedno
130not documentedno
131not documentedno
132PRE_INC_OBJyes
133PRE_DEC_OBJyes
134POST_INC_OBJyes
135POST_DEC_OBJyes
136ASSIGN_OBJyes
137not documentedno
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
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

PHP at the Core: A Hacker's Guide
PHP Manual