| 1 | static const xc_opcode_spec_t xc_opcode_spec[] = { |
|---|
| 2 | OPSPEC( UNUSED, UNUSED, UNUSED, UNUSED) /* 0 NOP */ |
|---|
| 3 | OPSPEC( UNUSED, STD, STD, TMP) /* 1 ADD */ |
|---|
| 4 | OPSPEC( UNUSED, STD, STD, TMP) /* 2 SUB */ |
|---|
| 5 | OPSPEC( UNUSED, STD, STD, TMP) /* 3 MUL */ |
|---|
| 6 | OPSPEC( UNUSED, STD, STD, TMP) /* 4 DIV */ |
|---|
| 7 | OPSPEC( UNUSED, STD, STD, TMP) /* 5 MOD */ |
|---|
| 8 | OPSPEC( UNUSED, STD, STD, TMP) /* 6 SL */ |
|---|
| 9 | OPSPEC( UNUSED, STD, STD, TMP) /* 7 SR */ |
|---|
| 10 | OPSPEC( UNUSED, STD, STD, TMP) /* 8 CONCAT */ |
|---|
| 11 | OPSPEC( UNUSED, STD, STD, TMP) /* 9 BW_OR */ |
|---|
| 12 | OPSPEC( UNUSED, STD, STD, TMP) /* 10 BW_AND */ |
|---|
| 13 | OPSPEC( UNUSED, STD, STD, TMP) /* 11 BW_XOR */ |
|---|
| 14 | OPSPEC( UNUSED, STD, UNUSED, TMP) /* 12 BW_NOT */ |
|---|
| 15 | OPSPEC( UNUSED, STD, STD, TMP) /* 13 BOOL_NOT */ |
|---|
| 16 | OPSPEC( UNUSED, STD, STD, TMP) /* 14 BOOL_XOR */ |
|---|
| 17 | OPSPEC( UNUSED, STD, STD, TMP) /* 15 IS_IDENTICAL */ |
|---|
| 18 | OPSPEC( UNUSED, STD, STD, TMP) /* 16 IS_NOT_IDENTICAL */ |
|---|
| 19 | OPSPEC( UNUSED, STD, STD, TMP) /* 17 IS_EQUAL */ |
|---|
| 20 | OPSPEC( UNUSED, STD, STD, TMP) /* 18 IS_NOT_EQUAL */ |
|---|
| 21 | OPSPEC( UNUSED, STD, STD, TMP) /* 19 IS_SMALLER */ |
|---|
| 22 | OPSPEC( UNUSED, STD, STD, TMP) /* 20 IS_SMALLER_OR_EQUAL */ |
|---|
| 23 | OPSPEC( CAST, STD, UNUSED, TMP) /* 21 CAST */ |
|---|
| 24 | OPSPEC( UNUSED, STD, UNUSED, TMP) /* 22 QM_ASSIGN */ |
|---|
| 25 | #ifdef ZEND_ENGINE_2 |
|---|
| 26 | OPSPEC( ASSIGN, STD, STD, VAR) /* 23 ASSIGN_ADD */ |
|---|
| 27 | OPSPEC( ASSIGN, STD, STD, VAR) /* 24 ASSIGN_SUB */ |
|---|
| 28 | OPSPEC( ASSIGN, STD, STD, VAR) /* 25 ASSIGN_MUL */ |
|---|
| 29 | OPSPEC( ASSIGN, STD, STD, VAR) /* 26 ASSIGN_DIV */ |
|---|
| 30 | OPSPEC( ASSIGN, STD, STD, VAR) /* 27 ASSIGN_MOD */ |
|---|
| 31 | OPSPEC( ASSIGN, STD, STD, VAR) /* 28 ASSIGN_SL */ |
|---|
| 32 | OPSPEC( ASSIGN, STD, STD, VAR) /* 29 ASSIGN_SR */ |
|---|
| 33 | OPSPEC( ASSIGN, STD, STD, VAR) /* 30 ASSIGN_CONCAT */ |
|---|
| 34 | OPSPEC( ASSIGN, STD, STD, VAR) /* 31 ASSIGN_BW_OR */ |
|---|
| 35 | OPSPEC( ASSIGN, STD, STD, VAR) /* 32 ASSIGN_BW_AND */ |
|---|
| 36 | OPSPEC( ASSIGN, STD, STD, VAR) /* 33 ASSIGN_BW_XOR */ |
|---|
| 37 | #else |
|---|
| 38 | OPSPEC( UNUSED, VAR, STD, VAR) |
|---|
| 39 | OPSPEC( UNUSED, VAR, STD, VAR) |
|---|
| 40 | OPSPEC( UNUSED, VAR, STD, VAR) |
|---|
| 41 | OPSPEC( UNUSED, VAR, STD, VAR) |
|---|
| 42 | OPSPEC( UNUSED, VAR, STD, VAR) |
|---|
| 43 | OPSPEC( UNUSED, VAR, STD, VAR) |
|---|
| 44 | OPSPEC( UNUSED, VAR, STD, VAR) |
|---|
| 45 | OPSPEC( UNUSED, VAR, STD, VAR) |
|---|
| 46 | OPSPEC( UNUSED, VAR, STD, VAR) |
|---|
| 47 | OPSPEC( UNUSED, VAR, STD, VAR) |
|---|
| 48 | OPSPEC( UNUSED, VAR, STD, VAR) |
|---|
| 49 | #endif |
|---|
| 50 | OPSPEC( UNUSED, VAR, UNUSED, VAR) /* 34 PRE_INC */ |
|---|
| 51 | OPSPEC( UNUSED, VAR, UNUSED, VAR) /* 35 PRE_DEC */ |
|---|
| 52 | OPSPEC( UNUSED, VAR, UNUSED, TMP) /* 36 POST_INC */ |
|---|
| 53 | OPSPEC( UNUSED, VAR, UNUSED, TMP) /* 37 POST_DEC */ |
|---|
| 54 | OPSPEC( UNUSED, VAR, STD, VAR) /* 38 ASSIGN */ |
|---|
| 55 | OPSPEC( UNUSED, VAR, VAR, VAR) /* 39 ASSIGN_REF */ |
|---|
| 56 | OPSPEC( UNUSED, STD, UNUSED, UNUSED) /* 40 ECHO */ |
|---|
| 57 | OPSPEC( UNUSED, STD, UNUSED, TMP) /* 41 PRINT */ |
|---|
| 58 | #ifdef ZEND_ENGINE_2 |
|---|
| 59 | OPSPEC( UNUSED, JMPADDR, UNUSED, UNUSED) /* 42 JMP */ |
|---|
| 60 | OPSPEC( UNUSED, STD, JMPADDR, UNUSED) /* 43 JMPZ */ |
|---|
| 61 | OPSPEC( UNUSED, STD, JMPADDR, UNUSED) /* 44 JMPNZ */ |
|---|
| 62 | #else |
|---|
| 63 | OPSPEC( UNUSED, OPLINE, UNUSED, UNUSED) |
|---|
| 64 | OPSPEC( UNUSED, STD, OPLINE, UNUSED) |
|---|
| 65 | OPSPEC( UNUSED, STD, OPLINE, UNUSED) |
|---|
| 66 | #endif |
|---|
| 67 | OPSPEC( OPLINE, STD, OPLINE, UNUSED) /* 45 JMPZNZ */ |
|---|
| 68 | #ifdef ZEND_ENGINE_2 |
|---|
| 69 | OPSPEC( UNUSED, STD, JMPADDR, TMP) /* 46 JMPZ_EX */ |
|---|
| 70 | OPSPEC( UNUSED, STD, JMPADDR, TMP) /* 47 JMPNZ_EX */ |
|---|
| 71 | #else |
|---|
| 72 | OPSPEC( UNUSED, STD, OPLINE, TMP) |
|---|
| 73 | OPSPEC( UNUSED, STD, OPLINE, TMP) |
|---|
| 74 | #endif |
|---|
| 75 | OPSPEC( UNUSED, STD, STD, TMP) /* 48 CASE */ |
|---|
| 76 | OPSPEC( BIT, STD, UNUSED, UNUSED) /* 49 SWITCH_FREE */ |
|---|
| 77 | OPSPEC( UNUSED, BRK, STD, UNUSED) /* 50 BRK */ |
|---|
| 78 | OPSPEC( UNUSED, CONT, STD, UNUSED) /* 51 CONT */ |
|---|
| 79 | OPSPEC( UNUSED, STD, UNUSED, TMP) /* 52 BOOL */ |
|---|
| 80 | OPSPEC( UNUSED, UNUSED, UNUSED, TMP) /* 53 INIT_STRING */ |
|---|
| 81 | OPSPEC( UNUSED, STD, STD, TMP) /* 54 ADD_CHAR */ |
|---|
| 82 | OPSPEC( UNUSED, STD, STD, TMP) /* 55 ADD_STRING */ |
|---|
| 83 | OPSPEC( UNUSED, STD, STD, TMP) /* 56 ADD_VAR */ |
|---|
| 84 | OPSPEC( UNUSED, UNUSED, UNUSED, TMP) /* 57 BEGIN_SILENCE */ |
|---|
| 85 | OPSPEC( UNUSED, TMP, UNUSED, UNUSED) /* 58 END_SILENCE */ |
|---|
| 86 | OPSPEC(INIT_FCALL, STD, STD, UNUSED) /* 59 INIT_FCALL_BY_NAME */ |
|---|
| 87 | #ifdef ZEND_ENGINE_2 |
|---|
| 88 | OPSPEC( FCALL, STD, OPLINE, VAR) /* 60 DO_FCALL */ |
|---|
| 89 | OPSPEC( FCALL, STD, OPLINE, VAR) /* 61 DO_FCALL_BY_NAME */ |
|---|
| 90 | #else |
|---|
| 91 | OPSPEC( FCALL, STD, UNUSED, VAR) |
|---|
| 92 | OPSPEC( FCALL, STD, UNUSED, VAR) |
|---|
| 93 | #endif |
|---|
| 94 | OPSPEC( UNUSED, STD, UNUSED, UNUSED) /* 62 RETURN */ |
|---|
| 95 | OPSPEC( UNUSED, ARG, UNUSED, VAR) /* 63 RECV */ |
|---|
| 96 | OPSPEC( UNUSED, ARG, STD, VAR) /* 64 RECV_INIT */ |
|---|
| 97 | OPSPEC( SEND, STD, ARG, UNUSED) /* 65 SEND_VAL */ |
|---|
| 98 | OPSPEC( SEND, VAR, ARG, UNUSED) /* 66 SEND_VAR */ |
|---|
| 99 | OPSPEC( SEND, VAR, ARG, UNUSED) /* 67 SEND_REF */ |
|---|
| 100 | #ifdef ZEND_ENGINE_2 |
|---|
| 101 | OPSPEC( UNUSED, CLASS, UNUSED, VAR) /* 68 NEW */ |
|---|
| 102 | #else |
|---|
| 103 | OPSPEC( UNUSED, STD, UNUSED, VAR) |
|---|
| 104 | #endif |
|---|
| 105 | #ifdef ZEND_ENGINE_2_3 |
|---|
| 106 | OPSPEC( STD, STD, STD, STD) /* 69 INIT_NS_FCALL_BY_NAME */ |
|---|
| 107 | #else |
|---|
| 108 | OPSPEC( UNUSED, STD, OPLINE, UNUSED) /* 69 JMP_NO_CTOR */ |
|---|
| 109 | #endif |
|---|
| 110 | OPSPEC( UNUSED, TMP, UNUSED, UNUSED) /* 70 FREE */ |
|---|
| 111 | OPSPEC( BIT, STD, STD, TMP) /* 71 INIT_ARRAY */ |
|---|
| 112 | OPSPEC( BIT, STD, STD, TMP) /* 72 ADD_ARRAY_ELEMENT */ |
|---|
| 113 | OPSPEC( UNUSED, STD, INCLUDE, VAR) /* 73 INCLUDE_OR_EVAL */ |
|---|
| 114 | #ifdef ZEND_ENGINE_2_1 |
|---|
| 115 | /* php 5.1 and up */ |
|---|
| 116 | OPSPEC( UNUSED, STD, FETCH, UNUSED) /* 74 UNSET_VAR */ |
|---|
| 117 | OPSPEC( STD, STD, STD, UNUSED) /* 75 UNSET_DIM */ |
|---|
| 118 | OPSPEC( STD, STD, STD, UNUSED) /* 76 UNSET_OBJ */ |
|---|
| 119 | OPSPEC( BIT, STD, OPLINE, VAR) /* 77 FE_RESET */ |
|---|
| 120 | #else |
|---|
| 121 | /* <= php 5.0 */ |
|---|
| 122 | /* though there is no ISSET_ISEMPTY in php 5.0 it's better to leave it here i guess */ |
|---|
| 123 | OPSPEC( UNUSED, STD, UNUSED, UNUSED) |
|---|
| 124 | OPSPEC( UNUSED, VAR, STD, UNUSED) |
|---|
| 125 | OPSPEC( UNUSED, VAR, ISSET, TMP) |
|---|
| 126 | OPSPEC( BIT, STD, UNUSED, VAR) |
|---|
| 127 | #endif |
|---|
| 128 | OPSPEC( FE, STD, OPLINE, TMP) /* 78 FE_FETCH */ |
|---|
| 129 | OPSPEC( UNUSED, STD, UNUSED, UNUSED) /* 79 EXIT */ |
|---|
| 130 | OPSPEC( UNUSED, STD, FETCH, VAR) /* 80 FETCH_R */ |
|---|
| 131 | OPSPEC( FETCH, VAR, STD, VAR) /* 81 FETCH_DIM_R */ |
|---|
| 132 | OPSPEC( UNUSED, VAR_2, STD, VAR) /* 82 FETCH_OBJ_R */ |
|---|
| 133 | OPSPEC( UNUSED, STD, FETCH, VAR) /* 83 FETCH_W */ |
|---|
| 134 | OPSPEC( UNUSED, VAR, STD, VAR) /* 84 FETCH_DIM_W */ |
|---|
| 135 | OPSPEC( UNUSED, VAR_2, STD, VAR) /* 85 FETCH_OBJ_W */ |
|---|
| 136 | OPSPEC( UNUSED, STD, FETCH, VAR) /* 86 FETCH_RW */ |
|---|
| 137 | OPSPEC( UNUSED, VAR, STD, VAR) /* 87 FETCH_DIM_RW */ |
|---|
| 138 | OPSPEC( UNUSED, VAR_2, STD, VAR) /* 88 FETCH_OBJ_RW */ |
|---|
| 139 | OPSPEC( UNUSED, STD, FETCH, VAR) /* 89 FETCH_IS */ |
|---|
| 140 | OPSPEC( UNUSED, VAR, STD, VAR) /* 90 FETCH_DIM_IS */ |
|---|
| 141 | OPSPEC( UNUSED, VAR_2, STD, VAR) /* 91 FETCH_OBJ_IS */ |
|---|
| 142 | OPSPEC( ARG, STD, FETCH, VAR) /* 92 FETCH_FUNC_ARG */ |
|---|
| 143 | OPSPEC( ARG, VAR, STD, VAR) /* 93 FETCH_DIM_FUNC_ARG */ |
|---|
| 144 | OPSPEC( ARG, VAR_2, STD, VAR) /* 94 FETCH_OBJ_FUNC_ARG */ |
|---|
| 145 | OPSPEC( UNUSED, STD, FETCH, VAR) /* 95 FETCH_UNSET */ |
|---|
| 146 | OPSPEC( UNUSED, VAR, STD, VAR) /* 96 FETCH_DIM_UNSET */ |
|---|
| 147 | OPSPEC( UNUSED, VAR_2, STD, VAR) /* 97 FETCH_OBJ_UNSET */ |
|---|
| 148 | OPSPEC( UNUSED, STD, STD, VAR) /* 98 FETCH_DIM_TMP_VAR */ |
|---|
| 149 | |
|---|
| 150 | #ifdef ZEND_ENGINE_2 |
|---|
| 151 | OPSPEC( UNUSED, UCLASS, STD, TMP) /* 99 FETCH_CONSTANT */ |
|---|
| 152 | #else |
|---|
| 153 | OPSPEC( UNUSED, STD, UNUSED, TMP) /* 99 FETCH_CONSTANT */ |
|---|
| 154 | #endif |
|---|
| 155 | OPSPEC( DECLARE, STD, STD, UNUSED) /* 100 DECLARE_FUNCTION_OR_CLASS */ |
|---|
| 156 | OPSPEC( STD, STD, STD, STD) /* 101 EXT_STMT */ |
|---|
| 157 | OPSPEC( STD, STD, STD, STD) /* 102 EXT_FCALL_BEGIN */ |
|---|
| 158 | OPSPEC( STD, STD, STD, STD) /* 103 EXT_FCALL_END */ |
|---|
| 159 | OPSPEC( UNUSED, UNUSED, UNUSED, UNUSED) /* 104 EXT_NOP */ |
|---|
| 160 | OPSPEC( UNUSED, STD, UNUSED, UNUSED) /* 105 TICKS */ |
|---|
| 161 | OPSPEC(SEND_NOREF, VAR, ARG, UNUSED) /* 106 SEND_VAR_NO_REF */ |
|---|
| 162 | #ifdef ZEND_ENGINE_2 |
|---|
| 163 | OPSPEC( OPLINE, CLASS, STD, UNUSED) /* 107 CATCH */ |
|---|
| 164 | OPSPEC( UNUSED, STD, OPLINE, UNUSED) /* 108 THROW */ |
|---|
| 165 | OPSPEC( FCLASS, STD, STD, CLASS) /* 109 FETCH_CLASS */ |
|---|
| 166 | OPSPEC( UNUSED, STD, UNUSED, VAR) /* 110 CLONE */ |
|---|
| 167 | OPSPEC( UNUSED, STD, UNUSED, UNUSED) /* 111 INIT_CTOR_CALL */ |
|---|
| 168 | OPSPEC( UNUSED, STD, STD, VAR) /* 112 INIT_METHOD_CALL */ |
|---|
| 169 | OPSPEC( UNUSED, UCLASS, STD, UNUSED) /* 113 INIT_STATIC_METHOD_CALL */ |
|---|
| 170 | OPSPEC( ISSET, STD, FETCH, TMP) /* 114 ISSET_ISEMPTY_VAR */ |
|---|
| 171 | OPSPEC( ISSET, STD, STD, TMP) /* 115 ISSET_ISEMPTY_DIM_OBJ */ |
|---|
| 172 | OPSPEC( UNUSED, CLASS, STD, UNUSED) /* 116 IMPORT_FUNCTION */ |
|---|
| 173 | OPSPEC( UNUSED, CLASS, STD, UNUSED) /* 117 IMPORT_CLASS */ |
|---|
| 174 | OPSPEC( UNUSED, CLASS, STD, UNUSED) /* 118 IMPORT_CONST */ |
|---|
| 175 | OPSPEC( STD, STD, STD, STD) /* 119 OP_119 */ |
|---|
| 176 | OPSPEC( STD, STD, STD, STD) /* 120 OP_120 */ |
|---|
| 177 | OPSPEC( UNUSED, STD, STD, VAR) /* 121 ASSIGN_ADD_OBJ */ |
|---|
| 178 | OPSPEC( UNUSED, STD, STD, VAR) /* 122 ASSIGN_SUB_OBJ */ |
|---|
| 179 | OPSPEC( UNUSED, STD, STD, VAR) /* 123 ASSIGN_MUL_OBJ */ |
|---|
| 180 | OPSPEC( UNUSED, STD, STD, VAR) /* 124 ASSIGN_DIV_OBJ */ |
|---|
| 181 | OPSPEC( UNUSED, STD, STD, VAR) /* 125 ASSIGN_MOD_OBJ */ |
|---|
| 182 | OPSPEC( UNUSED, STD, STD, VAR) /* 126 ASSIGN_SL_OBJ */ |
|---|
| 183 | OPSPEC( UNUSED, STD, STD, VAR) /* 127 ASSIGN_SR_OBJ */ |
|---|
| 184 | OPSPEC( UNUSED, STD, STD, VAR) /* 128 ASSIGN_CONCAT_OBJ */ |
|---|
| 185 | OPSPEC( UNUSED, STD, STD, VAR) /* 129 ASSIGN_BW_OR_OBJ */ |
|---|
| 186 | OPSPEC( UNUSED, STD, STD, VAR) /* 130 ASSIGN_BW_AND_OBJ */ |
|---|
| 187 | OPSPEC( UNUSED, STD, STD, VAR) /* 131 ASSIGN_BW_XOR_OBJ */ |
|---|
| 188 | OPSPEC( UNUSED, STD, STD, VAR) /* 132 PRE_INC_OBJ */ |
|---|
| 189 | OPSPEC( UNUSED, STD, STD, VAR) /* 133 PRE_DEC_OBJ */ |
|---|
| 190 | OPSPEC( UNUSED, STD, STD, TMP) /* 134 POST_INC_OBJ */ |
|---|
| 191 | OPSPEC( UNUSED, STD, STD, TMP) /* 135 POST_DEC_OBJ */ |
|---|
| 192 | OPSPEC( UNUSED, STD, STD, VAR) /* 136 ASSIGN_OBJ */ |
|---|
| 193 | OPSPEC( UNUSED, STD, STD, STD) /* 137 OP_DATA */ |
|---|
| 194 | OPSPEC( UNUSED, STD, CLASS, TMP) /* 138 INSTANCEOF */ |
|---|
| 195 | OPSPEC( UNUSED, STD, STD, CLASS) /* 139 DECLARE_CLASS */ |
|---|
| 196 | OPSPEC( CLASS, STD, STD, CLASS) /* 140 DECLARE_INHERITED_CLASS */ |
|---|
| 197 | OPSPEC( UNUSED, STD, STD, UNUSED) /* 141 DECLARE_FUNCTION */ |
|---|
| 198 | OPSPEC( UNUSED, UNUSED, UNUSED, UNUSED) /* 142 RAISE_ABSTRACT_ERROR */ |
|---|
| 199 | #ifdef ZEND_ENGINE_2_3 |
|---|
| 200 | OPSPEC( DECLARE, STD, STD, UNUSED) /* 143 DECLARE_CONST */ |
|---|
| 201 | #else |
|---|
| 202 | OPSPEC( UNUSED, STD, UNUSED, UNUSED) /* 143 START_NAMESPACE */ |
|---|
| 203 | #endif |
|---|
| 204 | OPSPEC( IFACE, CLASS, CLASS, UNUSED) /* 144 ADD_INTERFACE */ |
|---|
| 205 | OPSPEC( UNUSED, CLASS, STD, UNUSED) /* 145 VERIFY_INSTANCEOF */ |
|---|
| 206 | OPSPEC( UNUSED, CLASS, UNUSED, UNUSED) /* 146 VERIFY_ABSTRACT_CLASS */ |
|---|
| 207 | OPSPEC( UNUSED, STD, STD, VAR) /* 147 ASSIGN_DIM */ |
|---|
| 208 | OPSPEC( ISSET, STD, STD, TMP) /* 148 ISSET_ISEMPTY_PROP_OBJ */ |
|---|
| 209 | OPSPEC( STD, UNUSED, UNUSED, STD) /* 149 HANDLE_EXCEPTION */ |
|---|
| 210 | # ifdef ZEND_ENGINE_2_3 |
|---|
| 211 | OPSPEC( STD, UNUSED, UNUSED, STD) /* 150 ZEND_USER_OPCODE */ |
|---|
| 212 | OPSPEC( UNUSED, UNUSED, UNUSED, UNUSED) /* 151 UNDEF */ |
|---|
| 213 | OPSPEC( UNUSED, STD, JMPADDR, UNUSED) /* 152 JMP_SET */ |
|---|
| 214 | OPSPEC( UNUSED, STD, STD, UNUSED) /* 153 DECLARE_LAMBDA_FUNCTION */ |
|---|
| 215 | # endif |
|---|
| 216 | #endif |
|---|
| 217 | }; |
|---|