类 Instruction
- java.lang.Object
-
- proguard.classfile.instruction.Instruction
-
- 直接已知子类:
BranchInstruction,CodeAttributeEditor.Label,ConstantInstruction,InstructionSequenceReplacer.Label,SimpleInstruction,SwitchInstruction,VariableInstruction
public abstract class Instruction extends java.lang.ObjectBase class for representing instructions.
-
-
字段概要
字段 修饰符和类型 字段 说明 static byteARRAY_T_BOOLEANstatic byteARRAY_T_BYTEstatic byteARRAY_T_CHARstatic byteARRAY_T_DOUBLEstatic byteARRAY_T_FLOATstatic byteARRAY_T_INTstatic byteARRAY_T_LONGstatic byteARRAY_T_SHORTstatic java.lang.String[]NAMESstatic byteOP_AALOADstatic byteOP_AASTOREstatic byteOP_ACONST_NULLstatic byteOP_ALOADstatic byteOP_ALOAD_0static byteOP_ALOAD_1static byteOP_ALOAD_2static byteOP_ALOAD_3static byteOP_ANEWARRAYstatic byteOP_ARETURNstatic byteOP_ARRAYLENGTHstatic byteOP_ASTOREstatic byteOP_ASTORE_0static byteOP_ASTORE_1static byteOP_ASTORE_2static byteOP_ASTORE_3static byteOP_ATHROWstatic byteOP_BALOADstatic byteOP_BASTOREstatic byteOP_BIPUSHstatic byteOP_CALOADstatic byteOP_CASTOREstatic byteOP_CHECKCASTstatic byteOP_D2Fstatic byteOP_D2Istatic byteOP_D2Lstatic byteOP_DADDstatic byteOP_DALOADstatic byteOP_DASTOREstatic byteOP_DCMPGstatic byteOP_DCMPLstatic byteOP_DCONST_0static byteOP_DCONST_1static byteOP_DDIVstatic byteOP_DLOADstatic byteOP_DLOAD_0static byteOP_DLOAD_1static byteOP_DLOAD_2static byteOP_DLOAD_3static byteOP_DMULstatic byteOP_DNEGstatic byteOP_DREMstatic byteOP_DRETURNstatic byteOP_DSTOREstatic byteOP_DSTORE_0static byteOP_DSTORE_1static byteOP_DSTORE_2static byteOP_DSTORE_3static byteOP_DSUBstatic byteOP_DUPstatic byteOP_DUP_X1static byteOP_DUP_X2static byteOP_DUP2static byteOP_DUP2_X1static byteOP_DUP2_X2static byteOP_F2Dstatic byteOP_F2Istatic byteOP_F2Lstatic byteOP_FADDstatic byteOP_FALOADstatic byteOP_FASTOREstatic byteOP_FCMPGstatic byteOP_FCMPLstatic byteOP_FCONST_0static byteOP_FCONST_1static byteOP_FCONST_2static byteOP_FDIVstatic byteOP_FLOADstatic byteOP_FLOAD_0static byteOP_FLOAD_1static byteOP_FLOAD_2static byteOP_FLOAD_3static byteOP_FMULstatic byteOP_FNEGstatic byteOP_FREMstatic byteOP_FRETURNstatic byteOP_FSTOREstatic byteOP_FSTORE_0static byteOP_FSTORE_1static byteOP_FSTORE_2static byteOP_FSTORE_3static byteOP_FSUBstatic byteOP_GETFIELDstatic byteOP_GETSTATICstatic byteOP_GOTOstatic byteOP_GOTO_Wstatic byteOP_I2Bstatic byteOP_I2Cstatic byteOP_I2Dstatic byteOP_I2Fstatic byteOP_I2Lstatic byteOP_I2Sstatic byteOP_IADDstatic byteOP_IALOADstatic byteOP_IANDstatic byteOP_IASTOREstatic byteOP_ICONST_0static byteOP_ICONST_1static byteOP_ICONST_2static byteOP_ICONST_3static byteOP_ICONST_4static byteOP_ICONST_5static byteOP_ICONST_M1static byteOP_IDIVstatic byteOP_IFACMPEQstatic byteOP_IFACMPNEstatic byteOP_IFEQstatic byteOP_IFGEstatic byteOP_IFGTstatic byteOP_IFICMPEQstatic byteOP_IFICMPGEstatic byteOP_IFICMPGTstatic byteOP_IFICMPLEstatic byteOP_IFICMPLTstatic byteOP_IFICMPNEstatic byteOP_IFLEstatic byteOP_IFLTstatic byteOP_IFNEstatic byteOP_IFNONNULLstatic byteOP_IFNULLstatic byteOP_IINCstatic byteOP_ILOADstatic byteOP_ILOAD_0static byteOP_ILOAD_1static byteOP_ILOAD_2static byteOP_ILOAD_3static byteOP_IMULstatic byteOP_INEGstatic byteOP_INSTANCEOFstatic byteOP_INVOKEDYNAMICstatic byteOP_INVOKEINTERFACEstatic byteOP_INVOKESPECIALstatic byteOP_INVOKESTATICstatic byteOP_INVOKEVIRTUALstatic byteOP_IORstatic byteOP_IREMstatic byteOP_IRETURNstatic byteOP_ISHLstatic byteOP_ISHRstatic byteOP_ISTOREstatic byteOP_ISTORE_0static byteOP_ISTORE_1static byteOP_ISTORE_2static byteOP_ISTORE_3static byteOP_ISUBstatic byteOP_IUSHRstatic byteOP_IXORstatic byteOP_JSRstatic byteOP_JSR_Wstatic byteOP_L2Dstatic byteOP_L2Fstatic byteOP_L2Istatic byteOP_LADDstatic byteOP_LALOADstatic byteOP_LANDstatic byteOP_LASTOREstatic byteOP_LCMPstatic byteOP_LCONST_0static byteOP_LCONST_1static byteOP_LDCstatic byteOP_LDC_Wstatic byteOP_LDC2_Wstatic byteOP_LDIVstatic byteOP_LLOADstatic byteOP_LLOAD_0static byteOP_LLOAD_1static byteOP_LLOAD_2static byteOP_LLOAD_3static byteOP_LMULstatic byteOP_LNEGstatic byteOP_LOOKUPSWITCHstatic byteOP_LORstatic byteOP_LREMstatic byteOP_LRETURNstatic byteOP_LSHLstatic byteOP_LSHRstatic byteOP_LSTOREstatic byteOP_LSTORE_0static byteOP_LSTORE_1static byteOP_LSTORE_2static byteOP_LSTORE_3static byteOP_LSUBstatic byteOP_LUSHRstatic byteOP_LXORstatic byteOP_MONITORENTERstatic byteOP_MONITOREXITstatic byteOP_MULTIANEWARRAYstatic byteOP_NEWstatic byteOP_NEWARRAYstatic byteOP_NOPstatic byteOP_POPstatic byteOP_POP2static byteOP_PUTFIELDstatic byteOP_PUTSTATICstatic byteOP_RETstatic byteOP_RETURNstatic byteOP_SALOADstatic byteOP_SASTOREstatic byteOP_SIPUSHstatic byteOP_SWAPstatic byteOP_TABLESWITCHstatic byteOP_WIDEbyteopcode
-
构造器概要
构造器 构造器 说明 Instruction()
-
方法概要
所有方法 静态方法 实例方法 抽象方法 具体方法 修饰符和类型 方法 说明 abstract voidaccept(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, InstructionVisitor instructionVisitor)Accepts the given visitor.byteactualOpcode()Returns the actual opcode of this instruction, i.e. the opcode that is stored in the bytecode.bytecanonicalOpcode()Returns the canonical opcode of this instruction, i.e. typically the opcode whose extension has been removed.abstract booleanequals(java.lang.Object o)java.lang.StringgetName()Returns the name of the instruction.abstract inthashCode()booleanisCategory2()Returns whether the instruction is a Category 2 instruction.protected booleanisWide()Returns whether the instruction is wide, i.e. preceded by a wide opcode.abstract intlength(int offset)Returns the length in bytes of the instruction.booleanmayInstanceThrowExceptions(Clazz clazz)Returns whether a particular instance of an instruction may throw exceptions.booleanmayThrowExceptions()Returns whether the instruction may conservatively throw exceptions.protected static intreadByte(byte[] code, int offset)protected abstract voidreadInfo(byte[] code, int offset)Reads the data following the instruction opcode.protected static intreadInt(byte[] code, int offset)protected static intreadShort(byte[] code, int offset)protected static intreadSignedByte(byte[] code, int offset)protected static intreadSignedShort(byte[] code, int offset)protected static intreadSignedValue(byte[] code, int offset, int valueSize)protected static intreadValue(byte[] code, int offset, int valueSize)abstract Instructionshrink()Shrinks this instruction to its shortest possible form.intstackEntryIndexBefore(Clazz clazz, int stackEntryIndexAfter)Returns the stack entry index from which the specified stack entry is copied by a dup/swap/checkcast instruction, or -1 otherwise.intstackPopCount(Clazz clazz)Returns the number of entries popped from the stack during the execution of the instruction.intstackPushCount(Clazz clazz)Returns the number of entries pushed onto the stack during the execution of the instruction.java.lang.StringtoString(int offset)Returns a description of the instruction, at the given offset.java.lang.StringtoString(Clazz clazz, int offset)Returns a description of the instruction, at the given offset.voidwrite(byte[] code, int offset)Writes the Instruction at the given offset in the given code array.voidwrite(CodeAttribute codeAttribute, int offset)Writes the Instruction at the given offset in the given code attribute.protected static voidwriteByte(byte[] code, int offset, int value)protected abstract voidwriteInfo(byte[] code, int offset)Writes data following the instruction opcode.protected static voidwriteInt(byte[] code, int offset, int value)protected static voidwriteShort(byte[] code, int offset, int value)protected static voidwriteSignedByte(byte[] code, int offset, int value)protected static voidwriteSignedShort(byte[] code, int offset, int value)protected static voidwriteSignedValue(byte[] code, int offset, int value, int valueSize)protected static voidwriteValue(byte[] code, int offset, int value, int valueSize)
-
-
-
字段详细资料
-
OP_NOP
public static final byte OP_NOP
- 另请参阅:
- 常量字段值
-
OP_ACONST_NULL
public static final byte OP_ACONST_NULL
- 另请参阅:
- 常量字段值
-
OP_ICONST_M1
public static final byte OP_ICONST_M1
- 另请参阅:
- 常量字段值
-
OP_ICONST_0
public static final byte OP_ICONST_0
- 另请参阅:
- 常量字段值
-
OP_ICONST_1
public static final byte OP_ICONST_1
- 另请参阅:
- 常量字段值
-
OP_ICONST_2
public static final byte OP_ICONST_2
- 另请参阅:
- 常量字段值
-
OP_ICONST_3
public static final byte OP_ICONST_3
- 另请参阅:
- 常量字段值
-
OP_ICONST_4
public static final byte OP_ICONST_4
- 另请参阅:
- 常量字段值
-
OP_ICONST_5
public static final byte OP_ICONST_5
- 另请参阅:
- 常量字段值
-
OP_LCONST_0
public static final byte OP_LCONST_0
- 另请参阅:
- 常量字段值
-
OP_LCONST_1
public static final byte OP_LCONST_1
- 另请参阅:
- 常量字段值
-
OP_FCONST_0
public static final byte OP_FCONST_0
- 另请参阅:
- 常量字段值
-
OP_FCONST_1
public static final byte OP_FCONST_1
- 另请参阅:
- 常量字段值
-
OP_FCONST_2
public static final byte OP_FCONST_2
- 另请参阅:
- 常量字段值
-
OP_DCONST_0
public static final byte OP_DCONST_0
- 另请参阅:
- 常量字段值
-
OP_DCONST_1
public static final byte OP_DCONST_1
- 另请参阅:
- 常量字段值
-
OP_BIPUSH
public static final byte OP_BIPUSH
- 另请参阅:
- 常量字段值
-
OP_SIPUSH
public static final byte OP_SIPUSH
- 另请参阅:
- 常量字段值
-
OP_LDC
public static final byte OP_LDC
- 另请参阅:
- 常量字段值
-
OP_LDC_W
public static final byte OP_LDC_W
- 另请参阅:
- 常量字段值
-
OP_LDC2_W
public static final byte OP_LDC2_W
- 另请参阅:
- 常量字段值
-
OP_ILOAD
public static final byte OP_ILOAD
- 另请参阅:
- 常量字段值
-
OP_LLOAD
public static final byte OP_LLOAD
- 另请参阅:
- 常量字段值
-
OP_FLOAD
public static final byte OP_FLOAD
- 另请参阅:
- 常量字段值
-
OP_DLOAD
public static final byte OP_DLOAD
- 另请参阅:
- 常量字段值
-
OP_ALOAD
public static final byte OP_ALOAD
- 另请参阅:
- 常量字段值
-
OP_ILOAD_0
public static final byte OP_ILOAD_0
- 另请参阅:
- 常量字段值
-
OP_ILOAD_1
public static final byte OP_ILOAD_1
- 另请参阅:
- 常量字段值
-
OP_ILOAD_2
public static final byte OP_ILOAD_2
- 另请参阅:
- 常量字段值
-
OP_ILOAD_3
public static final byte OP_ILOAD_3
- 另请参阅:
- 常量字段值
-
OP_LLOAD_0
public static final byte OP_LLOAD_0
- 另请参阅:
- 常量字段值
-
OP_LLOAD_1
public static final byte OP_LLOAD_1
- 另请参阅:
- 常量字段值
-
OP_LLOAD_2
public static final byte OP_LLOAD_2
- 另请参阅:
- 常量字段值
-
OP_LLOAD_3
public static final byte OP_LLOAD_3
- 另请参阅:
- 常量字段值
-
OP_FLOAD_0
public static final byte OP_FLOAD_0
- 另请参阅:
- 常量字段值
-
OP_FLOAD_1
public static final byte OP_FLOAD_1
- 另请参阅:
- 常量字段值
-
OP_FLOAD_2
public static final byte OP_FLOAD_2
- 另请参阅:
- 常量字段值
-
OP_FLOAD_3
public static final byte OP_FLOAD_3
- 另请参阅:
- 常量字段值
-
OP_DLOAD_0
public static final byte OP_DLOAD_0
- 另请参阅:
- 常量字段值
-
OP_DLOAD_1
public static final byte OP_DLOAD_1
- 另请参阅:
- 常量字段值
-
OP_DLOAD_2
public static final byte OP_DLOAD_2
- 另请参阅:
- 常量字段值
-
OP_DLOAD_3
public static final byte OP_DLOAD_3
- 另请参阅:
- 常量字段值
-
OP_ALOAD_0
public static final byte OP_ALOAD_0
- 另请参阅:
- 常量字段值
-
OP_ALOAD_1
public static final byte OP_ALOAD_1
- 另请参阅:
- 常量字段值
-
OP_ALOAD_2
public static final byte OP_ALOAD_2
- 另请参阅:
- 常量字段值
-
OP_ALOAD_3
public static final byte OP_ALOAD_3
- 另请参阅:
- 常量字段值
-
OP_IALOAD
public static final byte OP_IALOAD
- 另请参阅:
- 常量字段值
-
OP_LALOAD
public static final byte OP_LALOAD
- 另请参阅:
- 常量字段值
-
OP_FALOAD
public static final byte OP_FALOAD
- 另请参阅:
- 常量字段值
-
OP_DALOAD
public static final byte OP_DALOAD
- 另请参阅:
- 常量字段值
-
OP_AALOAD
public static final byte OP_AALOAD
- 另请参阅:
- 常量字段值
-
OP_BALOAD
public static final byte OP_BALOAD
- 另请参阅:
- 常量字段值
-
OP_CALOAD
public static final byte OP_CALOAD
- 另请参阅:
- 常量字段值
-
OP_SALOAD
public static final byte OP_SALOAD
- 另请参阅:
- 常量字段值
-
OP_ISTORE
public static final byte OP_ISTORE
- 另请参阅:
- 常量字段值
-
OP_LSTORE
public static final byte OP_LSTORE
- 另请参阅:
- 常量字段值
-
OP_FSTORE
public static final byte OP_FSTORE
- 另请参阅:
- 常量字段值
-
OP_DSTORE
public static final byte OP_DSTORE
- 另请参阅:
- 常量字段值
-
OP_ASTORE
public static final byte OP_ASTORE
- 另请参阅:
- 常量字段值
-
OP_ISTORE_0
public static final byte OP_ISTORE_0
- 另请参阅:
- 常量字段值
-
OP_ISTORE_1
public static final byte OP_ISTORE_1
- 另请参阅:
- 常量字段值
-
OP_ISTORE_2
public static final byte OP_ISTORE_2
- 另请参阅:
- 常量字段值
-
OP_ISTORE_3
public static final byte OP_ISTORE_3
- 另请参阅:
- 常量字段值
-
OP_LSTORE_0
public static final byte OP_LSTORE_0
- 另请参阅:
- 常量字段值
-
OP_LSTORE_1
public static final byte OP_LSTORE_1
- 另请参阅:
- 常量字段值
-
OP_LSTORE_2
public static final byte OP_LSTORE_2
- 另请参阅:
- 常量字段值
-
OP_LSTORE_3
public static final byte OP_LSTORE_3
- 另请参阅:
- 常量字段值
-
OP_FSTORE_0
public static final byte OP_FSTORE_0
- 另请参阅:
- 常量字段值
-
OP_FSTORE_1
public static final byte OP_FSTORE_1
- 另请参阅:
- 常量字段值
-
OP_FSTORE_2
public static final byte OP_FSTORE_2
- 另请参阅:
- 常量字段值
-
OP_FSTORE_3
public static final byte OP_FSTORE_3
- 另请参阅:
- 常量字段值
-
OP_DSTORE_0
public static final byte OP_DSTORE_0
- 另请参阅:
- 常量字段值
-
OP_DSTORE_1
public static final byte OP_DSTORE_1
- 另请参阅:
- 常量字段值
-
OP_DSTORE_2
public static final byte OP_DSTORE_2
- 另请参阅:
- 常量字段值
-
OP_DSTORE_3
public static final byte OP_DSTORE_3
- 另请参阅:
- 常量字段值
-
OP_ASTORE_0
public static final byte OP_ASTORE_0
- 另请参阅:
- 常量字段值
-
OP_ASTORE_1
public static final byte OP_ASTORE_1
- 另请参阅:
- 常量字段值
-
OP_ASTORE_2
public static final byte OP_ASTORE_2
- 另请参阅:
- 常量字段值
-
OP_ASTORE_3
public static final byte OP_ASTORE_3
- 另请参阅:
- 常量字段值
-
OP_IASTORE
public static final byte OP_IASTORE
- 另请参阅:
- 常量字段值
-
OP_LASTORE
public static final byte OP_LASTORE
- 另请参阅:
- 常量字段值
-
OP_FASTORE
public static final byte OP_FASTORE
- 另请参阅:
- 常量字段值
-
OP_DASTORE
public static final byte OP_DASTORE
- 另请参阅:
- 常量字段值
-
OP_AASTORE
public static final byte OP_AASTORE
- 另请参阅:
- 常量字段值
-
OP_BASTORE
public static final byte OP_BASTORE
- 另请参阅:
- 常量字段值
-
OP_CASTORE
public static final byte OP_CASTORE
- 另请参阅:
- 常量字段值
-
OP_SASTORE
public static final byte OP_SASTORE
- 另请参阅:
- 常量字段值
-
OP_POP
public static final byte OP_POP
- 另请参阅:
- 常量字段值
-
OP_POP2
public static final byte OP_POP2
- 另请参阅:
- 常量字段值
-
OP_DUP
public static final byte OP_DUP
- 另请参阅:
- 常量字段值
-
OP_DUP_X1
public static final byte OP_DUP_X1
- 另请参阅:
- 常量字段值
-
OP_DUP_X2
public static final byte OP_DUP_X2
- 另请参阅:
- 常量字段值
-
OP_DUP2
public static final byte OP_DUP2
- 另请参阅:
- 常量字段值
-
OP_DUP2_X1
public static final byte OP_DUP2_X1
- 另请参阅:
- 常量字段值
-
OP_DUP2_X2
public static final byte OP_DUP2_X2
- 另请参阅:
- 常量字段值
-
OP_SWAP
public static final byte OP_SWAP
- 另请参阅:
- 常量字段值
-
OP_IADD
public static final byte OP_IADD
- 另请参阅:
- 常量字段值
-
OP_LADD
public static final byte OP_LADD
- 另请参阅:
- 常量字段值
-
OP_FADD
public static final byte OP_FADD
- 另请参阅:
- 常量字段值
-
OP_DADD
public static final byte OP_DADD
- 另请参阅:
- 常量字段值
-
OP_ISUB
public static final byte OP_ISUB
- 另请参阅:
- 常量字段值
-
OP_LSUB
public static final byte OP_LSUB
- 另请参阅:
- 常量字段值
-
OP_FSUB
public static final byte OP_FSUB
- 另请参阅:
- 常量字段值
-
OP_DSUB
public static final byte OP_DSUB
- 另请参阅:
- 常量字段值
-
OP_IMUL
public static final byte OP_IMUL
- 另请参阅:
- 常量字段值
-
OP_LMUL
public static final byte OP_LMUL
- 另请参阅:
- 常量字段值
-
OP_FMUL
public static final byte OP_FMUL
- 另请参阅:
- 常量字段值
-
OP_DMUL
public static final byte OP_DMUL
- 另请参阅:
- 常量字段值
-
OP_IDIV
public static final byte OP_IDIV
- 另请参阅:
- 常量字段值
-
OP_LDIV
public static final byte OP_LDIV
- 另请参阅:
- 常量字段值
-
OP_FDIV
public static final byte OP_FDIV
- 另请参阅:
- 常量字段值
-
OP_DDIV
public static final byte OP_DDIV
- 另请参阅:
- 常量字段值
-
OP_IREM
public static final byte OP_IREM
- 另请参阅:
- 常量字段值
-
OP_LREM
public static final byte OP_LREM
- 另请参阅:
- 常量字段值
-
OP_FREM
public static final byte OP_FREM
- 另请参阅:
- 常量字段值
-
OP_DREM
public static final byte OP_DREM
- 另请参阅:
- 常量字段值
-
OP_INEG
public static final byte OP_INEG
- 另请参阅:
- 常量字段值
-
OP_LNEG
public static final byte OP_LNEG
- 另请参阅:
- 常量字段值
-
OP_FNEG
public static final byte OP_FNEG
- 另请参阅:
- 常量字段值
-
OP_DNEG
public static final byte OP_DNEG
- 另请参阅:
- 常量字段值
-
OP_ISHL
public static final byte OP_ISHL
- 另请参阅:
- 常量字段值
-
OP_LSHL
public static final byte OP_LSHL
- 另请参阅:
- 常量字段值
-
OP_ISHR
public static final byte OP_ISHR
- 另请参阅:
- 常量字段值
-
OP_LSHR
public static final byte OP_LSHR
- 另请参阅:
- 常量字段值
-
OP_IUSHR
public static final byte OP_IUSHR
- 另请参阅:
- 常量字段值
-
OP_LUSHR
public static final byte OP_LUSHR
- 另请参阅:
- 常量字段值
-
OP_IAND
public static final byte OP_IAND
- 另请参阅:
- 常量字段值
-
OP_LAND
public static final byte OP_LAND
- 另请参阅:
- 常量字段值
-
OP_IOR
public static final byte OP_IOR
- 另请参阅:
- 常量字段值
-
OP_LOR
public static final byte OP_LOR
- 另请参阅:
- 常量字段值
-
OP_IXOR
public static final byte OP_IXOR
- 另请参阅:
- 常量字段值
-
OP_LXOR
public static final byte OP_LXOR
- 另请参阅:
- 常量字段值
-
OP_IINC
public static final byte OP_IINC
- 另请参阅:
- 常量字段值
-
OP_I2L
public static final byte OP_I2L
- 另请参阅:
- 常量字段值
-
OP_I2F
public static final byte OP_I2F
- 另请参阅:
- 常量字段值
-
OP_I2D
public static final byte OP_I2D
- 另请参阅:
- 常量字段值
-
OP_L2I
public static final byte OP_L2I
- 另请参阅:
- 常量字段值
-
OP_L2F
public static final byte OP_L2F
- 另请参阅:
- 常量字段值
-
OP_L2D
public static final byte OP_L2D
- 另请参阅:
- 常量字段值
-
OP_F2I
public static final byte OP_F2I
- 另请参阅:
- 常量字段值
-
OP_F2L
public static final byte OP_F2L
- 另请参阅:
- 常量字段值
-
OP_F2D
public static final byte OP_F2D
- 另请参阅:
- 常量字段值
-
OP_D2I
public static final byte OP_D2I
- 另请参阅:
- 常量字段值
-
OP_D2L
public static final byte OP_D2L
- 另请参阅:
- 常量字段值
-
OP_D2F
public static final byte OP_D2F
- 另请参阅:
- 常量字段值
-
OP_I2B
public static final byte OP_I2B
- 另请参阅:
- 常量字段值
-
OP_I2C
public static final byte OP_I2C
- 另请参阅:
- 常量字段值
-
OP_I2S
public static final byte OP_I2S
- 另请参阅:
- 常量字段值
-
OP_LCMP
public static final byte OP_LCMP
- 另请参阅:
- 常量字段值
-
OP_FCMPL
public static final byte OP_FCMPL
- 另请参阅:
- 常量字段值
-
OP_FCMPG
public static final byte OP_FCMPG
- 另请参阅:
- 常量字段值
-
OP_DCMPL
public static final byte OP_DCMPL
- 另请参阅:
- 常量字段值
-
OP_DCMPG
public static final byte OP_DCMPG
- 另请参阅:
- 常量字段值
-
OP_IFEQ
public static final byte OP_IFEQ
- 另请参阅:
- 常量字段值
-
OP_IFNE
public static final byte OP_IFNE
- 另请参阅:
- 常量字段值
-
OP_IFLT
public static final byte OP_IFLT
- 另请参阅:
- 常量字段值
-
OP_IFGE
public static final byte OP_IFGE
- 另请参阅:
- 常量字段值
-
OP_IFGT
public static final byte OP_IFGT
- 另请参阅:
- 常量字段值
-
OP_IFLE
public static final byte OP_IFLE
- 另请参阅:
- 常量字段值
-
OP_IFICMPEQ
public static final byte OP_IFICMPEQ
- 另请参阅:
- 常量字段值
-
OP_IFICMPNE
public static final byte OP_IFICMPNE
- 另请参阅:
- 常量字段值
-
OP_IFICMPLT
public static final byte OP_IFICMPLT
- 另请参阅:
- 常量字段值
-
OP_IFICMPGE
public static final byte OP_IFICMPGE
- 另请参阅:
- 常量字段值
-
OP_IFICMPGT
public static final byte OP_IFICMPGT
- 另请参阅:
- 常量字段值
-
OP_IFICMPLE
public static final byte OP_IFICMPLE
- 另请参阅:
- 常量字段值
-
OP_IFACMPEQ
public static final byte OP_IFACMPEQ
- 另请参阅:
- 常量字段值
-
OP_IFACMPNE
public static final byte OP_IFACMPNE
- 另请参阅:
- 常量字段值
-
OP_GOTO
public static final byte OP_GOTO
- 另请参阅:
- 常量字段值
-
OP_JSR
public static final byte OP_JSR
- 另请参阅:
- 常量字段值
-
OP_RET
public static final byte OP_RET
- 另请参阅:
- 常量字段值
-
OP_TABLESWITCH
public static final byte OP_TABLESWITCH
- 另请参阅:
- 常量字段值
-
OP_LOOKUPSWITCH
public static final byte OP_LOOKUPSWITCH
- 另请参阅:
- 常量字段值
-
OP_IRETURN
public static final byte OP_IRETURN
- 另请参阅:
- 常量字段值
-
OP_LRETURN
public static final byte OP_LRETURN
- 另请参阅:
- 常量字段值
-
OP_FRETURN
public static final byte OP_FRETURN
- 另请参阅:
- 常量字段值
-
OP_DRETURN
public static final byte OP_DRETURN
- 另请参阅:
- 常量字段值
-
OP_ARETURN
public static final byte OP_ARETURN
- 另请参阅:
- 常量字段值
-
OP_RETURN
public static final byte OP_RETURN
- 另请参阅:
- 常量字段值
-
OP_GETSTATIC
public static final byte OP_GETSTATIC
- 另请参阅:
- 常量字段值
-
OP_PUTSTATIC
public static final byte OP_PUTSTATIC
- 另请参阅:
- 常量字段值
-
OP_GETFIELD
public static final byte OP_GETFIELD
- 另请参阅:
- 常量字段值
-
OP_PUTFIELD
public static final byte OP_PUTFIELD
- 另请参阅:
- 常量字段值
-
OP_INVOKEVIRTUAL
public static final byte OP_INVOKEVIRTUAL
- 另请参阅:
- 常量字段值
-
OP_INVOKESPECIAL
public static final byte OP_INVOKESPECIAL
- 另请参阅:
- 常量字段值
-
OP_INVOKESTATIC
public static final byte OP_INVOKESTATIC
- 另请参阅:
- 常量字段值
-
OP_INVOKEINTERFACE
public static final byte OP_INVOKEINTERFACE
- 另请参阅:
- 常量字段值
-
OP_INVOKEDYNAMIC
public static final byte OP_INVOKEDYNAMIC
- 另请参阅:
- 常量字段值
-
OP_NEW
public static final byte OP_NEW
- 另请参阅:
- 常量字段值
-
OP_NEWARRAY
public static final byte OP_NEWARRAY
- 另请参阅:
- 常量字段值
-
OP_ANEWARRAY
public static final byte OP_ANEWARRAY
- 另请参阅:
- 常量字段值
-
OP_ARRAYLENGTH
public static final byte OP_ARRAYLENGTH
- 另请参阅:
- 常量字段值
-
OP_ATHROW
public static final byte OP_ATHROW
- 另请参阅:
- 常量字段值
-
OP_CHECKCAST
public static final byte OP_CHECKCAST
- 另请参阅:
- 常量字段值
-
OP_INSTANCEOF
public static final byte OP_INSTANCEOF
- 另请参阅:
- 常量字段值
-
OP_MONITORENTER
public static final byte OP_MONITORENTER
- 另请参阅:
- 常量字段值
-
OP_MONITOREXIT
public static final byte OP_MONITOREXIT
- 另请参阅:
- 常量字段值
-
OP_WIDE
public static final byte OP_WIDE
- 另请参阅:
- 常量字段值
-
OP_MULTIANEWARRAY
public static final byte OP_MULTIANEWARRAY
- 另请参阅:
- 常量字段值
-
OP_IFNULL
public static final byte OP_IFNULL
- 另请参阅:
- 常量字段值
-
OP_IFNONNULL
public static final byte OP_IFNONNULL
- 另请参阅:
- 常量字段值
-
OP_GOTO_W
public static final byte OP_GOTO_W
- 另请参阅:
- 常量字段值
-
OP_JSR_W
public static final byte OP_JSR_W
- 另请参阅:
- 常量字段值
-
NAMES
public static final java.lang.String[] NAMES
-
ARRAY_T_BOOLEAN
public static final byte ARRAY_T_BOOLEAN
- 另请参阅:
- 常量字段值
-
ARRAY_T_CHAR
public static final byte ARRAY_T_CHAR
- 另请参阅:
- 常量字段值
-
ARRAY_T_FLOAT
public static final byte ARRAY_T_FLOAT
- 另请参阅:
- 常量字段值
-
ARRAY_T_DOUBLE
public static final byte ARRAY_T_DOUBLE
- 另请参阅:
- 常量字段值
-
ARRAY_T_BYTE
public static final byte ARRAY_T_BYTE
- 另请参阅:
- 常量字段值
-
ARRAY_T_SHORT
public static final byte ARRAY_T_SHORT
- 另请参阅:
- 常量字段值
-
ARRAY_T_INT
public static final byte ARRAY_T_INT
- 另请参阅:
- 常量字段值
-
ARRAY_T_LONG
public static final byte ARRAY_T_LONG
- 另请参阅:
- 常量字段值
-
opcode
public byte opcode
-
-
方法详细资料
-
equals
public abstract boolean equals(java.lang.Object o)
- 覆盖:
equals在类中java.lang.Object
-
hashCode
public abstract int hashCode()
- 覆盖:
hashCode在类中java.lang.Object
-
canonicalOpcode
public byte canonicalOpcode()
Returns the canonical opcode of this instruction, i.e. typically the opcode whose extension has been removed.
-
actualOpcode
public byte actualOpcode()
Returns the actual opcode of this instruction, i.e. the opcode that is stored in the bytecode.
-
shrink
public abstract Instruction shrink()
Shrinks this instruction to its shortest possible form.- 返回:
- this instruction.
-
write
public final void write(CodeAttribute codeAttribute, int offset)
Writes the Instruction at the given offset in the given code attribute.
-
write
public void write(byte[] code, int offset)Writes the Instruction at the given offset in the given code array.
-
isWide
protected boolean isWide()
Returns whether the instruction is wide, i.e. preceded by a wide opcode. With the current specifications, only variable instructions can be wide.
-
readInfo
protected abstract void readInfo(byte[] code, int offset)Reads the data following the instruction opcode.
-
writeInfo
protected abstract void writeInfo(byte[] code, int offset)Writes data following the instruction opcode.
-
length
public abstract int length(int offset)
Returns the length in bytes of the instruction.
-
accept
public abstract void accept(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, InstructionVisitor instructionVisitor)
Accepts the given visitor.
-
toString
public java.lang.String toString(Clazz clazz, int offset)
Returns a description of the instruction, at the given offset.
-
toString
public java.lang.String toString(int offset)
Returns a description of the instruction, at the given offset.
-
getName
public java.lang.String getName()
Returns the name of the instruction.
-
mayThrowExceptions
public boolean mayThrowExceptions()
Returns whether the instruction may conservatively throw exceptions.
-
mayInstanceThrowExceptions
public boolean mayInstanceThrowExceptions(Clazz clazz)
Returns whether a particular instance of an instruction may throw exceptions.
-
isCategory2
public boolean isCategory2()
Returns whether the instruction is a Category 2 instruction. This means that it operates on long or double arguments.
-
stackPopCount
public int stackPopCount(Clazz clazz)
Returns the number of entries popped from the stack during the execution of the instruction.
-
stackPushCount
public int stackPushCount(Clazz clazz)
Returns the number of entries pushed onto the stack during the execution of the instruction.
-
stackEntryIndexBefore
public int stackEntryIndexBefore(Clazz clazz, int stackEntryIndexAfter)
Returns the stack entry index from which the specified stack entry is copied by a dup/swap/checkcast instruction, or -1 otherwise. Stack entry indices are counted from the top of the stack.- checkcast: after: 0 (before: 0 ) -- not anymore
- dup: after: 0 0 (before: 0 )
- dup_x1: after: 0 1 0 (before: 1 0 )
- dup_x2: after: 0 2 1 0 (before: 2 1 0 )
- dup2: after: 1 0 1 0 (before: 1 0 )
- dup2_x1: after: 1 0 2 1 0 (before: 2 1 0 )
- dup2_x2: after: 1 0 3 2 1 0 (before: 3 2 1 0)
-
readByte
protected static int readByte(byte[] code, int offset)
-
readShort
protected static int readShort(byte[] code, int offset)
-
readInt
protected static int readInt(byte[] code, int offset)
-
readValue
protected static int readValue(byte[] code, int offset, int valueSize)
-
readSignedByte
protected static int readSignedByte(byte[] code, int offset)
-
readSignedShort
protected static int readSignedShort(byte[] code, int offset)
-
readSignedValue
protected static int readSignedValue(byte[] code, int offset, int valueSize)
-
writeByte
protected static void writeByte(byte[] code, int offset, int value)
-
writeShort
protected static void writeShort(byte[] code, int offset, int value)
-
writeInt
protected static void writeInt(byte[] code, int offset, int value)
-
writeValue
protected static void writeValue(byte[] code, int offset, int value, int valueSize)
-
writeSignedByte
protected static void writeSignedByte(byte[] code, int offset, int value)
-
writeSignedShort
protected static void writeSignedShort(byte[] code, int offset, int value)
-
writeSignedValue
protected static void writeSignedValue(byte[] code, int offset, int value, int valueSize)
-
-