source: trunk/xcache/xc_opcode_spec_def.h @ 1300

Last change on this file since 1300 was 1300, checked in by moo, 15 months ago

disassembler, Decompiler: fix ISSET_ISEMPTY_VAR

  • Property svn:eol-style set to native
File size: 17.3 KB
RevLine 
[398]1static const xc_opcode_spec_t xc_opcode_spec[] = {
[566]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    OPSPEC(    ASSIGN,        STD,        STD,        VAR) /* 23 ASSIGN_ADD                     */
26    OPSPEC(    ASSIGN,        STD,        STD,        VAR) /* 24 ASSIGN_SUB                     */
27    OPSPEC(    ASSIGN,        STD,        STD,        VAR) /* 25 ASSIGN_MUL                     */
28    OPSPEC(    ASSIGN,        STD,        STD,        VAR) /* 26 ASSIGN_DIV                     */
29    OPSPEC(    ASSIGN,        STD,        STD,        VAR) /* 27 ASSIGN_MOD                     */
30    OPSPEC(    ASSIGN,        STD,        STD,        VAR) /* 28 ASSIGN_SL                      */
31    OPSPEC(    ASSIGN,        STD,        STD,        VAR) /* 29 ASSIGN_SR                      */
32    OPSPEC(    ASSIGN,        STD,        STD,        VAR) /* 30 ASSIGN_CONCAT                  */
33    OPSPEC(    ASSIGN,        STD,        STD,        VAR) /* 31 ASSIGN_BW_OR                   */
34    OPSPEC(    ASSIGN,        STD,        STD,        VAR) /* 32 ASSIGN_BW_AND                  */
35    OPSPEC(    ASSIGN,        STD,        STD,        VAR) /* 33 ASSIGN_BW_XOR                  */
36    OPSPEC(    UNUSED,        VAR,     UNUSED,        VAR) /* 34 PRE_INC                        */
37    OPSPEC(    UNUSED,        VAR,     UNUSED,        VAR) /* 35 PRE_DEC                        */
38    OPSPEC(    UNUSED,        VAR,     UNUSED,        TMP) /* 36 POST_INC                       */
39    OPSPEC(    UNUSED,        VAR,     UNUSED,        TMP) /* 37 POST_DEC                       */
40    OPSPEC(    UNUSED,        VAR,        STD,        VAR) /* 38 ASSIGN                         */
41    OPSPEC(    UNUSED,        VAR,        VAR,        VAR) /* 39 ASSIGN_REF                     */
42    OPSPEC(    UNUSED,        STD,     UNUSED,     UNUSED) /* 40 ECHO                           */
43    OPSPEC(    UNUSED,        STD,     UNUSED,        TMP) /* 41 PRINT                          */
44    OPSPEC(    UNUSED,    JMPADDR,     UNUSED,     UNUSED) /* 42 JMP                            */
45    OPSPEC(    UNUSED,        STD,    JMPADDR,     UNUSED) /* 43 JMPZ                           */
46    OPSPEC(    UNUSED,        STD,    JMPADDR,     UNUSED) /* 44 JMPNZ                          */
47    OPSPEC(    OPLINE,        STD,     OPLINE,     UNUSED) /* 45 JMPZNZ                         */
48    OPSPEC(    UNUSED,        STD,    JMPADDR,        TMP) /* 46 JMPZ_EX                        */
49    OPSPEC(    UNUSED,        STD,    JMPADDR,        TMP) /* 47 JMPNZ_EX                       */
50    OPSPEC(    UNUSED,        STD,        STD,        TMP) /* 48 CASE                           */
51    OPSPEC(       BIT,        STD,     UNUSED,     UNUSED) /* 49 SWITCH_FREE                    */
52    OPSPEC(    UNUSED,        BRK,        STD,     UNUSED) /* 50 BRK                            */
53    OPSPEC(    UNUSED,       CONT,        STD,     UNUSED) /* 51 CONT                           */
54    OPSPEC(    UNUSED,        STD,     UNUSED,        TMP) /* 52 BOOL                           */
55    OPSPEC(    UNUSED,     UNUSED,     UNUSED,        TMP) /* 53 INIT_STRING                    */
56    OPSPEC(    UNUSED,        STD,        STD,        TMP) /* 54 ADD_CHAR                       */
57    OPSPEC(    UNUSED,        STD,        STD,        TMP) /* 55 ADD_STRING                     */
58    OPSPEC(    UNUSED,        STD,        STD,        TMP) /* 56 ADD_VAR                        */
59    OPSPEC(    UNUSED,     UNUSED,     UNUSED,        TMP) /* 57 BEGIN_SILENCE                  */
60    OPSPEC(    UNUSED,        TMP,     UNUSED,     UNUSED) /* 58 END_SILENCE                    */
61    OPSPEC(INIT_FCALL,        STD,        STD,     UNUSED) /* 59 INIT_FCALL_BY_NAME             */
62    OPSPEC(     FCALL,        STD,     OPLINE,        VAR) /* 60 DO_FCALL                       */
63    OPSPEC(     FCALL,        STD,     OPLINE,        VAR) /* 61 DO_FCALL_BY_NAME               */
64    OPSPEC(    UNUSED,        STD,     UNUSED,     UNUSED) /* 62 RETURN                         */
65    OPSPEC(    UNUSED,        ARG,     UNUSED,        VAR) /* 63 RECV                           */
66    OPSPEC(    UNUSED,        ARG,        STD,        VAR) /* 64 RECV_INIT                      */
67    OPSPEC(      SEND,        STD,        ARG,     UNUSED) /* 65 SEND_VAL                       */
68    OPSPEC(      SEND,        VAR,        ARG,     UNUSED) /* 66 SEND_VAR                       */
69    OPSPEC(      SEND,        VAR,        ARG,     UNUSED) /* 67 SEND_REF                       */
70    OPSPEC(    UNUSED,      CLASS,     UNUSED,        VAR) /* 68 NEW                            */
[563]71#ifdef ZEND_ENGINE_2_3
[712]72    OPSPEC(       STD,        STD,        STD,     UNUSED) /* 69 INIT_NS_FCALL_BY_NAME          */
[563]73#else
[566]74    OPSPEC(    UNUSED,        STD,     OPLINE,     UNUSED) /* 69 JMP_NO_CTOR                    */
[563]75#endif
[566]76    OPSPEC(    UNUSED,        TMP,     UNUSED,     UNUSED) /* 70 FREE                           */
77    OPSPEC(       BIT,        STD,        STD,        TMP) /* 71 INIT_ARRAY                     */
78    OPSPEC(       BIT,        STD,        STD,        TMP) /* 72 ADD_ARRAY_ELEMENT              */
79    OPSPEC(    UNUSED,        STD,    INCLUDE,        VAR) /* 73 INCLUDE_OR_EVAL                */
[565]80#ifdef ZEND_ENGINE_2_1
81  /* php 5.1 and up */
[1295]82#   ifdef ZEND_ENGINE_2_4
83    OPSPEC(    UNUSED,        STD,        STD,     UNUSED) /* 74 UNSET_VAR                      */
84#   else
[566]85    OPSPEC(    UNUSED,        STD,      FETCH,     UNUSED) /* 74 UNSET_VAR                      */
[1295]86#   endif
[566]87    OPSPEC(       STD,        STD,        STD,     UNUSED) /* 75 UNSET_DIM                      */
88    OPSPEC(       STD,        STD,        STD,     UNUSED) /* 76 UNSET_OBJ                      */
89    OPSPEC(       BIT,        STD,     OPLINE,        VAR) /* 77 FE_RESET                       */
[565]90#else
91  /* <= php 5.0 */
92  /* though there is no ISSET_ISEMPTY in php 5.0 it's better to leave it here i guess */
93    OPSPEC(    UNUSED,        STD,     UNUSED,     UNUSED)
94    OPSPEC(    UNUSED,        VAR,        STD,     UNUSED)
95    OPSPEC(    UNUSED,        VAR,      ISSET,        TMP)
96    OPSPEC(       BIT,        STD,     UNUSED,        VAR)
97#endif
[566]98    OPSPEC(        FE,        STD,     OPLINE,        TMP) /* 78 FE_FETCH                       */
99    OPSPEC(    UNUSED,        STD,     UNUSED,     UNUSED) /* 79 EXIT                           */
100    OPSPEC(    UNUSED,        STD,      FETCH,        VAR) /* 80 FETCH_R                        */
101    OPSPEC(     FETCH,        VAR,        STD,        VAR) /* 81 FETCH_DIM_R                    */
102    OPSPEC(    UNUSED,      VAR_2,        STD,        VAR) /* 82 FETCH_OBJ_R                    */
103    OPSPEC(    UNUSED,        STD,      FETCH,        VAR) /* 83 FETCH_W                        */
104    OPSPEC(    UNUSED,        VAR,        STD,        VAR) /* 84 FETCH_DIM_W                    */
105    OPSPEC(    UNUSED,      VAR_2,        STD,        VAR) /* 85 FETCH_OBJ_W                    */
106    OPSPEC(    UNUSED,        STD,      FETCH,        VAR) /* 86 FETCH_RW                       */
107    OPSPEC(    UNUSED,        VAR,        STD,        VAR) /* 87 FETCH_DIM_RW                   */
108    OPSPEC(    UNUSED,      VAR_2,        STD,        VAR) /* 88 FETCH_OBJ_RW                   */
109    OPSPEC(    UNUSED,        STD,      FETCH,        VAR) /* 89 FETCH_IS                       */
110    OPSPEC(    UNUSED,        VAR,        STD,        VAR) /* 90 FETCH_DIM_IS                   */
111    OPSPEC(    UNUSED,      VAR_2,        STD,        VAR) /* 91 FETCH_OBJ_IS                   */
112    OPSPEC(       ARG,        STD,      FETCH,        VAR) /* 92 FETCH_FUNC_ARG                 */
113    OPSPEC(       ARG,        VAR,        STD,        VAR) /* 93 FETCH_DIM_FUNC_ARG             */
114    OPSPEC(       ARG,      VAR_2,        STD,        VAR) /* 94 FETCH_OBJ_FUNC_ARG             */
115    OPSPEC(    UNUSED,        STD,      FETCH,        VAR) /* 95 FETCH_UNSET                    */
116    OPSPEC(    UNUSED,        VAR,        STD,        VAR) /* 96 FETCH_DIM_UNSET                */
117    OPSPEC(    UNUSED,      VAR_2,        STD,        VAR) /* 97 FETCH_OBJ_UNSET                */
118    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 98 FETCH_DIM_TMP_VAR              */
[778]119#ifdef ZEND_ENGINE_2_3
120    OPSPEC(    UNUSED,      VAR_2,        STD,        TMP) /* 99 FETCH_CONSTANT                 */
[565]121#else
[1281]122    OPSPEC(    UNUSED,     UCLASS,        STD,        TMP) /* 99 FETCH_CONSTANT                 */
[565]123#endif
[712]124#ifdef ZEND_ENGINE_2_3
125    OPSPEC(       STD,    JMPADDR,        STD,     UNUSED) /* 100 GOTO                           */
126#else
[566]127    OPSPEC(   DECLARE,        STD,        STD,     UNUSED) /* 100 DECLARE_FUNCTION_OR_CLASS      */
[712]128#endif
[566]129    OPSPEC(       STD,        STD,        STD,        STD) /* 101 EXT_STMT                       */
130    OPSPEC(       STD,        STD,        STD,        STD) /* 102 EXT_FCALL_BEGIN                */
131    OPSPEC(       STD,        STD,        STD,        STD) /* 103 EXT_FCALL_END                  */
132    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 104 EXT_NOP                        */
133    OPSPEC(    UNUSED,        STD,     UNUSED,     UNUSED) /* 105 TICKS                          */
134    OPSPEC(SEND_NOREF,        VAR,        ARG,     UNUSED) /* 106 SEND_VAR_NO_REF                */
135    OPSPEC(    OPLINE,      CLASS,        STD,     UNUSED) /* 107 CATCH                          */
136    OPSPEC(    UNUSED,        STD,     OPLINE,     UNUSED) /* 108 THROW                          */
137    OPSPEC(    FCLASS,        STD,        STD,      CLASS) /* 109 FETCH_CLASS                    */
138    OPSPEC(    UNUSED,        STD,     UNUSED,        VAR) /* 110 CLONE                          */
[712]139
[821]140#ifdef ZEND_ENGINE_2_4
141    OPSPEC(    UNUSED,        STD,     UNUSED,     UNUSED) /* 111 RETURN_BY_REF                  */
142#else
[566]143    OPSPEC(    UNUSED,        STD,     UNUSED,     UNUSED) /* 111 INIT_CTOR_CALL                 */
[821]144#endif
[712]145
[566]146    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 112 INIT_METHOD_CALL               */
[1281]147#ifdef ZEND_ENGINE_2_3
[722]148    OPSPEC(    UNUSED,        STD,        STD,     UNUSED) /* 113 INIT_STATIC_METHOD_CALL        */
[1281]149#else
[566]150    OPSPEC(    UNUSED,     UCLASS,        STD,     UNUSED) /* 113 INIT_STATIC_METHOD_CALL        */
[1281]151#endif
[1300]152#ifdef ZEND_ENGINE_2_4
153    OPSPEC(     ISSET,        STD,        STD,        TMP) /* 114 ISSET_ISEMPTY_VAR              */
154#else
[566]155    OPSPEC(     ISSET,        STD,      FETCH,        TMP) /* 114 ISSET_ISEMPTY_VAR              */
[1300]156#endif
[566]157    OPSPEC(     ISSET,        STD,        STD,        TMP) /* 115 ISSET_ISEMPTY_DIM_OBJ          */
[712]158
[566]159    OPSPEC(    UNUSED,      CLASS,        STD,     UNUSED) /* 116 IMPORT_FUNCTION                */
160    OPSPEC(    UNUSED,      CLASS,        STD,     UNUSED) /* 117 IMPORT_CLASS                   */
161    OPSPEC(    UNUSED,      CLASS,        STD,     UNUSED) /* 118 IMPORT_CONST                   */
162    OPSPEC(       STD,        STD,        STD,        STD) /* 119 OP_119                         */
163    OPSPEC(       STD,        STD,        STD,        STD) /* 120 OP_120                         */
164    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 121 ASSIGN_ADD_OBJ                 */
165    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 122 ASSIGN_SUB_OBJ                 */
166    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 123 ASSIGN_MUL_OBJ                 */
167    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 124 ASSIGN_DIV_OBJ                 */
168    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 125 ASSIGN_MOD_OBJ                 */
169    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 126 ASSIGN_SL_OBJ                  */
170    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 127 ASSIGN_SR_OBJ                  */
171    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 128 ASSIGN_CONCAT_OBJ              */
172    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 129 ASSIGN_BW_OR_OBJ               */
173    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 130 ASSIGN_BW_AND_OBJ              */
174    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 131 ASSIGN_BW_XOR_OBJ              */
[712]175
[566]176    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 132 PRE_INC_OBJ                    */
177    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 133 PRE_DEC_OBJ                    */
178    OPSPEC(    UNUSED,        STD,        STD,        TMP) /* 134 POST_INC_OBJ                   */
179    OPSPEC(    UNUSED,        STD,        STD,        TMP) /* 135 POST_DEC_OBJ                   */
180    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 136 ASSIGN_OBJ                     */
181    OPSPEC(    UNUSED,        STD,        STD,        STD) /* 137 OP_DATA                        */
182    OPSPEC(    UNUSED,        STD,      CLASS,        TMP) /* 138 INSTANCEOF                     */
183    OPSPEC(    UNUSED,        STD,        STD,      CLASS) /* 139 DECLARE_CLASS                  */
184    OPSPEC(     CLASS,        STD,        STD,      CLASS) /* 140 DECLARE_INHERITED_CLASS        */
185    OPSPEC(    UNUSED,        STD,        STD,     UNUSED) /* 141 DECLARE_FUNCTION               */
186    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 142 RAISE_ABSTRACT_ERROR           */
[563]187#ifdef ZEND_ENGINE_2_3
[566]188    OPSPEC(   DECLARE,        STD,        STD,     UNUSED) /* 143 DECLARE_CONST                  */
[563]189#else
[712]190    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 143 UNDEF-143                      */
[563]191#endif
[712]192#ifdef ZEND_ENGINE_2_3
193    OPSPEC(     IFACE,      CLASS,        STD,     UNUSED) /* 144 ADD_INTERFACE                  */
194#else
[566]195    OPSPEC(     IFACE,      CLASS,      CLASS,     UNUSED) /* 144 ADD_INTERFACE                  */
[712]196#endif
197#ifdef ZEND_ENGINE_2_3
198    OPSPEC(     CLASS,        STD,        STD,     OPLINE) /* 145 DECLARE_INHERITED_CLASS_DELAYED */
199#else
[566]200    OPSPEC(    UNUSED,      CLASS,        STD,     UNUSED) /* 145 VERIFY_INSTANCEOF              */
[712]201#endif
[566]202    OPSPEC(    UNUSED,      CLASS,     UNUSED,     UNUSED) /* 146 VERIFY_ABSTRACT_CLASS          */
203    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 147 ASSIGN_DIM                     */
204    OPSPEC(     ISSET,        STD,        STD,        TMP) /* 148 ISSET_ISEMPTY_PROP_OBJ         */
205    OPSPEC(       STD,     UNUSED,     UNUSED,        STD) /* 149 HANDLE_EXCEPTION               */
[712]206    OPSPEC(       STD,     UNUSED,     UNUSED,        STD) /* 150 USER_OPCODE                    */
[1281]207#ifdef ZEND_ENGINE_2_3
[566]208    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 151 UNDEF                          */
[712]209    OPSPEC(    UNUSED,        STD,    JMPADDR,        TMP) /* 152 JMP_SET                        */
210    OPSPEC(    UNUSED,        STD,        STD,        TMP) /* 153 DECLARE_LAMBDA_FUNCTION        */
[1281]211#endif
212#ifdef ZEND_ENGINE_2_4
[821]213    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 154 ADD_TRAIT                      */
214    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 155 BIND_TRAITS                    */
215    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 156 SEPARATE                       */
216    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 157 QM_ASSIGN_VAR                  */
217    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 158 JMP_SET_VAR                    */
[1281]218#endif
219#ifdef ZEND_ENGINE_2_5
[1213]220    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 159 DISCARD_EXCEPTION              */
221    OPSPEC(    UNUSED,        STD,        STD,     UNUSED) /* 160 YIELD                          */
222    OPSPEC(    UNUSED,        STD,     UNUSED,     UNUSED) /* 161 GENERATOR_RETURN               */
223    OPSPEC(    UNUSED,    JMPADDR,     UNUSED,     UNUSED) /* 162 FAST_CALL                      */
224    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 163 FAST_RET                       */
[565]225#endif
[398]226};
Note: See TracBrowser for help on using the repository browser.