1 /* -*- Mode: java; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2  *
3  * This Source Code Form is subject to the terms of the Mozilla Public
4  * License, v. 2.0. If a copy of the MPL was not distributed with this
5  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 
7 package org.mozilla.classfile;
8 
9 /**
10  * This class provides opcode values expected by the JVM in Java class files.
11  *
12  * It also provides tables for internal use by the ClassFileWriter.
13  *
14  * @author Roger Lawrence
15  */
16 public class ByteCode {
17 
18     /**
19      * The byte opcodes defined by the Java Virtual Machine.
20      */
21     public static final int
22         NOP = 0x00,
23         ACONST_NULL = 0x01,
24         ICONST_M1 = 0x02,
25         ICONST_0 = 0x03,
26         ICONST_1 = 0x04,
27         ICONST_2 = 0x05,
28         ICONST_3 = 0x06,
29         ICONST_4 = 0x07,
30         ICONST_5 = 0x08,
31         LCONST_0 = 0x09,
32         LCONST_1 = 0x0A,
33         FCONST_0 = 0x0B,
34         FCONST_1 = 0x0C,
35         FCONST_2 = 0x0D,
36         DCONST_0 = 0x0E,
37         DCONST_1 = 0x0F,
38         BIPUSH = 0x10,
39         SIPUSH = 0x11,
40         LDC = 0x12,
41         LDC_W = 0x13,
42         LDC2_W = 0x14,
43         ILOAD = 0x15,
44         LLOAD = 0x16,
45         FLOAD = 0x17,
46         DLOAD = 0x18,
47         ALOAD = 0x19,
48         ILOAD_0 = 0x1A,
49         ILOAD_1 = 0x1B,
50         ILOAD_2 = 0x1C,
51         ILOAD_3 = 0x1D,
52         LLOAD_0 = 0x1E,
53         LLOAD_1 = 0x1F,
54         LLOAD_2 = 0x20,
55         LLOAD_3 = 0x21,
56         FLOAD_0 = 0x22,
57         FLOAD_1 = 0x23,
58         FLOAD_2 = 0x24,
59         FLOAD_3 = 0x25,
60         DLOAD_0 = 0x26,
61         DLOAD_1 = 0x27,
62         DLOAD_2 = 0x28,
63         DLOAD_3 = 0x29,
64         ALOAD_0 = 0x2A,
65         ALOAD_1 = 0x2B,
66         ALOAD_2 = 0x2C,
67         ALOAD_3 = 0x2D,
68         IALOAD = 0x2E,
69         LALOAD = 0x2F,
70         FALOAD = 0x30,
71         DALOAD = 0x31,
72         AALOAD = 0x32,
73         BALOAD = 0x33,
74         CALOAD = 0x34,
75         SALOAD = 0x35,
76         ISTORE = 0x36,
77         LSTORE = 0x37,
78         FSTORE = 0x38,
79         DSTORE = 0x39,
80         ASTORE = 0x3A,
81         ISTORE_0 = 0x3B,
82         ISTORE_1 = 0x3C,
83         ISTORE_2 = 0x3D,
84         ISTORE_3 = 0x3E,
85         LSTORE_0 = 0x3F,
86         LSTORE_1 = 0x40,
87         LSTORE_2 = 0x41,
88         LSTORE_3 = 0x42,
89         FSTORE_0 = 0x43,
90         FSTORE_1 = 0x44,
91         FSTORE_2 = 0x45,
92         FSTORE_3 = 0x46,
93         DSTORE_0 = 0x47,
94         DSTORE_1 = 0x48,
95         DSTORE_2 = 0x49,
96         DSTORE_3 = 0x4A,
97         ASTORE_0 = 0x4B,
98         ASTORE_1 = 0x4C,
99         ASTORE_2 = 0x4D,
100         ASTORE_3 = 0x4E,
101         IASTORE = 0x4F,
102         LASTORE = 0x50,
103         FASTORE = 0x51,
104         DASTORE = 0x52,
105         AASTORE = 0x53,
106         BASTORE = 0x54,
107         CASTORE = 0x55,
108         SASTORE = 0x56,
109         POP = 0x57,
110         POP2 = 0x58,
111         DUP = 0x59,
112         DUP_X1 = 0x5A,
113         DUP_X2 = 0x5B,
114         DUP2 = 0x5C,
115         DUP2_X1 = 0x5D,
116         DUP2_X2 = 0x5E,
117         SWAP = 0x5F,
118         IADD = 0x60,
119         LADD = 0x61,
120         FADD = 0x62,
121         DADD = 0x63,
122         ISUB = 0x64,
123         LSUB = 0x65,
124         FSUB = 0x66,
125         DSUB = 0x67,
126         IMUL = 0x68,
127         LMUL = 0x69,
128         FMUL = 0x6A,
129         DMUL = 0x6B,
130         IDIV = 0x6C,
131         LDIV = 0x6D,
132         FDIV = 0x6E,
133         DDIV = 0x6F,
134         IREM = 0x70,
135         LREM = 0x71,
136         FREM = 0x72,
137         DREM = 0x73,
138         INEG = 0x74,
139         LNEG = 0x75,
140         FNEG = 0x76,
141         DNEG = 0x77,
142         ISHL = 0x78,
143         LSHL = 0x79,
144         ISHR = 0x7A,
145         LSHR = 0x7B,
146         IUSHR = 0x7C,
147         LUSHR = 0x7D,
148         IAND = 0x7E,
149         LAND = 0x7F,
150         IOR = 0x80,
151         LOR = 0x81,
152         IXOR = 0x82,
153         LXOR = 0x83,
154         IINC = 0x84,
155         I2L = 0x85,
156         I2F = 0x86,
157         I2D = 0x87,
158         L2I = 0x88,
159         L2F = 0x89,
160         L2D = 0x8A,
161         F2I = 0x8B,
162         F2L = 0x8C,
163         F2D = 0x8D,
164         D2I = 0x8E,
165         D2L = 0x8F,
166         D2F = 0x90,
167         I2B = 0x91,
168         I2C = 0x92,
169         I2S = 0x93,
170         LCMP = 0x94,
171         FCMPL = 0x95,
172         FCMPG = 0x96,
173         DCMPL = 0x97,
174         DCMPG = 0x98,
175         IFEQ = 0x99,
176         IFNE = 0x9A,
177         IFLT = 0x9B,
178         IFGE = 0x9C,
179         IFGT = 0x9D,
180         IFLE = 0x9E,
181         IF_ICMPEQ = 0x9F,
182         IF_ICMPNE = 0xA0,
183         IF_ICMPLT = 0xA1,
184         IF_ICMPGE = 0xA2,
185         IF_ICMPGT = 0xA3,
186         IF_ICMPLE = 0xA4,
187         IF_ACMPEQ = 0xA5,
188         IF_ACMPNE = 0xA6,
189         GOTO = 0xA7,
190         JSR = 0xA8,
191         RET = 0xA9,
192         TABLESWITCH = 0xAA,
193         LOOKUPSWITCH = 0xAB,
194         IRETURN = 0xAC,
195         LRETURN = 0xAD,
196         FRETURN = 0xAE,
197         DRETURN = 0xAF,
198         ARETURN = 0xB0,
199         RETURN = 0xB1,
200         GETSTATIC = 0xB2,
201         PUTSTATIC = 0xB3,
202         GETFIELD = 0xB4,
203         PUTFIELD = 0xB5,
204         INVOKEVIRTUAL = 0xB6,
205         INVOKESPECIAL = 0xB7,
206         INVOKESTATIC = 0xB8,
207         INVOKEINTERFACE = 0xB9,
208         NEW = 0xBB,
209         NEWARRAY = 0xBC,
210         ANEWARRAY = 0xBD,
211         ARRAYLENGTH = 0xBE,
212         ATHROW = 0xBF,
213         CHECKCAST = 0xC0,
214         INSTANCEOF = 0xC1,
215         MONITORENTER = 0xC2,
216         MONITOREXIT = 0xC3,
217         WIDE = 0xC4,
218         MULTIANEWARRAY = 0xC5,
219         IFNULL = 0xC6,
220         IFNONNULL = 0xC7,
221         GOTO_W = 0xC8,
222         JSR_W = 0xC9,
223         BREAKPOINT = 0xCA,
224 
225         IMPDEP1 = 0xFE,
226         IMPDEP2 = 0xFF;
227 
228         /**
229          * Types for the NEWARRAY opcode.
230          */
231         public static final byte
232             T_BOOLEAN = 4,
233             T_CHAR = 5,
234             T_FLOAT = 6,
235             T_DOUBLE = 7,
236             T_BYTE = 8,
237             T_SHORT = 9,
238             T_INT = 10,
239             T_LONG = 11;
240 
241 
242 }
243