/******************************************************************************* * Copyright (c) 2002,2006 IBM Corporation. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package com.ibm.wala.shrikeBT; /** * Information about java byte codes that appear in the "code" attribute of a .class file. * * @author Bowen Alpern * @author Derek Lieber * @author Stephen Fink */ public interface BytecodeConstants { // The following mnemonics are defined in Chapter 10 of The Java Virtual Machine Specification. // public static final int JBC_nop = 0; public static final int JBC_aconst_null = 1; public static final int JBC_iconst_m1 = 2; public static final int JBC_iconst_0 = 3; public static final int JBC_iconst_1 = 4; public static final int JBC_iconst_2 = 5; public static final int JBC_iconst_3 = 6; public static final int JBC_iconst_4 = 7; public static final int JBC_iconst_5 = 8; public static final int JBC_lconst_0 = 9; public static final int JBC_lconst_1 = 10; public static final int JBC_fconst_0 = 11; public static final int JBC_fconst_1 = 12; public static final int JBC_fconst_2 = 13; public static final int JBC_dconst_0 = 14; public static final int JBC_dconst_1 = 15; public static final int JBC_bipush = 16; public static final int JBC_sipush = 17; public static final int JBC_ldc = 18; public static final int JBC_ldc_w = 19; public static final int JBC_ldc2_w = 20; public static final int JBC_iload = 21; public static final int JBC_lload = 22; public static final int JBC_fload = 23; public static final int JBC_dload = 24; public static final int JBC_aload = 25; public static final int JBC_iload_0 = 26; public static final int JBC_iload_1 = 27; public static final int JBC_iload_2 = 28; public static final int JBC_iload_3 = 29; public static final int JBC_lload_0 = 30; public static final int JBC_lload_1 = 31; public static final int JBC_lload_2 = 32; public static final int JBC_lload_3 = 33; public static final int JBC_fload_0 = 34; public static final int JBC_fload_1 = 35; public static final int JBC_fload_2 = 36; public static final int JBC_fload_3 = 37; public static final int JBC_dload_0 = 38; public static final int JBC_dload_1 = 39; public static final int JBC_dload_2 = 40; public static final int JBC_dload_3 = 41; public static final int JBC_aload_0 = 42; public static final int JBC_aload_1 = 43; public static final int JBC_aload_2 = 44; public static final int JBC_aload_3 = 45; public static final int JBC_iaload = 46; public static final int JBC_laload = 47; public static final int JBC_faload = 48; public static final int JBC_daload = 49; public static final int JBC_aaload = 50; public static final int JBC_baload = 51; public static final int JBC_caload = 52; public static final int JBC_saload = 53; public static final int JBC_istore = 54; public static final int JBC_lstore = 55; public static final int JBC_fstore = 56; public static final int JBC_dstore = 57; public static final int JBC_astore = 58; public static final int JBC_istore_0 = 59; public static final int JBC_istore_1 = 60; public static final int JBC_istore_2 = 61; public static final int JBC_istore_3 = 62; public static final int JBC_lstore_0 = 63; public static final int JBC_lstore_1 = 64; public static final int JBC_lstore_2 = 65; public static final int JBC_lstore_3 = 66; public static final int JBC_fstore_0 = 67; public static final int JBC_fstore_1 = 68; public static final int JBC_fstore_2 = 69; public static final int JBC_fstore_3 = 70; public static final int JBC_dstore_0 = 71; public static final int JBC_dstore_1 = 72; public static final int JBC_dstore_2 = 73; public static final int JBC_dstore_3 = 74; public static final int JBC_astore_0 = 75; public static final int JBC_astore_1 = 76; public static final int JBC_astore_2 = 77; public static final int JBC_astore_3 = 78; public static final int JBC_iastore = 79; public static final int JBC_lastore = 80; public static final int JBC_fastore = 81; public static final int JBC_dastore = 82; public static final int JBC_aastore = 83; public static final int JBC_bastore = 84; public static final int JBC_castore = 85; public static final int JBC_sastore = 86; public static final int JBC_pop = 87; public static final int JBC_pop2 = 88; public static final int JBC_dup = 89; public static final int JBC_dup_x1 = 90; public static final int JBC_dup_x2 = 91; public static final int JBC_dup2 = 92; public static final int JBC_dup2_x1 = 93; public static final int JBC_dup2_x2 = 94; public static final int JBC_swap = 95; public static final int JBC_iadd = 96; public static final int JBC_ladd = 97; public static final int JBC_fadd = 98; public static final int JBC_dadd = 99; public static final int JBC_isub = 100; public static final int JBC_lsub = 101; public static final int JBC_fsub = 102; public static final int JBC_dsub = 103; public static final int JBC_imul = 104; public static final int JBC_lmul = 105; public static final int JBC_fmul = 106; public static final int JBC_dmul = 107; public static final int JBC_idiv = 108; public static final int JBC_ldiv = 109; public static final int JBC_fdiv = 110; public static final int JBC_ddiv = 111; public static final int JBC_irem = 112; public static final int JBC_lrem = 113; public static final int JBC_frem = 114; public static final int JBC_drem = 115; public static final int JBC_ineg = 116; public static final int JBC_lneg = 117; public static final int JBC_fneg = 118; public static final int JBC_dneg = 119; public static final int JBC_ishl = 120; public static final int JBC_lshl = 121; public static final int JBC_ishr = 122; public static final int JBC_lshr = 123; public static final int JBC_iushr = 124; public static final int JBC_lushr = 125; public static final int JBC_iand = 126; public static final int JBC_land = 127; public static final int JBC_ior = 128; public static final int JBC_lor = 129; public static final int JBC_ixor = 130; public static final int JBC_lxor = 131; public static final int JBC_iinc = 132; public static final int JBC_i2l = 133; public static final int JBC_i2f = 134; public static final int JBC_i2d = 135; public static final int JBC_l2i = 136; public static final int JBC_l2f = 137; public static final int JBC_l2d = 138; public static final int JBC_f2i = 139; public static final int JBC_f2l = 140; public static final int JBC_f2d = 141; public static final int JBC_d2i = 142; public static final int JBC_d2l = 143; public static final int JBC_d2f = 144; public static final int JBC_int2byte = 145; public static final int JBC_int2char = 146; public static final int JBC_int2short = 147; public static final int JBC_lcmp = 148; public static final int JBC_fcmpl = 149; public static final int JBC_fcmpg = 150; public static final int JBC_dcmpl = 151; public static final int JBC_dcmpg = 152; public static final int JBC_ifeq = 153; public static final int JBC_ifne = 154; public static final int JBC_iflt = 155; public static final int JBC_ifge = 156; public static final int JBC_ifgt = 157; public static final int JBC_ifle = 158; public static final int JBC_if_icmpeq = 159; public static final int JBC_if_icmpne = 160; public static final int JBC_if_icmplt = 161; public static final int JBC_if_icmpge = 162; public static final int JBC_if_icmpgt = 163; public static final int JBC_if_icmple = 164; public static final int JBC_if_acmpeq = 165; public static final int JBC_if_acmpne = 166; public static final int JBC_goto = 167; public static final int JBC_jsr = 168; public static final int JBC_ret = 169; public static final int JBC_tableswitch = 170; public static final int JBC_lookupswitch = 171; public static final int JBC_ireturn = 172; public static final int JBC_lreturn = 173; public static final int JBC_freturn = 174; public static final int JBC_dreturn = 175; public static final int JBC_areturn = 176; public static final int JBC_return = 177; public static final int JBC_getstatic = 178; public static final int JBC_putstatic = 179; public static final int JBC_getfield = 180; public static final int JBC_putfield = 181; public static final int JBC_invokevirtual = 182; public static final int JBC_invokespecial = 183; public static final int JBC_invokestatic = 184; public static final int JBC_invokeinterface = 185; public static final int JBC_xxxunusedxxx = 186; public static final int JBC_new = 187; public static final int JBC_newarray = 188; public static final int JBC_anewarray = 189; public static final int JBC_arraylength = 190; public static final int JBC_athrow = 191; public static final int JBC_checkcast = 192; public static final int JBC_instanceof = 193; public static final int JBC_monitorenter = 194; public static final int JBC_monitorexit = 195; public static final int JBC_wide = 196; public static final int JBC_multianewarray = 197; public static final int JBC_ifnull = 198; public static final int JBC_ifnonnull = 199; public static final int JBC_goto_w = 200; public static final int JBC_jsr_w = 201; public static final int JBC_impdep1 = 254; public static final int JBC_impdep2 = 255; // Length of each instruction introduced by the above bytecodes. // -1 indicates a variable length instruction. // -2 indicates an unused instruction. // public static final byte JBC_length[] = { 1, // nop 1, // aconst_null 1, // iconst_m1 1, // iconst_0 1, // iconst_1 1, // iconst_2 1, // iconst_3 1, // iconst_4 1, // iconst_5 1, // lconst_0 1, // lconst_1 1, // fconst_0 1, // fconst_1 1, // fconst_2 1, // dconst_0 1, // dconst_1 2, // bipush 3, // sipush 2, // ldc 3, // ldc_w 3, // ldc2_w 2, // iload 2, // lload 2, // fload 2, // dload 2, // aload 1, // iload_0 1, // iload_1 1, // iload_2 1, // iload_3 1, // lload_0 1, // lload_1 1, // lload_2 1, // lload_3 1, // fload_0 1, // fload_1 1, // fload_2 1, // fload_3 1, // dload_0 1, // dload_1 1, // dload_2 1, // dload_3 1, // aload_0 1, // aload_1 1, // aload_2 1, // aload_3 1, // iaload 1, // laload 1, // faload 1, // daload 1, // aaload 1, // baload 1, // caload 1, // saload 2, // istore 2, // lstore 2, // fstore 2, // dstore 2, // astore 1, // istore_0 1, // istore_1 1, // istore_2 1, // istore_3 1, // lstore_0 1, // lstore_1 1, // lstore_2 1, // lstore_3 1, // fstore_0 1, // fstore_1 1, // fstore_2 1, // fstore_3 1, // dstore_0 1, // dstore_1 1, // dstore_2 1, // dstore_3 1, // astore_0 1, // astore_1 1, // astore_2 1, // astore_3 1, // iastore 1, // lastore 1, // fastore 1, // dastore 1, // aastore 1, // bastore 1, // castore 1, // sastore 1, // pop 1, // pop2 1, // dup 1, // dup_x1 1, // dup_x2 1, // dup2 1, // dup2_x1 1, // dup2_x2 1, // swap 1, // iadd 1, // ladd 1, // fadd 1, // dadd 1, // isub 1, // lsub 1, // fsub 1, // dsub 1, // imul 1, // lmul 1, // fmul 1, // dmul 1, // idiv 1, // ldiv 1, // fdiv 1, // ddiv 1, // irem 1, // lrem 1, // frem 1, // drem 1, // ineg 1, // lneg 1, // fneg 1, // dneg 1, // ishl 1, // lshl 1, // ishr 1, // lshr 1, // iushr 1, // lushr 1, // iand 1, // land 1, // ior 1, // lor 1, // ixor 1, // lxor 3, // iinc 1, // i2l 1, // i2f 1, // i2d 1, // l2i 1, // l2f 1, // l2d 1, // f2i 1, // f2l 1, // f2d 1, // d2i 1, // d2l 1, // d2f 1, // int2byte 1, // int2char 1, // int2short 1, // lcmp 1, // fcmpl 1, // fcmpg 1, // dcmpl 1, // dcmpg 3, // ifeq 3, // ifne 3, // iflt 3, // ifge 3, // ifgt 3, // ifle 3, // if_icmpeq 3, // if_icmpne 3, // if_icmplt 3, // if_icmpge 3, // if_icmpgt 3, // if_icmple 3, // if_acmpeq 3, // if_acmpne 3, // goto 3, // jsr 2, // ret -1, // tableswitch -1, // lookupswitch 1, // ireturn 1, // lreturn 1, // freturn 1, // dreturn 1, // areturn 1, // return 3, // getstatic 3, // putstatic 3, // getfield 3, // putfield 3, // invokevirtual 3, // invokenonvirtual 3, // invokestatic 5, // invokeinterface -2, // xxxunusedxxx 3, // new 2, // newarray 3, // anewarray 1, // arraylength 1, // athrow 3, // checkcast 3, // instanceof 1, // monitorenter 1, // monitorexit -1, // wide 4, // multianewarray 3, // ifnull 3, // ifnonnull 5, // goto_w 5, // jsr_w }; /** * Bytecode names (for debugging/printing) */ public static final String JBC_name[] = { "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", "int2byte", "int2char", "int2short", "lcmp", "fcmpl", "fcmpg", "dcmpl", "dcmpg", "ifeq", "ifne", "iflt", "ifge", "ifgt", "ifle", "if_icmpeq", "if_icmpne", "if_icmplt", "if_icmpge", "if_icmpgt", "if_icmple", "if_acmpeq", "if_acmpne", "goto", "jsr", "ret", " tableswitch", " lookupswitch", "ireturn", "lreturn", "freturn", "dreturn", "areturn", "return", "getstatic", "putstatic", "getfield", "putfield", "invokevirtual", "invokenonvirtual", "invokestatic", "invokeinterface", " xxxunusedxxx", "new", "newarray", "anewarray", "arraylength", "athrow", "checkcast", "instanceof", "monitorenter", "monitorexit", " wide", "multianewarray", "ifnull", "ifnonnull", "goto_w", "jsr_w", }; }