663 lines
16 KiB
Java
663 lines
16 KiB
Java
/*******************************************************************************
|
|
* 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", };
|
|
|
|
} |