1 /*
2  * Javassist, a Java-bytecode translator toolkit.
3  * Copyright (C) 1999-2007 Shigeru Chiba. All Rights Reserved.
4  *
5  * The contents of this file are subject to the Mozilla Public License Version
6  * 1.1 (the "License"); you may not use this file except in compliance with
7  * the License.  Alternatively, the contents of this file may be used under
8  * the terms of the GNU Lesser General Public License Version 2.1 or later.
9  *
10  * Software distributed under the License is distributed on an "AS IS" basis,
11  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12  * for the specific language governing rights and limitations under the
13  * License.
14  */
15 
16 package javassist.bytecode;
17 
18 /**
19  * JVM Instruction Names.
20  *
21  * <p>This interface has been separated from javassist.bytecode.Opcode
22  * because typical bytecode translators do not use mnemonics.  If this
23  * interface were merged with Opcode, extra memory would be unnecessary
24  * consumed.
25  *
26  * @see Opcode
27  */
28 public interface Mnemonic {
29 
30     /**
31      * The instruction names (mnemonics) sorted by the opcode.
32      * The length of this array is 202 (jsr_w=201).
33      *
34      * <p>The value at index 186 is null since no instruction is
35      * assigned to 186.
36      */
37     String[] OPCODE = {
38         "nop",  /* 0*/
39         "aconst_null",  /* 1*/
40         "iconst_m1",    /* 2*/
41         "iconst_0",     /* 3*/
42         "iconst_1",     /* 4*/
43         "iconst_2",     /* 5*/
44         "iconst_3",     /* 6*/
45         "iconst_4",     /* 7*/
46         "iconst_5",     /* 8*/
47         "lconst_0",     /* 9*/
48         "lconst_1",     /* 10*/
49         "fconst_0",     /* 11*/
50         "fconst_1",     /* 12*/
51         "fconst_2",     /* 13*/
52         "dconst_0",     /* 14*/
53         "dconst_1",     /* 15*/
54         "bipush",       /* 16*/
55         "sipush",       /* 17*/
56         "ldc",  /* 18*/
57         "ldc_w",        /* 19*/
58         "ldc2_w",       /* 20*/
59         "iload",        /* 21*/
60         "lload",        /* 22*/
61         "fload",        /* 23*/
62         "dload",        /* 24*/
63         "aload",        /* 25*/
64         "iload_0",      /* 26*/
65         "iload_1",      /* 27*/
66         "iload_2",      /* 28*/
67         "iload_3",      /* 29*/
68         "lload_0",      /* 30*/
69         "lload_1",      /* 31*/
70         "lload_2",      /* 32*/
71         "lload_3",      /* 33*/
72         "fload_0",      /* 34*/
73         "fload_1",      /* 35*/
74         "fload_2",      /* 36*/
75         "fload_3",      /* 37*/
76         "dload_0",      /* 38*/
77         "dload_1",      /* 39*/
78         "dload_2",      /* 40*/
79         "dload_3",      /* 41*/
80         "aload_0",      /* 42*/
81         "aload_1",      /* 43*/
82         "aload_2",      /* 44*/
83         "aload_3",      /* 45*/
84         "iaload",       /* 46*/
85         "laload",       /* 47*/
86         "faload",       /* 48*/
87         "daload",       /* 49*/
88         "aaload",       /* 50*/
89         "baload",       /* 51*/
90         "caload",       /* 52*/
91         "saload",       /* 53*/
92         "istore",       /* 54*/
93         "lstore",       /* 55*/
94         "fstore",       /* 56*/
95         "dstore",       /* 57*/
96         "astore",       /* 58*/
97         "istore_0",     /* 59*/
98         "istore_1",     /* 60*/
99         "istore_2",     /* 61*/
100         "istore_3",     /* 62*/
101         "lstore_0",     /* 63*/
102         "lstore_1",     /* 64*/
103         "lstore_2",     /* 65*/
104         "lstore_3",     /* 66*/
105         "fstore_0",     /* 67*/
106         "fstore_1",     /* 68*/
107         "fstore_2",     /* 69*/
108         "fstore_3",     /* 70*/
109         "dstore_0",     /* 71*/
110         "dstore_1",     /* 72*/
111         "dstore_2",     /* 73*/
112         "dstore_3",     /* 74*/
113         "astore_0",     /* 75*/
114         "astore_1",     /* 76*/
115         "astore_2",     /* 77*/
116         "astore_3",     /* 78*/
117         "iastore",      /* 79*/
118         "lastore",      /* 80*/
119         "fastore",      /* 81*/
120         "dastore",      /* 82*/
121         "aastore",      /* 83*/
122         "bastore",      /* 84*/
123         "castore",      /* 85*/
124         "sastore",      /* 86*/
125         "pop",  /* 87*/
126         "pop2", /* 88*/
127         "dup",  /* 89*/
128         "dup_x1",       /* 90*/
129         "dup_x2",       /* 91*/
130         "dup2", /* 92*/
131         "dup2_x1",      /* 93*/
132         "dup2_x2",      /* 94*/
133         "swap", /* 95*/
134         "iadd", /* 96*/
135         "ladd", /* 97*/
136         "fadd", /* 98*/
137         "dadd", /* 99*/
138         "isub", /* 100*/
139         "lsub", /* 101*/
140         "fsub", /* 102*/
141         "dsub", /* 103*/
142         "imul", /* 104*/
143         "lmul", /* 105*/
144         "fmul", /* 106*/
145         "dmul", /* 107*/
146         "idiv", /* 108*/
147         "ldiv", /* 109*/
148         "fdiv", /* 110*/
149         "ddiv", /* 111*/
150         "irem", /* 112*/
151         "lrem", /* 113*/
152         "frem", /* 114*/
153         "drem", /* 115*/
154         "ineg", /* 116*/
155         "lneg", /* 117*/
156         "fneg", /* 118*/
157         "dneg", /* 119*/
158         "ishl", /* 120*/
159         "lshl", /* 121*/
160         "ishr", /* 122*/
161         "lshr", /* 123*/
162         "iushr",        /* 124*/
163         "lushr",        /* 125*/
164         "iand", /* 126*/
165         "land", /* 127*/
166         "ior",  /* 128*/
167         "lor",  /* 129*/
168         "ixor", /* 130*/
169         "lxor", /* 131*/
170         "iinc", /* 132*/
171         "i2l",  /* 133*/
172         "i2f",  /* 134*/
173         "i2d",  /* 135*/
174         "l2i",  /* 136*/
175         "l2f",  /* 137*/
176         "l2d",  /* 138*/
177         "f2i",  /* 139*/
178         "f2l",  /* 140*/
179         "f2d",  /* 141*/
180         "d2i",  /* 142*/
181         "d2l",  /* 143*/
182         "d2f",  /* 144*/
183         "i2b",  /* 145*/
184         "i2c",  /* 146*/
185         "i2s",  /* 147*/
186         "lcmp", /* 148*/
187         "fcmpl",        /* 149*/
188         "fcmpg",        /* 150*/
189         "dcmpl",        /* 151*/
190         "dcmpg",        /* 152*/
191         "ifeq", /* 153*/
192         "ifne", /* 154*/
193         "iflt", /* 155*/
194         "ifge", /* 156*/
195         "ifgt", /* 157*/
196         "ifle", /* 158*/
197         "if_icmpeq",    /* 159*/
198         "if_icmpne",    /* 160*/
199         "if_icmplt",    /* 161*/
200         "if_icmpge",    /* 162*/
201         "if_icmpgt",    /* 163*/
202         "if_icmple",    /* 164*/
203         "if_acmpeq",    /* 165*/
204         "if_acmpne",    /* 166*/
205         "goto", /* 167*/
206         "jsr",  /* 168*/
207         "ret",  /* 169*/
208         "tableswitch",  /* 170*/
209         "lookupswitch", /* 171*/
210         "ireturn",      /* 172*/
211         "lreturn",      /* 173*/
212         "freturn",      /* 174*/
213         "dreturn",      /* 175*/
214         "areturn",      /* 176*/
215         "return",       /* 177*/
216         "getstatic",    /* 178*/
217         "putstatic",    /* 179*/
218         "getfield",     /* 180*/
219         "putfield",     /* 181*/
220         "invokevirtual",        /* 182*/
221         "invokespecial",        /* 183*/
222         "invokestatic", /* 184*/
223         "invokeinterface",      /* 185*/
224         null,
225         "new",  /* 187*/
226         "newarray",     /* 188*/
227         "anewarray",    /* 189*/
228         "arraylength",  /* 190*/
229         "athrow",       /* 191*/
230         "checkcast",    /* 192*/
231         "instanceof",   /* 193*/
232         "monitorenter", /* 194*/
233         "monitorexit",  /* 195*/
234         "wide", /* 196*/
235         "multianewarray",       /* 197*/
236         "ifnull",       /* 198*/
237         "ifnonnull",    /* 199*/
238         "goto_w",       /* 200*/
239         "jsr_w"         /* 201*/
240     };
241 }
242