📄 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 + -