Package ghidra.pcode.emu.jit.gen.op
Enum Class IntSLessEqualOpGen
- All Implemented Interfaces:
BinOpGen<JitIntSLessEqualOp>
,CompareIntBinOpGen<JitIntSLessEqualOp>
,OpGen<JitIntSLessEqualOp>
,Serializable
,Comparable<IntSLessEqualOpGen>
,Constable
,org.objectweb.asm.Opcodes
public enum IntSLessEqualOpGen
extends Enum<IntSLessEqualOpGen>
implements CompareIntBinOpGen<JitIntSLessEqualOp>
The generator for a
int_slessequal
.
This uses the integer comparison operator generator and simply emits Opcodes.IF_ICMPLE
or
Opcodes.IFLE
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 -
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 TypeMethodDescriptionint
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 the comparison of p-code integers is signedstatic IntSLessEqualOpGen
Returns the enum constant of this class with the specified name.static IntSLessEqualOpGen[]
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 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
The generator singleton
-
-
Method Details
-
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
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 nameNullPointerException
- if the argument is null
-
isSigned
public boolean isSigned()Description copied from interface:CompareIntBinOpGen
Whether the comparison of p-code integers is signedIf the comparison is unsigned, we will emit invocations of
Integer.compareUnsigned(int, int)
orLong.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 anlcmp
, followed by the same opcode that would be used in the unsigned case.- Specified by:
isSigned
in interfaceCompareIntBinOpGen<JitIntSLessEqualOp>
- 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 interfaceCompareIntBinOpGen<JitIntSLessEqualOp>
- 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 ofOpcodes.LCMP
or the comparator method.- Specified by:
ifOpcode
in interfaceCompareIntBinOpGen<JitIntSLessEqualOp>
- Returns:
- the opcode
-