📄 instruction.java
字号:
/* $Id: Instruction.java,v 1.22 2004/12/11 00:12:41 eric Exp $ * * ProGuard -- shrinking, optimization, and obfuscation of Java class files. * * Copyright (c) 2002-2004 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;import proguard.classfile.*;import proguard.classfile.attribute.*;/** * Base class for representing instructions. * * @author Eric Lafortune */public abstract class Instruction{ // An array for marking Category 2 instructions. private static final boolean[] IS_CATEGORY2 = new boolean[] { false, // nop false, // aconst_null false, // iconst_m1 false, // iconst_0 false, // iconst_1 false, // iconst_2 false, // iconst_3 false, // iconst_4 false, // iconst_5 true, // lconst_0 true, // lconst_1 false, // fconst_0 false, // fconst_1 false, // fconst_2 true, // dconst_0 true, // dconst_1 false, // bipush false, // sipush false, // ldc false, // ldc_w true, // ldc2_w false, // iload true, // lload false, // fload true, // dload false, // aload false, // iload_0 false, // iload_1 false, // iload_2 false, // iload_3 true, // lload_0 true, // lload_1 true, // lload_2 true, // lload_3 false, // fload_0 false, // fload_1 false, // fload_2 false, // fload_3 true, // dload_0 true, // dload_1 true, // dload_2 true, // dload_3 false, // aload_0 false, // aload_1 false, // aload_2 false, // aload_3 false, // iaload true, // laload false, // faload true, // daload false, // aaload false, // baload false, // caload false, // saload false, // istore true, // lstore false, // fstore true, // dstore false, // astore false, // istore_0 false, // istore_1 false, // istore_2 false, // istore_3 true, // lstore_0 true, // lstore_1 true, // lstore_2 true, // lstore_3 false, // fstore_0 false, // fstore_1 false, // fstore_2 false, // fstore_3 true, // dstore_0 true, // dstore_1 true, // dstore_2 true, // dstore_3 false, // astore_0 false, // astore_1 false, // astore_2 false, // astore_3 false, // iastore true, // lastore false, // fastore true, // dastore false, // aastore false, // bastore false, // castore false, // sastore false, // pop true, // pop2 false, // dup false, // dup_x1 false, // dup_x2 true, // dup2 true, // dup2_x1 true, // dup2_x2 false, // swap false, // iadd true, // ladd false, // fadd true, // dadd false, // isub true, // lsub false, // fsub true, // dsub false, // imul true, // lmul false, // fmul true, // dmul false, // idiv true, // ldiv false, // fdiv true, // ddiv false, // irem true, // lrem false, // frem true, // drem false, // ineg true, // lneg false, // fneg true, // dneg false, // ishl true, // lshl false, // ishr true, // lshr false, // iushr true, // lushr false, // iand true, // land false, // ior true, // lor false, // ixor true, // lxor false, // iinc false, // i2l false, // i2f false, // i2d true, // l2i true, // l2f true, // l2d false, // f2i false, // f2l false, // f2d true, // d2i true, // d2l true, // d2f false, // i2b false, // i2c false, // i2s true, // lcmp false, // fcmpl false, // fcmpg true, // dcmpl true, // dcmpg false, // ifeq false, // ifne false, // iflt false, // ifge false, // ifgt false, // ifle false, // ificmpeq false, // ificmpne false, // ificmplt false, // ificmpge false, // ificmpgt false, // ificmple false, // ifacmpeq false, // ifacmpne false, // goto false, // jsr false, // ret false, // tableswitch false, // lookupswitch false, // ireturn true, // lreturn false, // freturn true, // dreturn false, // areturn false, // return false, // getstatic false, // putstatic false, // getfield false, // putfield false, // invokevirtual false, // invokespecial false, // invokestatic false, // invokeinterface false, // unused false, // new false, // newarray false, // anewarray false, // arraylength false, // athrow false, // checkcast false, // instanceof false, // monitorenter false, // monitorexit false, // wide false, // multianewarray false, // ifnull false, // ifnonnull false, // goto_w false, // jsr_w }; // An array containing the fixed number of entries popped from the stack, // for all instructions. private static final int[] STACK_POP_COUNTS = new int[] { 0, // nop 0, // aconst_null 0, // iconst_m1 0, // iconst_0 0, // iconst_1 0, // iconst_2 0, // iconst_3 0, // iconst_4 0, // iconst_5 0, // lconst_0 0, // lconst_1 0, // fconst_0 0, // fconst_1 0, // fconst_2 0, // dconst_0 0, // dconst_1 0, // bipush 0, // sipush 0, // ldc 0, // ldc_w 0, // ldc2_w 0, // iload 0, // lload 0, // fload 0, // dload 0, // aload 0, // iload_0 0, // iload_1 0, // iload_2 0, // iload_3 0, // lload_0 0, // lload_1 0, // lload_2 0, // lload_3 0, // fload_0 0, // fload_1 0, // fload_2 0, // fload_3 0, // dload_0 0, // dload_1 0, // dload_2 0, // dload_3 0, // aload_0 0, // aload_1 0, // aload_2 0, // aload_3 2, // iaload 2, // laload 2, // faload 2, // daload 2, // aaload 2, // baload 2, // caload 2, // saload 1, // istore 2, // lstore 1, // fstore 2, // dstore 1, // astore 1, // istore_0 1, // istore_1 1, // istore_2 1, // istore_3 2, // lstore_0 2, // lstore_1 2, // lstore_2 2, // lstore_3 1, // fstore_0 1, // fstore_1 1, // fstore_2 1, // fstore_3 2, // dstore_0 2, // dstore_1 2, // dstore_2 2, // dstore_3 1, // astore_0 1, // astore_1 1, // astore_2 1, // astore_3 3, // iastore 4, // lastore 3, // fastore 4, // dastore 3, // aastore 3, // bastore 3, // castore 3, // sastore 1, // pop 2, // pop2 0, // dup 0, // dup_x1 0, // dup_x2 0, // dup2 0, // dup2_x1 0, // dup2_x2 0, // swap 2, // iadd 4, // ladd 2, // fadd 4, // dadd 2, // isub 4, // lsub 2, // fsub 4, // dsub 2, // imul 4, // lmul 2, // fmul 4, // dmul 2, // idiv 4, // ldiv 2, // fdiv 4, // ddiv 2, // irem 4, // lrem 2, // frem 4, // drem 1, // ineg 2, // lneg 1, // fneg 2, // dneg 2, // ishl 3, // lshl 2, // ishr 3, // lshr 2, // iushr 3, // lushr 2, // iand 4, // land 2, // ior 4, // lor 2, // ixor 4, // lxor 0, // iinc 1, // i2l 1, // i2f 1, // i2d 2, // l2i 2, // l2f 2, // l2d 1, // f2i 1, // f2l 1, // f2d 2, // d2i 2, // d2l 2, // d2f 1, // i2b 1, // i2c 1, // i2s 4, // lcmp 2, // fcmpl 2, // fcmpg 4, // dcmpl 4, // dcmpg 1, // ifeq 1, // ifne 1, // iflt 1, // ifge 1, // ifgt 1, // ifle 2, // ificmpeq 2, // ificmpne 2, // ificmplt 2, // ificmpge 2, // ificmpgt 2, // ificmple 2, // ifacmpeq 2, // ifacmpne 0, // goto 0, // jsr 0, // ret 1, // tableswitch 1, // lookupswitch 1, // ireturn 2, // lreturn 1, // freturn 2, // dreturn 1, // areturn 0, // return 0, // getstatic 0, // putstatic 1, // getfield 1, // putfield 1, // invokevirtual 1, // invokespecial 0, // invokestatic 1, // invokeinterface 0, // unused 0, // new 1, // newarray 1, // anewarray
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -