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 | 
 add a note
 add a note
  