source: branches/1.3/opcode_spec_def.h @ 784

Last change on this file since 784 was 784, checked in by moo, 3 years ago

merge from trunk

  • Property svn:eol-style set to native
File size: 18.1 KB
RevLine 
[398]1static const xc_opcode_spec_t xc_opcode_spec[] = {
[626]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                      */
[398]25#ifdef ZEND_ENGINE_2
[626]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                  */
[398]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
[626]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                          */
[398]58#ifdef ZEND_ENGINE_2
[626]59    OPSPEC(    UNUSED,    JMPADDR,     UNUSED,     UNUSED) /* 42 JMP                            */
60    OPSPEC(    UNUSED,        STD,    JMPADDR,     UNUSED) /* 43 JMPZ                           */
61    OPSPEC(    UNUSED,        STD,    JMPADDR,     UNUSED) /* 44 JMPNZ                          */
[398]62#else
63    OPSPEC(    UNUSED,     OPLINE,     UNUSED,     UNUSED)
64    OPSPEC(    UNUSED,        STD,     OPLINE,     UNUSED)
65    OPSPEC(    UNUSED,        STD,     OPLINE,     UNUSED)
66#endif
[626]67    OPSPEC(    OPLINE,        STD,     OPLINE,     UNUSED) /* 45 JMPZNZ                         */
[398]68#ifdef ZEND_ENGINE_2
[626]69    OPSPEC(    UNUSED,        STD,    JMPADDR,        TMP) /* 46 JMPZ_EX                        */
70    OPSPEC(    UNUSED,        STD,    JMPADDR,        TMP) /* 47 JMPNZ_EX                       */
[398]71#else
72    OPSPEC(    UNUSED,        STD,     OPLINE,        TMP)
73    OPSPEC(    UNUSED,        STD,     OPLINE,        TMP)
74#endif
[626]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             */
[398]87#ifdef ZEND_ENGINE_2
[626]88    OPSPEC(     FCALL,        STD,     OPLINE,        VAR) /* 60 DO_FCALL                       */
89    OPSPEC(     FCALL,        STD,     OPLINE,        VAR) /* 61 DO_FCALL_BY_NAME               */
[398]90#else
91    OPSPEC(     FCALL,        STD,     UNUSED,        VAR)
92    OPSPEC(     FCALL,        STD,     UNUSED,        VAR)
93#endif
[626]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                       */
[398]100#ifdef ZEND_ENGINE_2
[626]101    OPSPEC(    UNUSED,      CLASS,     UNUSED,        VAR) /* 68 NEW                            */
[398]102#else
103    OPSPEC(    UNUSED,        STD,     UNUSED,        VAR)
104#endif
[626]105#ifdef ZEND_ENGINE_2_3
[726]106    OPSPEC(       STD,        STD,        STD,     UNUSED) /* 69 INIT_NS_FCALL_BY_NAME          */
[626]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                */
[398]114#ifdef ZEND_ENGINE_2_1
115  /* php 5.1 and up */
[626]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                       */
[398]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
[626]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              */
[784]149#ifdef ZEND_ENGINE_2_3
150    OPSPEC(    UNUSED,      VAR_2,        STD,        TMP) /* 99 FETCH_CONSTANT                 */
151#elif defined(ZEND_ENGINE_2)
[626]152    OPSPEC(    UNUSED,     UCLASS,        STD,        TMP) /* 99 FETCH_CONSTANT                 */
[398]153#else
[626]154    OPSPEC(    UNUSED,        STD,     UNUSED,        TMP) /* 99 FETCH_CONSTANT                 */
[398]155#endif
[726]156#ifdef ZEND_ENGINE_2_3
157    OPSPEC(       STD,    JMPADDR,        STD,     UNUSED) /* 100 GOTO                           */
158#else
[626]159    OPSPEC(   DECLARE,        STD,        STD,     UNUSED) /* 100 DECLARE_FUNCTION_OR_CLASS      */
[726]160#endif
[626]161    OPSPEC(       STD,        STD,        STD,        STD) /* 101 EXT_STMT                       */
162    OPSPEC(       STD,        STD,        STD,        STD) /* 102 EXT_FCALL_BEGIN                */
163    OPSPEC(       STD,        STD,        STD,        STD) /* 103 EXT_FCALL_END                  */
164    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 104 EXT_NOP                        */
165    OPSPEC(    UNUSED,        STD,     UNUSED,     UNUSED) /* 105 TICKS                          */
166    OPSPEC(SEND_NOREF,        VAR,        ARG,     UNUSED) /* 106 SEND_VAR_NO_REF                */
[398]167#ifdef ZEND_ENGINE_2
[626]168    OPSPEC(    OPLINE,      CLASS,        STD,     UNUSED) /* 107 CATCH                          */
169    OPSPEC(    UNUSED,        STD,     OPLINE,     UNUSED) /* 108 THROW                          */
170    OPSPEC(    FCLASS,        STD,        STD,      CLASS) /* 109 FETCH_CLASS                    */
171    OPSPEC(    UNUSED,        STD,     UNUSED,        VAR) /* 110 CLONE                          */
[726]172
[626]173    OPSPEC(    UNUSED,        STD,     UNUSED,     UNUSED) /* 111 INIT_CTOR_CALL                 */
[726]174
[626]175    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 112 INIT_METHOD_CALL               */
[726]176#   ifdef ZEND_ENGINE_2_3
177    OPSPEC(    UNUSED,        STD,        STD,     UNUSED) /* 113 INIT_STATIC_METHOD_CALL        */
178#   else
[626]179    OPSPEC(    UNUSED,     UCLASS,        STD,     UNUSED) /* 113 INIT_STATIC_METHOD_CALL        */
[726]180#   endif
[626]181    OPSPEC(     ISSET,        STD,      FETCH,        TMP) /* 114 ISSET_ISEMPTY_VAR              */
182    OPSPEC(     ISSET,        STD,        STD,        TMP) /* 115 ISSET_ISEMPTY_DIM_OBJ          */
[726]183
[626]184    OPSPEC(    UNUSED,      CLASS,        STD,     UNUSED) /* 116 IMPORT_FUNCTION                */
185    OPSPEC(    UNUSED,      CLASS,        STD,     UNUSED) /* 117 IMPORT_CLASS                   */
186    OPSPEC(    UNUSED,      CLASS,        STD,     UNUSED) /* 118 IMPORT_CONST                   */
187    OPSPEC(       STD,        STD,        STD,        STD) /* 119 OP_119                         */
188    OPSPEC(       STD,        STD,        STD,        STD) /* 120 OP_120                         */
189    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 121 ASSIGN_ADD_OBJ                 */
190    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 122 ASSIGN_SUB_OBJ                 */
191    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 123 ASSIGN_MUL_OBJ                 */
192    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 124 ASSIGN_DIV_OBJ                 */
193    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 125 ASSIGN_MOD_OBJ                 */
194    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 126 ASSIGN_SL_OBJ                  */
195    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 127 ASSIGN_SR_OBJ                  */
196    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 128 ASSIGN_CONCAT_OBJ              */
197    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 129 ASSIGN_BW_OR_OBJ               */
198    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 130 ASSIGN_BW_AND_OBJ              */
199    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 131 ASSIGN_BW_XOR_OBJ              */
[726]200
[626]201    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 132 PRE_INC_OBJ                    */
202    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 133 PRE_DEC_OBJ                    */
203    OPSPEC(    UNUSED,        STD,        STD,        TMP) /* 134 POST_INC_OBJ                   */
204    OPSPEC(    UNUSED,        STD,        STD,        TMP) /* 135 POST_DEC_OBJ                   */
205    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 136 ASSIGN_OBJ                     */
206    OPSPEC(    UNUSED,        STD,        STD,        STD) /* 137 OP_DATA                        */
207    OPSPEC(    UNUSED,        STD,      CLASS,        TMP) /* 138 INSTANCEOF                     */
208    OPSPEC(    UNUSED,        STD,        STD,      CLASS) /* 139 DECLARE_CLASS                  */
209    OPSPEC(     CLASS,        STD,        STD,      CLASS) /* 140 DECLARE_INHERITED_CLASS        */
210    OPSPEC(    UNUSED,        STD,        STD,     UNUSED) /* 141 DECLARE_FUNCTION               */
211    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 142 RAISE_ABSTRACT_ERROR           */
212#ifdef ZEND_ENGINE_2_3
213    OPSPEC(   DECLARE,        STD,        STD,     UNUSED) /* 143 DECLARE_CONST                  */
214#else
[726]215    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 143 UNDEF-143                      */
[398]216#endif
[726]217#ifdef ZEND_ENGINE_2_3
218    OPSPEC(     IFACE,      CLASS,        STD,     UNUSED) /* 144 ADD_INTERFACE                  */
219#else
[626]220    OPSPEC(     IFACE,      CLASS,      CLASS,     UNUSED) /* 144 ADD_INTERFACE                  */
[726]221#endif
222#ifdef ZEND_ENGINE_2_3
223    OPSPEC(     CLASS,        STD,        STD,     OPLINE) /* 145 DECLARE_INHERITED_CLASS_DELAYED */
224#else
[626]225    OPSPEC(    UNUSED,      CLASS,        STD,     UNUSED) /* 145 VERIFY_INSTANCEOF              */
[726]226#endif
[626]227    OPSPEC(    UNUSED,      CLASS,     UNUSED,     UNUSED) /* 146 VERIFY_ABSTRACT_CLASS          */
228    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 147 ASSIGN_DIM                     */
229    OPSPEC(     ISSET,        STD,        STD,        TMP) /* 148 ISSET_ISEMPTY_PROP_OBJ         */
230    OPSPEC(       STD,     UNUSED,     UNUSED,        STD) /* 149 HANDLE_EXCEPTION               */
[726]231    OPSPEC(       STD,     UNUSED,     UNUSED,        STD) /* 150 USER_OPCODE                    */
[626]232# ifdef ZEND_ENGINE_2_3
233    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 151 UNDEF                          */
[726]234    OPSPEC(    UNUSED,        STD,    JMPADDR,        TMP) /* 152 JMP_SET                        */
235    OPSPEC(    UNUSED,        STD,        STD,        TMP) /* 153 DECLARE_LAMBDA_FUNCTION        */
236# else
237    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 151 UNDEF                          */
238    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 152 UNDEF                          */
239    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 153 UNDEF                          */
[626]240# endif
[726]241#else
242    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 107 UNDEF                          */
243    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 108 UNDEF                          */
244    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 109 UNDEF                          */
245    OPSPEC(     FCALL,        STD,     OPLINE,        VAR) /* 61 DO_FCALL_BY_FUNC                */
246    OPSPEC(INIT_FCALL,        STD,        STD,     UNUSED) /* 111 INIT_FCALL_BY_FUNC             */
247    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 112 UNDEF                          */
[626]248#endif
[398]249};
Note: See TracBrowser for help on using the repository browser.