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