source: branches/1.3/opcode_spec_def.h @ 726

Last change on this file since 726 was 726, checked in by moo, 4 years ago

merge from trunk

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