Java ASM字节码库中用于确定操作码性质的实用方法?

Java ASM字节码库中用于确定操作码性质的实用方法?,java,java-bytecode-asm,bytecode-manipulation,Java,Java Bytecode Asm,Bytecode Manipulation,ASM中是否存在允许我从操作码推断指令是某种存储、加载还是其他类型的utils类 例如,考虑以下代码(来自ASM) 使用Utils.isConst(操作码)或Utils.isLoad(操作码)或Utils.isStore(操作码)等方法会很方便 ASM中有类似的功能吗?请查看。它将操作码转换为更粗粒度的方法调用。Hmm。它似乎是为生成代码而定制的。我实际上需要它来进行某种分析(例如,当给定操作码X时,知道它是存储还是加载)。 /** * Visits a zero operand instru

ASM中是否存在允许我从操作码推断指令是某种存储、加载还是其他类型的utils类

例如,考虑以下代码(来自ASM)

使用Utils.isConst(操作码)或Utils.isLoad(操作码)或Utils.isStore(操作码)等方法会很方便


ASM中有类似的功能吗?

请查看。它将操作码转换为更粗粒度的方法调用。

Hmm。它似乎是为生成代码而定制的。我实际上需要它来进行某种分析(例如,当给定操作码X时,知道它是存储还是加载)。
/**
 * Visits a zero operand instruction.
 *
 * @param opcode the opcode of the instruction to be visited. This opcode is
 *        either 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, IALOAD, LALOAD, FALOAD,
 *        DALOAD, AALOAD, BALOAD, CALOAD, SALOAD, 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,
 *        I2L, I2F, I2D, L2I, L2F, L2D, F2I, F2L, F2D, D2I, D2L, D2F, I2B,
 *        I2C, I2S, LCMP, FCMPL, FCMPG, DCMPL, DCMPG, IRETURN, LRETURN,
 *        FRETURN, DRETURN, ARETURN, RETURN, ARRAYLENGTH, ATHROW,
 *        MONITORENTER, or MONITOREXIT.
 */
public void visitInsn(int opcode) {
    if (mv != null) {
        mv.visitInsn(opcode);
    }
}