/* * ProGuard -- shrinking, optimization, obfuscation, and preverification * of Java bytecode. * * Copyright (c) 2002-2010 Eric Lafortune (eric@graphics.cornell.edu) * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the Free * Software Foundation; either version 2 of the License, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package proguard.classfile.instruction; /** * Representation of an instruction. * * @author Eric Lafortune */ public interface InstructionConstants { public static final byte OP_NOP = 0; public static final byte OP_ACONST_NULL = 1; public static final byte OP_ICONST_M1 = 2; public static final byte OP_ICONST_0 = 3; public static final byte OP_ICONST_1 = 4; public static final byte OP_ICONST_2 = 5; public static final byte OP_ICONST_3 = 6; public static final byte OP_ICONST_4 = 7; public static final byte OP_ICONST_5 = 8; public static final byte OP_LCONST_0 = 9; public static final byte OP_LCONST_1 = 10; public static final byte OP_FCONST_0 = 11; public static final byte OP_FCONST_1 = 12; public static final byte OP_FCONST_2 = 13; public static final byte OP_DCONST_0 = 14; public static final byte OP_DCONST_1 = 15; public static final byte OP_BIPUSH = 16; public static final byte OP_SIPUSH = 17; public static final byte OP_LDC = 18; public static final byte OP_LDC_W = 19; public static final byte OP_LDC2_W = 20; public static final byte OP_ILOAD = 21; public static final byte OP_LLOAD = 22; public static final byte OP_FLOAD = 23; public static final byte OP_DLOAD = 24; public static final byte OP_ALOAD = 25; public static final byte OP_ILOAD_0 = 26; public static final byte OP_ILOAD_1 = 27; public static final byte OP_ILOAD_2 = 28; public static final byte OP_ILOAD_3 = 29; public static final byte OP_LLOAD_0 = 30; public static final byte OP_LLOAD_1 = 31; public static final byte OP_LLOAD_2 = 32; public static final byte OP_LLOAD_3 = 33; public static final byte OP_FLOAD_0 = 34; public static final byte OP_FLOAD_1 = 35; public static final byte OP_FLOAD_2 = 36; public static final byte OP_FLOAD_3 = 37; public static final byte OP_DLOAD_0 = 38; public static final byte OP_DLOAD_1 = 39; public static final byte OP_DLOAD_2 = 40; public static final byte OP_DLOAD_3 = 41; public static final byte OP_ALOAD_0 = 42; public static final byte OP_ALOAD_1 = 43; public static final byte OP_ALOAD_2 = 44; public static final byte OP_ALOAD_3 = 45; public static final byte OP_IALOAD = 46; public static final byte OP_LALOAD = 47; public static final byte OP_FALOAD = 48; public static final byte OP_DALOAD = 49; public static final byte OP_AALOAD = 50; public static final byte OP_BALOAD = 51; public static final byte OP_CALOAD = 52; public static final byte OP_SALOAD = 53; public static final byte OP_ISTORE = 54; public static final byte OP_LSTORE = 55; public static final byte OP_FSTORE = 56; public static final byte OP_DSTORE = 57; public static final byte OP_ASTORE = 58; public static final byte OP_ISTORE_0 = 59; public static final byte OP_ISTORE_1 = 60; public static final byte OP_ISTORE_2 = 61; public static final byte OP_ISTORE_3 = 62; public static final byte OP_LSTORE_0 = 63; public static final byte OP_LSTORE_1 = 64; public static final byte OP_LSTORE_2 = 65; public static final byte OP_LSTORE_3 = 66; public static final byte OP_FSTORE_0 = 67; public static final byte OP_FSTORE_1 = 68; public static final byte OP_FSTORE_2 = 69; public static final byte OP_FSTORE_3 = 70; public static final byte OP_DSTORE_0 = 71; public static final byte OP_DSTORE_1 = 72; public static final byte OP_DSTORE_2 = 73; public static final byte OP_DSTORE_3 = 74; public static final byte OP_ASTORE_0 = 75; public static final byte OP_ASTORE_1 = 76; public static final byte OP_ASTORE_2 = 77; public static final byte OP_ASTORE_3 = 78; public static final byte OP_IASTORE = 79; public static final byte OP_LASTORE = 80; public static final byte OP_FASTORE = 81; public static final byte OP_DASTORE = 82; public static final byte OP_AASTORE = 83; public static final byte OP_BASTORE = 84; public static final byte OP_CASTORE = 85; public static final byte OP_SASTORE = 86; public static final byte OP_POP = 87; public static final byte OP_POP2 = 88; public static final byte OP_DUP = 89; public static final byte OP_DUP_X1 = 90; public static final byte OP_DUP_X2 = 91; public static final byte OP_DUP2 = 92; public static final byte OP_DUP2_X1 = 93; public static final byte OP_DUP2_X2 = 94; public static final byte OP_SWAP = 95; public static final byte OP_IADD = 96; public static final byte OP_LADD = 97; public static final byte OP_FADD = 98; public static final byte OP_DADD = 99; public static final byte OP_ISUB = 100; public static final byte OP_LSUB = 101; public static final byte OP_FSUB = 102; public static final byte OP_DSUB = 103; public static final byte OP_IMUL = 104; public static final byte OP_LMUL = 105; public static final byte OP_FMUL = 106; public static final byte OP_DMUL = 107; public static final byte OP_IDIV = 108; public static final byte OP_LDIV = 109; public static final byte OP_FDIV = 110; public static final byte OP_DDIV = 111; public static final byte OP_IREM = 112; public static final byte OP_LREM = 113; public static final byte OP_FREM = 114; public static final byte OP_DREM = 115; public static final byte OP_INEG = 116; public static final byte OP_LNEG = 117; public static final byte OP_FNEG = 118; public static final byte OP_DNEG = 119; public static final byte OP_ISHL = 120; public static final byte OP_LSHL = 121; public static final byte OP_ISHR = 122; public static final byte OP_LSHR = 123; public static final byte OP_IUSHR = 124; public static final byte OP_LUSHR = 125; public static final byte OP_IAND = 126; public static final byte OP_LAND = 127; public static final byte OP_IOR = -128; public static final byte OP_LOR = -127; public static final byte OP_IXOR = -126; public static final byte OP_LXOR = -125; public static final byte OP_IINC = -124; public static final byte OP_I2L = -123; public static final byte OP_I2F = -122; public static final byte OP_I2D = -121; public static final byte OP_L2I = -120; public static final byte OP_L2F = -119; public static final byte OP_L2D = -118; public static final byte OP_F2I = -117; public static final byte OP_F2L = -116; public static final byte OP_F2D = -115; public static final byte OP_D2I = -114; public static final byte OP_D2L = -113; public static final byte OP_D2F = -112; public static final byte OP_I2B = -111; public static final byte OP_I2C = -110; public static final byte OP_I2S = -109; public static final byte OP_LCMP = -108; public static final byte OP_FCMPL = -107; public static final byte OP_FCMPG = -106; public static final byte OP_DCMPL = -105; public static final byte OP_DCMPG = -104; public static final byte OP_IFEQ = -103; public static final byte OP_IFNE = -102; public static final byte OP_IFLT = -101; public static final byte OP_IFGE = -100; public static final byte OP_IFGT = -99; public static final byte OP_IFLE = -98; public static final byte OP_IFICMPEQ = -97; public static final byte OP_IFICMPNE = -96; public static final byte OP_IFICMPLT = -95; public static final byte OP_IFICMPGE = -94; public static final byte OP_IFICMPGT = -93; public static final byte OP_IFICMPLE = -92; public static final byte OP_IFACMPEQ = -91; public static final byte OP_IFACMPNE = -90; public static final byte OP_GOTO = -89; public static final byte OP_JSR = -88; public static final byte OP_RET = -87; public static final byte OP_TABLESWITCH = -86; public static final byte OP_LOOKUPSWITCH = -85; public static final byte OP_IRETURN = -84; public static final byte OP_LRETURN = -83; public static final byte OP_FRETURN = -82; public static final byte OP_DRETURN = -81; public static final byte OP_ARETURN = -80; public static final byte OP_RETURN = -79; public static final byte OP_GETSTATIC = -78; public static final byte OP_PUTSTATIC = -77; public static final byte OP_GETFIELD = -76; public static final byte OP_PUTFIELD = -75; public static final byte OP_INVOKEVIRTUAL = -74; public static final byte OP_INVOKESPECIAL = -73; public static final byte OP_INVOKESTATIC = -72; public static final byte OP_INVOKEINTERFACE = -71; // public static final byte OP_UNUSED = -70; public static final byte OP_NEW = -69; public static final byte OP_NEWARRAY = -68; public static final byte OP_ANEWARRAY = -67; public static final byte OP_ARRAYLENGTH = -66; public static final byte OP_ATHROW = -65; public static final byte OP_CHECKCAST = -64; public static final byte OP_INSTANCEOF = -63; public static final byte OP_MONITORENTER = -62; public static final byte OP_MONITOREXIT = -61; public static final byte OP_WIDE = -60; public static final byte OP_MULTIANEWARRAY = -59; public static final byte OP_IFNULL = -58; public static final byte OP_IFNONNULL = -57; public static final byte OP_GOTO_W = -56; public static final byte OP_JSR_W = -55; public static final String[] NAMES = { "nop", "aconst_null", "iconst_m1", "iconst_0", "iconst_1", "iconst_2", "iconst_3", "iconst_4", "iconst_5", "lconst_0", "lconst_1", "fconst_0", "fconst_1", "fconst_2", "dconst_0", "dconst_1", "bipush", "sipush", "ldc", "ldc_w", "ldc2_w", "iload", "lload", "fload", "dload", "aload", "iload_0", "iload_1", "iload_2", "iload_3", "lload_0", "lload_1", "lload_2", "lload_3", "fload_0", "fload_1", "fload_2", "fload_3", "dload_0", "dload_1", "dload_2", "dload_3", "aload_0", "aload_1", "aload_2", "aload_3", "iaload", "laload", "faload", "daload", "aaload", "baload", "caload", "saload", "istore", "lstore", "fstore", "dstore", "astore", "istore_0", "istore_1", "istore_2", "istore_3", "lstore_0", "lstore_1", "lstore_2", "lstore_3", "fstore_0", "fstore_1", "fstore_2", "fstore_3", "dstore_0", "dstore_1", "dstore_2", "dstore_3", "astore_0", "astore_1", "astore_2", "astore_3", "iastore", "lastore", "fastore", "dastore", "aastore", "bastore", "castore", "sastore", "pop", "pop2", "dup", "dup_x1", "dup_x2", "dup2", "dup2_x1", "dup2_x2", "swap", "iadd", "ladd", "fadd", "dadd", "isub", "lsub", "fsub", "dsub", "imul", "lmul", "fmul", "dmul", "idiv", "ldiv", "fdiv", "ddiv", "irem", "lrem", "frem", "drem", "ineg", "lneg", "fneg", "dneg", "ishl", "lshl", "ishr", "lshr", "iushr", "lushr", "iand", "land", "ior", "lor", "ixor", "lxor", "iinc", "i2l", "i2f", "i2d", "l2i", "l2f", "l2d", "f2i", "f2l", "f2d", "d2i", "d2l", "d2f", "i2b", "i2c", "i2s", "lcmp", "fcmpl", "fcmpg", "dcmpl", "dcmpg", "ifeq", "ifne", "iflt", "ifge", "ifgt", "ifle", "ificmpeq", "ificmpne", "ificmplt", "ificmpge", "ificmpgt", "ificmple", "ifacmpeq", "ifacmpne", "goto", "jsr", "ret", "tableswitch", "lookupswitch", "ireturn", "lreturn", "freturn", "dreturn", "areturn", "return", "getstatic", "putstatic", "getfield", "putfield", "invokevirtual", "invokespecial", "invokestatic", "invokeinterface", "unused", "new", "newarray", "anewarray", "arraylength", "athrow", "checkcast", "instanceof", "monitorenter", "monitorexit", "wide", "multianewarray", "ifnull", "ifnonnull", "goto_w", "jsr_w", }; public static final byte ARRAY_T_BOOLEAN = 4; public static final byte ARRAY_T_CHAR = 5; public static final byte ARRAY_T_FLOAT = 6; public static final byte ARRAY_T_DOUBLE = 7; public static final byte ARRAY_T_BYTE = 8; public static final byte ARRAY_T_SHORT = 9; public static final byte ARRAY_T_INT = 10; public static final byte ARRAY_T_LONG = 11; }