Package ghidra.pcode.emu.jit.gen.op

# Enum Class IntSLessOpGen

java.lang.Object
java.lang.Enum<IntSLessOpGen>
ghidra.pcode.emu.jit.gen.op.IntSLessOpGen

All Implemented Interfaces:
  `BinOpGen<JitIntSLessOp>`, `CompareIntBinOpGen<JitIntSLessOp>`, `IntBinOpGen<JitIntSLessOp>`, `OpGen<JitIntSLessOp>`, `Serializable`, `Comparable<IntSLessOpGen>`, `Constable`, `org.objectweb.asm.Opcodes`

public enum IntSLessOpGen extends Enum<IntSLessOpGen> implements CompareIntBinOpGen<JitIntSLessOp>
The generator for a `int_sless`.

This uses the integer comparison operator generator and simply emits `Opcodes.IF_ICMPLT` or `Opcodes.IFLT` depending on the type.

- ## Nested Class Summary

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

  `Enum.EnumDesc<E extends Enum<E>>`

  ## Nested classes/interfaces inherited from interface ghidra.pcode.emu.jit.gen.op.BinOpGen

  `BinOpGen.TakeOut`

- ## Enum Constant Summary

  Enum Constants
  Enum Constant
  Description
  `GEN`
  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`
  `icmpOpcode()`
  The JVM opcode to perform the conditional jump for signed integers.
  `int`
  `ifOpcode()`
  The JVM opcode to perform the conditional jump for unsigned or long integers.
  `boolean`
  `isSigned()`
  Whether this operator is signed
  `static IntSLessOpGen`
  `valueOf(String name)`
  Returns the enum constant of this class with the specified name.
  `static IntSLessOpGen[]`
  `values()`
  Returns an array containing the constants of this enum class, in the order they are declared.

  ### Methods inherited from class java.lang.Enum

  `clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf`

  ### Methods inherited from class java.lang.Object

  `getClass, notify, notifyAll, wait, wait, wait`

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

  `ext, generateRunCode, rExt`

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

  `afterLeft, generateBinOpRunCode, generateIntCmp, generateIntJump, generateLongJump, generateMpIntCmp`

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

  `generateInitCode`

- ## Enum Constant Details

  - ### GEN

    public static final IntSLessOpGen GEN
    The generator singleton

- ## Method Details

  - ### values

    public static IntSLessOpGen[] 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 IntSLessOpGen 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 this operator is signed

    In many cases, the operator itself is not affected by the signedness of the operands; however, if size adjustments to the operands are needed, this can determine how those operands are extended.

    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 `BinOpGen<JitIntSLessOp>`
    Specified by:
      `isSigned` in interface `CompareIntBinOpGen<JitIntSLessOp>`
    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<JitIntSLessOp>`
    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<JitIntSLessOp>`
    Returns:
      the opcode