Enum Class IntEqualOpGen

java.lang.Object
java.lang.Enum<IntEqualOpGen>
ghidra.pcode.emu.jit.gen.op.IntEqualOpGen
All Implemented Interfaces:
BinOpGen<JitIntEqualOp>, CompareIntBinOpGen<JitIntEqualOp>, OpGen<JitIntEqualOp>, Serializable, Comparable<IntEqualOpGen>, Constable, org.objectweb.asm.Opcodes

public enum IntEqualOpGen extends Enum<IntEqualOpGen> implements CompareIntBinOpGen<JitIntEqualOp>
The generator for a int_equal.

This uses the integer comparison operator generator and simply emits Opcodes.IF_ICMPEQ or Opcodes.IFEQ depending on the type.

  • Nested Class Summary

    Nested classes/interfaces inherited from class java.lang.Enum

    Enum.EnumDesc<E extends Enum<E>>
  • Enum Constant Summary

    Enum Constants
    Enum Constant
    Description
    The generator singleton
  • Field Summary

    Fields inherited from interface org.objectweb.asm.Opcodes

    AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MANDATED, ACC_MODULE, ACC_NATIVE, ACC_OPEN, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_RECORD, ACC_STATIC, ACC_STATIC_PHASE, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_TRANSITIVE, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASM10_EXPERIMENTAL, ASM4, ASM5, ASM6, ASM7, ASM8, ASM9, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, H_GETFIELD, H_GETSTATIC, H_INVOKEINTERFACE, H_INVOKESPECIAL, H_INVOKESTATIC, H_INVOKEVIRTUAL, H_NEWINVOKESPECIAL, H_PUTFIELD, H_PUTSTATIC, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, IMUL, INEG, INSTANCEOF, INTEGER, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SOURCE_DEPRECATED, SOURCE_MASK, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V_PREVIEW, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V9
  • Method Summary

    Modifier and Type
    Method
    Description
    int
    The JVM opcode to perform the conditional jump for signed integers.
    int
    The JVM opcode to perform the conditional jump for unsigned or long integers.
    boolean
    Whether the comparison of p-code integers is signed
    Returns the enum constant of this class with the specified name.
    static IntEqualOpGen[]
    Returns an array containing the constants of this enum class, in the order they are declared.

    Methods inherited from class java.lang.Object

    getClass, notify, notifyAll, wait, wait, wait

    Methods inherited from interface ghidra.pcode.emu.jit.gen.op.BinOpGen

    generateRunCode

    Methods inherited from interface ghidra.pcode.emu.jit.gen.op.CompareIntBinOpGen

    afterLeft, generateBinOpRunCode, generateIntJump, generateLongJump

    Methods inherited from interface ghidra.pcode.emu.jit.gen.op.OpGen

    generateInitCode
  • Enum Constant Details

    • GEN

      public static final IntEqualOpGen GEN
      The generator singleton
  • Method Details

    • values

      public static IntEqualOpGen[] values()
      Returns an array containing the constants of this enum class, in the order they are declared.
      Returns:
      an array containing the constants of this enum class, in the order they are declared
    • valueOf

      public static IntEqualOpGen valueOf(String name)
      Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)
      Parameters:
      name - the name of the enum constant to be returned.
      Returns:
      the enum constant with the specified name
      Throws:
      IllegalArgumentException - if this enum class has no constant with the specified name
      NullPointerException - if the argument is null
    • isSigned

      public boolean isSigned()
      Description copied from interface: CompareIntBinOpGen
      Whether the comparison of p-code integers is signed

      If the comparison is unsigned, we will emit invocations of Integer.compareUnsigned(int, int) or Long.compareUnsigned(long, long), followed by a conditional jump corresponding to this p-code comparison op. If the comparison is signed, and the type fits in a JVM int, we emit the conditional jump of ints directly implementing this p-code comparison op. If the type requires a JVM long, we first emit an lcmp, followed by the same opcode that would be used in the unsigned case.

      Specified by:
      isSigned in interface CompareIntBinOpGen<JitIntEqualOp>
      Returns:
      true if signed, false if not
    • icmpOpcode

      public int icmpOpcode()
      Description copied from interface: CompareIntBinOpGen
      The JVM opcode to perform the conditional jump for signed integers.
      Specified by:
      icmpOpcode in interface CompareIntBinOpGen<JitIntEqualOp>
      Returns:
      the opcode
    • ifOpcode

      public int ifOpcode()
      Description copied from interface: CompareIntBinOpGen
      The JVM opcode to perform the conditional jump for unsigned or long integers. This is emitted after the application of Opcodes.LCMP or the comparator method.
      Specified by:
      ifOpcode in interface CompareIntBinOpGen<JitIntEqualOp>
      Returns:
      the opcode