📄 code.java
字号:
*/
public void endScopes(int first) {
if (varDebugInfo)
for (int i = first; i < nextreg; i++)
endScope(i);
nextreg = first;
}
/**
* How opcodes affect the stack size.
* Opcodes with stackdiff value -999 need to be teated specially.
* Opcodes with stackdiff value < -1000 are jumps after which code is dead.
*/
public static final int[] stackdiff = new int[ByteCodeCount];
static {
stackdiff[nop] = 0;
stackdiff[aconst_null] = 1;
stackdiff[iconst_m1] = 1;
stackdiff[iconst_0] = 1;
stackdiff[iconst_1] = 1;
stackdiff[iconst_2] = 1;
stackdiff[iconst_3] = 1;
stackdiff[iconst_4] = 1;
stackdiff[iconst_5] = 1;
stackdiff[lconst_0] = 2;
stackdiff[lconst_1] = 2;
stackdiff[fconst_0] = 1;
stackdiff[fconst_1] = 1;
stackdiff[fconst_2] = 1;
stackdiff[dconst_0] = 2;
stackdiff[dconst_1] = 2;
stackdiff[bipush] = 1;
stackdiff[sipush] = 1;
stackdiff[ldc1] = -999;
stackdiff[ldc2] = -999;
stackdiff[ldc2w] = -999;
stackdiff[iload] = 1;
stackdiff[lload] = 2;
stackdiff[fload] = 1;
stackdiff[dload] = 2;
stackdiff[aload] = 1;
stackdiff[iload_0] = 1;
stackdiff[lload_0] = 2;
stackdiff[fload_0] = 1;
stackdiff[dload_0] = 2;
stackdiff[aload_0] = 1;
stackdiff[iload_1] = 1;
stackdiff[lload_1] = 2;
stackdiff[fload_1] = 1;
stackdiff[dload_1] = 2;
stackdiff[aload_1] = 1;
stackdiff[iload_2] = 1;
stackdiff[lload_2] = 2;
stackdiff[fload_2] = 1;
stackdiff[dload_2] = 2;
stackdiff[aload_2] = 1;
stackdiff[iload_3] = 1;
stackdiff[lload_3] = 2;
stackdiff[fload_3] = 1;
stackdiff[dload_3] = 2;
stackdiff[aload_3] = 1;
stackdiff[iaload] = -1;
stackdiff[laload] = 0;
stackdiff[faload] = -1;
stackdiff[daload] = 0;
stackdiff[aaload] = -1;
stackdiff[baload] = -1;
stackdiff[caload] = -1;
stackdiff[saload] = -1;
stackdiff[istore] = -1;
stackdiff[lstore] = -2;
stackdiff[fstore] = -1;
stackdiff[dstore] = -2;
stackdiff[astore] = -1;
stackdiff[istore_0] = -1;
stackdiff[lstore_0] = -2;
stackdiff[fstore_0] = -1;
stackdiff[dstore_0] = -2;
stackdiff[astore_0] = -1;
stackdiff[istore_1] = -1;
stackdiff[lstore_1] = -2;
stackdiff[fstore_1] = -1;
stackdiff[dstore_1] = -2;
stackdiff[astore_1] = -1;
stackdiff[istore_2] = -1;
stackdiff[lstore_2] = -2;
stackdiff[fstore_2] = -1;
stackdiff[dstore_2] = -2;
stackdiff[astore_2] = -1;
stackdiff[istore_3] = -1;
stackdiff[lstore_3] = -2;
stackdiff[fstore_3] = -1;
stackdiff[dstore_3] = -2;
stackdiff[astore_3] = -1;
stackdiff[iastore] = -3;
stackdiff[lastore] = -4;
stackdiff[fastore] = -3;
stackdiff[dastore] = -4;
stackdiff[aastore] = -3;
stackdiff[bastore] = -3;
stackdiff[castore] = -3;
stackdiff[sastore] = -3;
stackdiff[pop] = -1;
stackdiff[pop2] = -2;
stackdiff[dup] = 1;
stackdiff[dup_x1] = 1;
stackdiff[dup_x2] = 1;
stackdiff[dup2] = 2;
stackdiff[dup2_x1] = 2;
stackdiff[dup2_x2] = 2;
stackdiff[swap] = 0;
stackdiff[iadd] = -1;
stackdiff[ladd] = -2;
stackdiff[fadd] = -1;
stackdiff[dadd] = -2;
stackdiff[isub] = -1;
stackdiff[lsub] = -2;
stackdiff[fsub] = -1;
stackdiff[dsub] = -2;
stackdiff[imul] = -1;
stackdiff[lmul] = -2;
stackdiff[fmul] = -1;
stackdiff[dmul] = -2;
stackdiff[idiv] = -1;
stackdiff[ldiv] = -2;
stackdiff[fdiv] = -1;
stackdiff[ddiv] = -2;
stackdiff[imod] = -1;
stackdiff[lmod] = -2;
stackdiff[fmod] = -1;
stackdiff[dmod] = -2;
stackdiff[ineg] = 0;
stackdiff[lneg] = 0;
stackdiff[fneg] = 0;
stackdiff[dneg] = 0;
stackdiff[ishl] = -1;
stackdiff[lshl] = -1;
stackdiff[ishr] = -1;
stackdiff[lshr] = -1;
stackdiff[iushr] = -1;
stackdiff[lushr] = -1;
stackdiff[iand] = -1;
stackdiff[land] = -2;
stackdiff[ior] = -1;
stackdiff[lor] = -2;
stackdiff[ixor] = -1;
stackdiff[lxor] = -2;
stackdiff[iinc] = 0;
stackdiff[i2l] = 1;
stackdiff[i2f] = 0;
stackdiff[i2d] = 1;
stackdiff[l2i] = -1;
stackdiff[l2f] = -1;
stackdiff[l2d] = 0;
stackdiff[f2i] = 0;
stackdiff[f2l] = 1;
stackdiff[f2d] = 1;
stackdiff[d2i] = -1;
stackdiff[d2l] = 0;
stackdiff[d2f] = -1;
stackdiff[int2byte] = 0;
stackdiff[int2char] = 0;
stackdiff[int2short] = 0;
stackdiff[lcmp] = -3;
stackdiff[fcmpl] = -1;
stackdiff[fcmpg] = -1;
stackdiff[dcmpl] = -3;
stackdiff[dcmpg] = -3;
stackdiff[ifeq] = -1;
stackdiff[ifne] = -1;
stackdiff[iflt] = -1;
stackdiff[ifge] = -1;
stackdiff[ifgt] = -1;
stackdiff[ifle] = -1;
stackdiff[if_icmpeq] = -2;
stackdiff[if_icmpne] = -2;
stackdiff[if_icmplt] = -2;
stackdiff[if_icmpge] = -2;
stackdiff[if_icmpgt] = -2;
stackdiff[if_icmple] = -2;
stackdiff[if_acmpeq] = -2;
stackdiff[if_acmpne] = -2;
stackdiff[goto_] = 0;
stackdiff[jsr] = 0;
stackdiff[ret] = 0;
stackdiff[tableswitch] = -1;
stackdiff[lookupswitch] = -1;
stackdiff[ireturn] = -1001;
stackdiff[lreturn] = -1002;
stackdiff[freturn] = -1001;
stackdiff[dreturn] = -1002;
stackdiff[areturn] = -1001;
stackdiff[return_] = -1000;
stackdiff[getstatic] = -999;
stackdiff[putstatic] = -999;
stackdiff[getfield] = -999;
stackdiff[putfield] = -999;
stackdiff[invokevirtual] = -999;
stackdiff[invokespecial] = -999;
stackdiff[invokestatic] = -999;
stackdiff[invokeinterface] = -999;
stackdiff[newfromname] = 0;
stackdiff[new_] = 1;
stackdiff[newarray] = 0;
stackdiff[anewarray] = 0;
stackdiff[arraylength] = 0;
stackdiff[athrow] = -1001;
stackdiff[checkcast] = 0;
stackdiff[instanceof_] = 0;
stackdiff[monitorenter] = -1;
stackdiff[monitorexit] = -1;
stackdiff[wide] = 0;
stackdiff[multianewarray] = -999;
stackdiff[if_acmp_null] = -1;
stackdiff[if_acmp_nonnull] = -1;
stackdiff[goto_w] = 0;
stackdiff[jsr_w] = 0;
stackdiff[breakpoint] = 0;
}
public static String mnem(int opcode) {
return Mneumonics.mnem[opcode];
}
private static class Mneumonics {
private Mneumonics() {
super();
}
private static final String[] mnem = new String[ByteCodeCount];
static {
mnem[nop] = "nop";
mnem[aconst_null] = "aconst_null";
mnem[iconst_m1] = "iconst_m1";
mnem[iconst_0] = "iconst_0";
mnem[iconst_1] = "iconst_1";
mnem[iconst_2] = "iconst_2";
mnem[iconst_3] = "iconst_3";
mnem[iconst_4] = "iconst_4";
mnem[iconst_5] = "iconst_5";
mnem[lconst_0] = "lconst_0";
mnem[lconst_1] = "lconst_1";
mnem[fconst_0] = "fconst_0";
mnem[fconst_1] = "fconst_1";
mnem[fconst_2] = "fconst_2";
mnem[dconst_0] = "dconst_0";
mnem[dconst_1] = "dconst_1";
mnem[bipush] = "bipush";
mnem[sipush] = "sipush";
mnem[ldc1] = "ldc1";
mnem[ldc2] = "ldc2";
mnem[ldc2w] = "ldc2w";
mnem[iload] = "iload";
mnem[lload] = "lload";
mnem[fload] = "fload";
mnem[dload] = "dload";
mnem[aload] = "aload";
mnem[iload_0] = "iload_0";
mnem[lload_0] = "lload_0";
mnem[fload_0] = "fload_0";
mnem[dload_0] = "dload_0";
mnem[aload_0] = "aload_0";
mnem[iload_1] = "iload_1";
mnem[lload_1] = "lload_1";
mnem[fload_1] = "fload_1";
mnem[dload_1] = "dload_1";
mnem[aload_1] = "aload_1";
mnem[iload_2] = "iload_2";
mnem[lload_2] = "lload_2";
mnem[fload_2] = "fload_2";
mnem[dload_2] = "dload_2";
mnem[aload_2] = "aload_2";
mnem[iload_3] = "iload_3";
mnem[lload_3] = "lload_3";
mnem[fload_3] = "fload_3";
mnem[dload_3] = "dload_3";
mnem[aload_3] = "aload_3";
mnem[iaload] = "iaload";
mnem[laload] = "laload";
mnem[faload] = "faload";
mnem[daload] = "daload";
mnem[aaload] = "aaload";
mnem[baload] = "baload";
mnem[caload] = "caload";
mnem[saload] = "saload";
mnem[istore] = "istore";
mnem[lstore] = "lstore";
mnem[fstore] = "fstore";
mnem[dstore] = "dstore";
mnem[astore] = "astore";
mnem[istore_0] = "istore_0";
mnem[lstore_0] = "lstore_0";
mnem[fstore_0] = "fstore_0";
mnem[dstore_0] = "dstore_0";
mnem[astore_0] = "astore_0";
mnem[istore_1] = "istore_1";
mnem[lstore_1] = "lstore_1";
mnem[fstore_1] = "fstore_1";
mnem[dstore_1] = "dstore_1";
mnem[astore_1] = "astore_1";
mnem[istore_2] = "istore_2";
mnem[lstore_2] = "lstore_2";
mnem[fstore_2] = "fstore_2";
mnem[dstore_2] = "dstore_2";
mnem[astore_2] = "astore_2";
mnem[istore_3] = "istore_3";
mnem[lstore_3] = "lstore_3";
mnem[fstore_3] = "fstore_3";
mnem[dstore_3] = "dstore_3";
mnem[astore_3] = "astore_3";
mnem[iastore] = "iastore";
mnem[lastore] = "lastore";
mnem[fastore] = "fastore";
mnem[dastore] = "dastore";
mnem[aastore] = "aastore";
mnem[bastore] = "bastore";
mnem[castore] = "castore";
mnem[sastore] = "sastore";
mnem[pop] = "pop";
mnem[pop2] = "pop2";
mnem[dup] = "dup";
mnem[dup_x1] = "dup_x1";
mnem[dup_x2] = "dup_x2";
mnem[dup2] = "dup2";
mnem[dup2_x1] = "dup2_x1";
mnem[dup2_x2] = "dup2_x2";
mnem[swap] = "swap";
mnem[iadd] = "iadd";
mnem[ladd] = "ladd";
mnem[fadd] = "fadd";
mnem[dadd] = "dadd";
mnem[isub] = "isub";
mnem[lsub] = "lsub";
mnem[fsub] = "fsub";
mnem[dsub] = "dsub";
mnem[imul] = "imul";
mnem[lmul] = "lmul";
mnem[fmul] = "fmul";
mnem[dmul] = "dmul";
mnem[idiv] = "idiv";
mnem[ldiv] = "ldiv";
mnem[fdiv] = "fdiv";
mnem[ddiv] = "ddiv";
mnem[imod] = "imod";
mnem[lmod] = "lmod";
mnem[fmod] = "fmod";
mnem[dmod] = "dmod";
mnem[ineg] = "ineg";
mnem[lneg] = "lneg";
mnem[fneg] = "fneg";
mnem[dneg] = "dneg";
mnem[ishl] = "ishl";
mnem[lshl] = "lshl";
mnem[ishr] = "ishr";
mnem[lshr] = "lshr";
mnem[iushr] = "iushr";
mnem[lushr] = "lushr";
mnem[iand] = "iand";
mnem[land] = "land";
mnem[ior] = "ior";
mnem[lor] = "lor";
mnem[ixor] = "ixor";
mnem[lxor] = "lxor";
mnem[iinc] = "iinc";
mnem[i2l] = "i2l";
mnem[i2f] = "i2f";
mnem[i2d] = "i2d";
mnem[l2i] = "l2i";
mnem[l2f] = "l2f";
mnem[l2d] = "l2d";
mnem[f2i] = "f2i";
mnem[f2l] = "f2l";
mnem[f2d] = "f2d";
mnem[d2i] = "d2i";
mnem[d2l] = "d2l";
mnem[d2f] = "d2f";
mnem[int2byte] = "int2byte";
mnem[int2char] = "int2char";
mnem[int2short] = "int2short";
mnem[lcmp] = "lcmp";
mnem[fcmpl] = "fcmpl";
mnem[fcmpg] = "fcmpg";
mnem[dcmpl] = "dcmpl";
mnem[dcmpg] = "dcmpg";
mnem[ifeq] = "ifeq";
mnem[ifne] = "ifne";
mnem[iflt] = "iflt";
mnem[ifge] = "ifge";
mnem[ifgt] = "ifgt";
mnem[ifle] = "ifle";
mnem[if_icmpeq] = "if_icmpeq";
mnem[if_icmpne] = "if_icmpne";
mnem[if_icmplt] = "if_icmplt";
mnem[if_icmpge] = "if_icmpge";
mnem[if_icmpgt] = "if_icmpgt";
mnem[if_icmple] = "if_icmple";
mnem[if_acmpeq] = "if_acmpeq";
mnem[if_acmpne] = "if_acmpne";
mnem[goto_] = "goto_";
mnem[jsr] = "jsr";
mnem[ret] = "ret";
mnem[tableswitch] = "tableswitch";
mnem[lookupswitch] = "lookupswitch";
mnem[ireturn] = "ireturn";
mnem[lreturn] = "lreturn";
mnem[freturn] = "freturn";
mnem[dreturn] = "dreturn";
mnem[areturn] = "areturn";
mnem[return_] = "return_";
mnem[getstatic] = "getstatic";
mnem[putstatic] = "putstatic";
mnem[getfield] = "getfield";
mnem[putfield] = "putfield";
mnem[invokevirtual] = "invokevirtual";
mnem[invokespecial] = "invokespecial";
mnem[invokestatic] = "invokestatic";
mnem[invokeinterface] = "invokeinterface";
mnem[newfromname] = "newfromname";
mnem[new_] = "new_";
mnem[newarray] = "newarray";
mnem[anewarray] = "anewarray";
mnem[arraylength] = "arraylength";
mnem[athrow] = "athrow";
mnem[checkcast] = "checkcast";
mnem[instanceof_] = "instanceof_";
mnem[monitorenter] = "monitorenter";
mnem[monitorexit] = "monitorexit";
mnem[wide] = "wide";
mnem[multianewarray] = "multianewarray";
mnem[if_acmp_null] = "if_acmp_null";
mnem[if_acmp_nonnull] = "if_acmp_nonnull";
mnem[goto_w] = "goto_w";
mnem[jsr_w] = "jsr_w";
mnem[breakpoint] = "breakpoint";
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -