1/*
2 * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26char * const opcode_in_out[][2] = {
27 {"", ""}, /* nop */
28 {"", "A"}, /* aconst_null */
29 {"", "I"}, /* iconst_m1 */
30 {"", "I"}, /* iconst_0 */
31 {"", "I"}, /* iconst_1 */
32 {"", "I"}, /* iconst_2 */
33 {"", "I"}, /* iconst_3 */
34 {"", "I"}, /* iconst_4 */
35 {"", "I"}, /* iconst_5 */
36 {"", "L"}, /* lconst_0 */
37 {"", "L"}, /* lconst_1 */
38 {"", "F"}, /* fconst_0 */
39 {"", "F"}, /* fconst_1 */
40 {"", "F"}, /* fconst_2 */
41 {"", "D"}, /* dconst_0 */
42 {"", "D"}, /* dconst_1 */
43 {"", "I"}, /* bipush */
44 {"", "I"}, /* sipush */
45 {"", "?"}, /* ldc */
46 {"", "?"}, /* ldc_w */
47 {"", "?"}, /* ldc2_w */
48 {"", "I"}, /* iload */
49 {"", "L"}, /* lload */
50 {"", "F"}, /* fload */
51 {"", "D"}, /* dload */
52 {"", "A"}, /* aload */
53 {"", "I"}, /* iload_0 */
54 {"", "I"}, /* iload_1 */
55 {"", "I"}, /* iload_2 */
56 {"", "I"}, /* iload_3 */
57 {"", "L"}, /* lload_0 */
58 {"", "L"}, /* lload_1 */
59 {"", "L"}, /* lload_2 */
60 {"", "L"}, /* lload_3 */
61 {"", "F"}, /* fload_0 */
62 {"", "F"}, /* fload_1 */
63 {"", "F"}, /* fload_2 */
64 {"", "F"}, /* fload_3 */
65 {"", "D"}, /* dload_0 */
66 {"", "D"}, /* dload_1 */
67 {"", "D"}, /* dload_2 */
68 {"", "D"}, /* dload_3 */
69 {"", "A"}, /* aload_0 */
70 {"", "A"}, /* aload_1 */
71 {"", "A"}, /* aload_2 */
72 {"", "A"}, /* aload_3 */
73 {"[I]I", "I"}, /* iaload */
74 {"[L]I", "L"}, /* laload */
75 {"[F]I", "F"}, /* faload */
76 {"[D]I", "D"}, /* daload */
77 {"[A]I", "A"}, /* aaload */
78 {"[B]I", "I"}, /* baload */
79 {"[C]I", "I"}, /* caload */
80 {"[S]I", "I"}, /* saload */
81 {"I", ""}, /* istore */
82 {"L", ""}, /* lstore */
83 {"F", ""}, /* fstore */
84 {"D", ""}, /* dstore */
85 {"A", ""}, /* astore */
86 {"I", ""}, /* istore_0 */
87 {"I", ""}, /* istore_1 */
88 {"I", ""}, /* istore_2 */
89 {"I", ""}, /* istore_3 */
90 {"L", ""}, /* lstore_0 */
91 {"L", ""}, /* lstore_1 */
92 {"L", ""}, /* lstore_2 */
93 {"L", ""}, /* lstore_3 */
94 {"F", ""}, /* fstore_0 */
95 {"F", ""}, /* fstore_1 */
96 {"F", ""}, /* fstore_2 */
97 {"F", ""}, /* fstore_3 */
98 {"D", ""}, /* dstore_0 */
99 {"D", ""}, /* dstore_1 */
100 {"D", ""}, /* dstore_2 */
101 {"D", ""}, /* dstore_3 */
102 {"A", ""}, /* astore_0 */
103 {"A", ""}, /* astore_1 */
104 {"A", ""}, /* astore_2 */
105 {"A", ""}, /* astore_3 */
106 {"[I]II", ""}, /* iastore */
107 {"[L]IL", ""}, /* lastore */
108 {"[F]IF", ""}, /* fastore */
109 {"[D]ID", ""}, /* dastore */
110 {"[A]IA", ""}, /* aastore */
111 {"[B]II", ""}, /* bastore */
112 {"[C]II", ""}, /* castore */
113 {"[S]II", ""}, /* sastore */
114 {"1", ""}, /* pop */
115 {"2+1", ""}, /* pop2 */
116 {"1", "11"}, /* dup */
117 {"21", "121"}, /* dup_x1 */
118 {"3+21", "1321"}, /* dup_x2 */
119 {"2+1", "2121"}, /* dup2 */
120 {"32+1", "21321"}, /* dup2_x1 */
121 {"4+32+1", "214321"}, /* dup2_x2 */
122 {"21", "12"}, /* swap */
123 {"II", "I"}, /* iadd */
124 {"LL", "L"}, /* ladd */
125 {"FF", "F"}, /* fadd */
126 {"DD", "D"}, /* dadd */
127 {"II", "I"}, /* isub */
128 {"LL", "L"}, /* lsub */
129 {"FF", "F"}, /* fsub */
130 {"DD", "D"}, /* dsub */
131 {"II", "I"}, /* imul */
132 {"LL", "L"}, /* lmul */
133 {"FF", "F"}, /* fmul */
134 {"DD", "D"}, /* dmul */
135 {"II", "I"}, /* idiv */
136 {"LL", "L"}, /* ldiv */
137 {"FF", "F"}, /* fdiv */
138 {"DD", "D"}, /* ddiv */
139 {"II", "I"}, /* irem */
140 {"LL", "L"}, /* lrem */
141 {"FF", "F"}, /* frem */
142 {"DD", "D"}, /* drem */
143 {"I", "I"}, /* ineg */
144 {"L", "L"}, /* lneg */
145 {"F", "F"}, /* fneg */
146 {"D", "D"}, /* dneg */
147 {"II", "I"}, /* ishl */
148 {"LI", "L"}, /* lshl */
149 {"II", "I"}, /* ishr */
150 {"LI", "L"}, /* lshr */
151 {"II", "I"}, /* iushr */
152 {"LI", "L"}, /* lushr */
153 {"II", "I"}, /* iand */
154 {"LL", "L"}, /* land */
155 {"II", "I"}, /* ior */
156 {"LL", "L"}, /* lor */
157 {"II", "I"}, /* ixor */
158 {"LL", "L"}, /* lxor */
159 {"", ""}, /* iinc */
160 {"I", "L"}, /* i2l */
161 {"I", "F"}, /* i2f */
162 {"I", "D"}, /* i2d */
163 {"L", "I"}, /* l2i */
164 {"L", "F"}, /* l2f */
165 {"L", "D"}, /* l2d */
166 {"F", "I"}, /* f2i */
167 {"F", "L"}, /* f2l */
168 {"F", "D"}, /* f2d */
169 {"D", "I"}, /* d2i */
170 {"D", "L"}, /* d2l */
171 {"D", "F"}, /* d2f */
172 {"I", "I"}, /* i2b */
173 {"I", "I"}, /* i2c */
174 {"I", "I"}, /* i2s */
175 {"LL", "I"}, /* lcmp */
176 {"FF", "I"}, /* fcmpl */
177 {"FF", "I"}, /* fcmpg */
178 {"DD", "I"}, /* dcmpl */
179 {"DD", "I"}, /* dcmpg */
180 {"I", ""}, /* ifeq */
181 {"I", ""}, /* ifne */
182 {"I", ""}, /* iflt */
183 {"I", ""}, /* ifge */
184 {"I", ""}, /* ifgt */
185 {"I", ""}, /* ifle */
186 {"II", ""}, /* if_icmpeq */
187 {"II", ""}, /* if_icmpne */
188 {"II", ""}, /* if_icmplt */
189 {"II", ""}, /* if_icmpge */
190 {"II", ""}, /* if_icmpgt */
191 {"II", ""}, /* if_icmple */
192 {"AA", ""}, /* if_acmpeq */
193 {"AA", ""}, /* if_acmpne */
194 {"", ""}, /* goto */
195 {"", "R"}, /* jsr */
196 {"", ""}, /* ret */
197 {"I", ""}, /* tableswitch */
198 {"I", ""}, /* lookupswitch */
199 {"I", ""}, /* ireturn */
200 {"L", ""}, /* lreturn */
201 {"F", ""}, /* freturn */
202 {"D", ""}, /* dreturn */
203 {"A", ""}, /* areturn */
204 {"", ""}, /* return */
205 {"", "?"}, /* getstatic */
206 {"?", ""}, /* putstatic */
207 {"A", "?"}, /* getfield */
208 {"?", ""}, /* putfield */
209 {"?", "?"}, /* invokevirtual */
210 {"?", "?"}, /* invokespecial */
211 {"?", "?"}, /* invokestatic */
212 {"?", "?"}, /* invokeinterface */
213 {"?", "?"}, /* invokedynamic */
214 {"", "A"}, /* new */
215 {"I", "A"}, /* newarray */
216 {"I", "A"}, /* anewarray */
217 {"[?]", "I"}, /* arraylength */
218 {"O", ""}, /* athrow */
219 {"A", "A"}, /* checkcast */
220 {"A", "I"}, /* instanceof */
221 {"A", ""}, /* monitorenter */
222 {"A", ""}, /* monitorexit */
223 {"", ""}, /* wide */
224 {"?", "A"}, /* multianewarray */
225 {"A", ""}, /* ifnull */
226 {"A", ""}, /* ifnonnull */
227 {"", ""}, /* goto_w */
228 {"", "R"}, /* jsr_w */
229 {"", ""}, /* breakpoint */
230 {"", "?"}, /* ldc_quick */
231 {"", "?"}, /* ldc_w_quick */
232 {"", "?"}, /* ldc2_w_quick */
233 {"A", "?"}, /* getfield_quick */
234 {"?", ""}, /* putfield_quick */
235 {"A", "?"}, /* getfield2_quick */
236 {"?", ""}, /* putfield2_quick */
237 {"", "?"}, /* getstatic_quick */
238 {"?", ""}, /* putstatic_quick */
239 {"", "?"}, /* getstatic2_quick */
240 {"?", "_"}, /* putstatic2_quick */
241 {"?", "?"}, /* invokevirtual_quick */
242 {"?", "?"}, /* invokenonvirtual_quick */
243 {"?", "?"}, /* invokesuper_quick */
244 {"?", "?"}, /* invokestatic_quick */
245 {"?", "?"}, /* invokeinterface_quick */
246 {"?", "?"}, /* invokevirtualobject_quick */
247 {"?", "?"}, /* invokeignored_quick */
248 {"", "A"}, /* new_quick */
249 {"I", "A"}, /* anewarray_quick */
250 {"?", "A"}, /* multianewarray_quick */
251 {"A", "A"}, /* checkcast_quick */
252 {"A", "I"}, /* instanceof_quick */
253 {"?", "?"}, /* invokevirtual_quick_w */
254 {"A", "?"}, /* getfield_quick_w */
255 {"?", ""}, /* putfield_quick_w */
256 {"A", ""}, /* nonnull_quick */
257};
258