Uses of Interface
com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric
Packages that use IEGeneric
Package
Description
This package and its sub-packages contain the types used to access
gendec
, JEB's generic
decompiler.Types used to create and access
gendec
's IR (Intermediate Representation).Types used by the IR template and IR compiler.
Types specific to
gendec
's IR optimizers.-
Uses of IEGeneric in com.pnfsoftware.jeb.core.units.code.asm.decompiler
Methods in com.pnfsoftware.jeb.core.units.code.asm.decompiler that return IEGenericModifier and TypeMethodDescriptionprotected IEGeneric
AbstractConverter.convertOperand
(long insnAddress, InsnType insn, int opndIndex) This method is called by theAbstractConverter<InsnType extends IInstruction>.com.pnfsoftware.jeb.core.units.code.asm.decompiler.AbstractConverter.AutoConverter
.AbstractConverter.convertReturnLocation
(IERoutineContext ctx, IWildcardPrototype prototype) IEConverter.convertReturnLocation
(IERoutineContext ctx, IWildcardPrototype prototype) Given a prototype, determine the IR expression representing the return address location of a call to a method of said prototype.IERoutineContext.getInputVariableForRegister
(IDFA<IEStatement> dfa, long nativeRegId) IERoutineContext.getInputVariableForRegister
(IDFA<IEStatement> dfa, IEVar reg) IERoutineContext.getOutputVariableForRegister
(IDFA<IEStatement> dfa, long exitAddress, int nativeRegId) IERoutineContext.getOutputVariableForRegister
(IDFA<IEStatement> dfa, long exitAddress, IEVar reg) final IEGeneric
AbstractConverter.getRegister
(String name) AbstractConverter.getRegister
(String name, ELocation loc) The default implementation forwards toIEGlobalContext.getVariableByName(String)
.IEConverter.getRegister
(String name) IEConverter.getRegister
(String name, ELocation loc) Retrieve anIEVar
-register by its name.final IEGeneric
AbstractConverter.getRegisterVariableFromNativeRegisterId
(long nativeRegId) AbstractConverter.getRegisterVariableFromNativeRegisterId
(long nativeRegId, ELocation loc) The default implementation attempts to resolve the native register id or number by querying the associated processor's register bank layout.IEConverter.getRegisterVariableFromNativeRegisterId
(long nativeRegId) IEConverter.getRegisterVariableFromNativeRegisterId
(long nativeRegId, ELocation loc) Get theIEVar
-register IR variable representing a native platform register number or id (as defined in a register bank layout).AbstractConverter.normalizeBranchingExpression
(IDFA<IEStatement> dfa, BasicBlock<IEStatement> b, IEGeneric target, IEGeneric expectedTarget) IEConverter.normalizeBranchingExpression
(IDFA<IEStatement> dfa, BasicBlock<IEStatement> b, IEGeneric callsite, IEGeneric expectedTarget) Normalize a branching expression.IERoutineContext.retrieveVariableForRegister
(IEGeneric reg, Collection<Integer> filters, boolean createIfNotFound) Methods in com.pnfsoftware.jeb.core.units.code.asm.decompiler that return types with arguments of type IEGenericModifier and TypeMethodDescriptionAbstractConverter.convertParameterExpressions
(IERoutineContext ctx, IWildcardPrototype prototype, INativeMethodItem targetRoutine, List<IWildcardType> varArgTypes) IEConverter.convertParameterExpressions
(IERoutineContext ctx, IWildcardPrototype prototype, INativeMethodItem targetRoutine, List<IWildcardType> varArgTypes) Given a prototype, determine the list of IR expressions representing the input expressions (would also contain implicitly read registers).AbstractConverter.convertReturnExpressions
(IERoutineContext ctx, IWildcardPrototype prototype, INativeMethodItem targetRoutine, List<IWildcardType> varArgTypes, List<IEGeneric> outSpoiled) IEConverter.convertReturnExpressions
(IERoutineContext ctx, IWildcardPrototype prototype, INativeMethodItem targetRoutine, List<IWildcardType> varArgTypes, List<IEGeneric> outSpoiled) Given a prototype, determine the list of IR expressions representing the output expressions.IERoutineContext.getRoutineInputVariables()
Retrieve the IR expressions holding the routine's parameters.Methods in com.pnfsoftware.jeb.core.units.code.asm.decompiler with parameters of type IEGenericModifier and TypeMethodDescriptionAbstractNativeDecompilerExtension.collectCandidateMemoryDerefs
(IEGeneric exp, EDefUseInfo defuse, boolean isDef) The default implementation does nothing and requests continuation.INativeDecompilerExtension.collectCandidateMemoryDerefs
(IEGeneric exp, EDefUseInfo defuse, boolean isDef) This method is called potentially-used/defined variables (candidates) are being collected forIEMem
IR expressions.IERoutineContext.createAssign
(IEGeneric dst, IEGeneric src) IERoutineContext.createAssignIf
(IEAssign assignTpl, IEGeneric predicate) IERoutineContext.createBranchAssign
(IEGeneric dst, IEGeneric src, boolean subroutineCall) IERoutineContext.createBuiltinMethodCall
(String name, IEGeneric retexp, IEGeneric... argexps) Create aCall
to a built-in method reference.IERoutineContext.createCall
(IEGeneric callsite, IEGeneric retloc, List<IEGeneric> returns, List<IEGeneric> params, int stackPointerDelta, List<IEGeneric> spoiledExpressions, IWildcardPrototype prototype) IERoutineContext.createCall
(IEGeneric callsite, List<IEVar> targetCandidates, IWildcardPrototype prototype, List<IWildcardType> varArgTypes, boolean failsafePrototype) IEGlobalContext.createCompose
(IEGeneric... elts) Create a composition of IR elements.IERoutineContext.createCompose
(IEGeneric... elts) Create a composition.IEGlobalContext.createCond
(IEGeneric p, IEGeneric a, IEGeneric b) IERoutineContext.createCond
(IEGeneric p, IEGeneric a, IEGeneric b) IEGlobalContext.createConversionOperation
(OperationType convOperator, IEGeneric src, int dstSize) Create a conversion operation: an integer truncation, integer extension (zero or signed), float truncation or extension, float-to-int and int-to-float conversion.IERoutineContext.createConversionOperation
(OperationType convOperator, IEGeneric src, int dstSize) Create a conversion operation: an integer truncation, integer extension (zero or signed), float truncation or extension, float-to-int and int-to-float conversion.IEGlobalContext.createGroupElt
(IEGroup collection, IEGeneric index) IERoutineContext.createGroupElt
(IEGroup collection, IEGeneric index) IERoutineContext.createJump
(int branchAddress, IEGeneric condition) IERoutineContext.createJumpFar
(IEGeneric jumpSite) IERoutineContext.createJumpFar
(IEGeneric jumpSite, IEGeneric condition) IEGlobalContext.createOperation
(FunctionOptype functionOptype, IEGeneric... opnds) IEGlobalContext.createOperation
(OperationType optype, IEGeneric op1) IEGlobalContext.createOperation
(OperationType optype, IEGeneric op1, IEGeneric op2) IERoutineContext.createOperation
(FunctionOptype functionOptype, IEGeneric... opnds) IERoutineContext.createOperation
(OperationType optype, IEGeneric op1) IERoutineContext.createOperation
(OperationType optype, IEGeneric op1, IEGeneric op2) IEGlobalContext.createResizeOperation
(IEGeneric opnd, int bitsize, boolean signed) Create a resize operation operation: truncation, zero-extension, or sign-extension.IERoutineContext.createResizeOperation
(IEGeneric opnd, int bitsize, boolean signed) Create a resize operation operation: truncation, zero-extension, or sign-extension.IERoutineContext.createReturn
(IEGeneric value) IEGlobalContext.createSlice
(IEGeneric e, int bitstart, int bitend) IEGlobalContext.createSlice
(IEGeneric e, IERange range) AbstractConverter.createStackMemoryAccess
(IEGeneric address, int bitsize) The default implementation assumes a segment-less memory model.IEConverter.createStackMemoryAccess
(IEGeneric address, int bitsize) Create an EMem using the adequate segment register (if any) for the current converter.IERoutineContext.createSwitch
(IEGeneric controlExpression, int defaultAddress) IERoutineContext.createUntranslatedInstruction
(long nativeAddress, String nativeMnemonic, IEGeneric... irOperands) protected final boolean
AbstractConverter.isPCRightValueCompatibleReturnValue
(IDFA<IEStatement> dfa, BasicBlock<IEStatement> b, IEGeneric PCRightVal, IEGeneric expectedReturnAddress) Can be overridden by implementors when complex return expression matching is needed.AbstractConverter.normalizeBranchingExpression
(IDFA<IEStatement> dfa, BasicBlock<IEStatement> b, IEGeneric target, IEGeneric expectedTarget) IEConverter.normalizeBranchingExpression
(IDFA<IEStatement> dfa, BasicBlock<IEStatement> b, IEGeneric callsite, IEGeneric expectedTarget) Normalize a branching expression.IERoutineContext.retrieveVariableForRegister
(IEGeneric reg, Collection<Integer> filters, boolean createIfNotFound) void
IERoutineContext.setTypeForSame
(IEGeneric exp, IWildcardType type) Method parameters in com.pnfsoftware.jeb.core.units.code.asm.decompiler with type arguments of type IEGenericModifier and TypeMethodDescriptionIERoutineContext.createCall
(IEGeneric callsite, IEGeneric retloc, List<IEGeneric> returns, List<IEGeneric> params, int stackPointerDelta, List<IEGeneric> spoiledExpressions, IWildcardPrototype prototype) IEGlobalContext.createCompose
(Collection<IEGeneric> elts) IERoutineContext.createCompose
(Collection<IEGeneric> elts) Create a composition.IERoutineContext.createReturn
(List<IEGeneric> values) -
Uses of IEGeneric in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir
Subinterfaces of IEGeneric in com.pnfsoftware.jeb.core.units.code.asm.decompiler.irModifier and TypeInterfaceDescriptioninterface
IR expression representing an assignment.interface
IR statement used to represent calls to sub-routines.interface
Composition of two or more IR expressions.interface
This IR expression represents the ternary conditional expression.interface
interface
This IR represents the element of anIEGroup
.interface
A terminal IR representing an immediate value.interface
IR expression representing an intra-procedural jump to a fixed IR target.interface
A conditional branching instruction to an arbitrary IR representing a native address.interface
Base interface used to represent IR short or long jumps.interface
An IR expression representing a dereference to a sized memory area.interface
A no-operation IR instruction.interface
An IR operation.interface
This IR object represents immutable integer range object.interface
A routine terminator.interface
This IR represents a slice of another IR expression.interface
Base class for all IR statements.interface
Switch (branch to N sites) IR statement.interface
Special IR statement that can be used to wrap non-standard, partially translated, or untranslated native code instructions.interface
Representation of an IR variable.Methods in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir with type parameters of type IEGenericModifier and TypeMethodDescription<T extends IEGeneric>
TIEGeneric.findByType
(Class<T> clazz) Find the first child element by type.<T extends IEGeneric>
TIEGeneric.findByType
(Class<T> clazz, int start) Find a child element by type.Methods in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir that return IEGenericModifier and TypeMethodDescriptionIEGeneric.bit
(int pos) Retrieve a one bit value at the pos positionstatic IEGeneric
EUtil.buildCarryFlag
(IEGeneric a, IEGeneric b, IEGeneric result, boolean addition, boolean nativeOp) Generate an IR expression computing the carry flag bit of an integer addition or subtraction operation.static IEGeneric
EUtil.buildOverflowFlag
(IEGeneric a, IEGeneric b, IEGeneric result, boolean addition) Generate an IR expression computing the overflow flag bit of an integer addition or subtraction operation.static IEGeneric
EUtil.checkFalse
(IEGeneric e) static IEGeneric
static IEGeneric
EUtil.cmpFloat
(OperationType op, IEGeneric op1, IEGeneric op2) static IEGeneric
EUtil.compose
(IERoutineContext ctx, IEGeneric... elts) Create a composition if the provided list of elements contains at least two entries, else return the single element.static IEGeneric
EUtil.compose
(IERoutineContext ctx, Collection<IEGeneric> elts) Create a composition if the provided list of elements contains at list two entries, else return the single element.IEGeneric.duplicate()
Clone (deep copy) the expression.static IEGeneric
Extend anIEGeneric
.IEGeneric.findParent
(IEGeneric elt) Find the parent of the first instance of the provided child element.IEGeneric.findParent
(IEGeneric elt, int start) Find the parent of the the provided child element.IECall.getArgument
(int index) Get the Nth argument of this ECall.static IEGeneric
EUtil.getAssignmentDestination
(IEStatement stm) Retrieve the destination of anIEAssign
(or null if is not an assignment).static IEGeneric
EUtil.getAssignmentSource
(IEStatement stm) Retrieve the source of anIEAssign
(or null if is not an assignment).IECall.getCallSite()
IECond.getCondition()
Retrieve the condition, thec
expression inc ? exprTrue : exprFalse
IEJumpWithOptionalCondition.getCondition()
IESwitch.getControlExpression()
IEAssign.getDstOperand()
Retrieve the destination operand of this assignment.ETypeInfo.Entry.getElement()
IEGroup.getElement
(int index) IECond.getExpressionFalse()
Retrieve the expression when false, theexprFalse
expression inc ? exprTrue : exprFalse
IECond.getExpressionTrue()
Retrieve the expression when true, theexprTrue
expression inc ? exprTrue : exprFalse
IECompose.getHighPart()
Get the highest bits component.IEGroupElt.getIndex()
EVarCopyFinder.getIRForSlicedReg
(boolean createIfNotFound) IEJumpFar.getJumpsite()
IEAssign.getLeftOperand()
Retrieve the destination operand of this assignment.IECompose.getLowPart()
Get the lowest bits component.IEOperation.getOperand
(int index) Retrieve an operand by index.IEOperation.getOperand1()
Retrieve the first operand.IEOperation.getOperand2()
Retrieve the second operand.IEUntranslatedInstruction.getParameterExpression
(int index) IECompose.getPart
(int index) Get a part by index.IEMem.getReference()
Retrieve Memory address of thisIEMem
IECall.getReturnExpression
(int index) Get the Nth return expression of this ECall.IEUntranslatedInstruction.getReturnExpression()
Retrieve the primary return expression (if the IR returns a tuple, the primary return expression if the first item in the tuple).IECall.getReturnLocation()
Retrieve the return address for this call.IEAssign.getRightOperand()
Retrieve the source operand of this assignment.IEMem.getSegment()
Retrieve Memory segment (offset) from memory address.static IEGeneric
EUtil.getSignExtensionBase
(IECompose e) Check if the composition is a sign-extension of a base expression, and if so, provide the base expression.static IEGeneric
EUtil.getSignExtensionBase
(IEGeneric e) Check if an IR expression looks like a sign-extension operation, and if so, provide the base expression.static IEGeneric
EUtil.getSignExtensionBase
(IEGeneric base, IEGeneric extend) Check if the composition of both expressions make up a sign-extension, and if so, provide the base expression.IEAssign.getSrcOperand()
Retrieve the source operand of this assignment.IEReturn.getValue()
Get the primary return value expression.IESlice.getWholeExpression()
Retrieve the unsliced expression.IEGeneric.half()
Retrieve the lower half-part of this IRE.static IEGeneric
static IEGeneric
As per IEEE 754-1985 floating-point standard, is NaN a number which exponent is filled with ones and a non-zero number in the mantissaIEGeneric.leftShift
(int shift) left shift of an expressionIEGeneric.leftShift
(int shift, int bitsize) left shift of an expression, with an optionalslice(int, int)
IEGeneric.lsb()
Return the least significant bit (lsb) of an expression.IEGeneric.msb()
Return the most significant bit (msb) of an expression.static IEGeneric
static IEGeneric
static IEGeneric
IEGeneric.part
(int cnt) Equivalent toslice(0, cnt)
static IEGeneric
EUtil.replaceSubExpressionRecursive
(IEGeneric stm, IEGeneric src, IEGeneric dst) static IEGeneric
EUtil.replaceSubExpressionRecursive
(IEGeneric stm, IEGeneric src, IEGeneric dst, EVisitResults results) static IEGeneric
EVarCopyFinder.retrieveVariableForRegister
(IERoutineContext ctx, IEGeneric exp, Collection<Integer> filters, boolean createIfNotFound, Long irOffset) static IEGeneric
EUtil.reversePredicate
(IEGeneric predicate) IEGeneric.rightShift
(int shift) right shift of an expressionIEGeneric.rightShift
(int shift, int bitsize) right shift of an expression, with an optionalslice(int, int)
static IEGeneric
EUtil.safeExtend
(IEGeneric a, int bitsize, boolean signExtend) Safely extend anIEGeneric
.static IEGeneric
Sign-extend operation IRE.IEGeneric.signExtend
(int newBitsize) Sign extend the currentIEGeneric
.IEGeneric.slice
(int begin) Equivalent toslice(begin,
.bitsize
)IEGeneric.slice
(int begin, int end) Slice of anIEGeneric
.Slice of anIEGeneric
.IEGeneric.topHalf()
Retrieve the top half-part of this IRE.static IEGeneric
Truncate operation IRE.static IEGeneric
Zero-extend operation IRE.IEGeneric.zeroExtend
(int newBitsize) Zero extend the currentIEGeneric
Methods in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir that return types with arguments of type IEGenericModifier and TypeMethodDescriptionFind the parent of the the provided child element.Find the parent of the the provided child element.IECall.getArguments()
Retrieve a read-only list of arguments provided to this ECall.IESwitch.getCases()
IEGroup.getElements()
IEOperation.getOperands()
Retrieve the list of operands.IEUntranslatedInstruction.getParameterExpressions()
EUtil.getParents
(IEGeneric expression, IEGeneric value) Retrieve all the parents of a value.IECompose.getParts()
Get a read-only, copy-list of the parts that make up this composition, from lowest bits to highest bits.IECall.getReturnExpressions()
Retrieve a read-only list of return expressions.IEUntranslatedInstruction.getReturnExpressions()
Get the tuple returned by this IR.IECall.getSpoiledExpressions()
Retrieve a read-only list of expressions spoiled by this ECall.EUtil.getSubExpressions
(IEGeneric e) Collect the sub-expressions of an IRE.IEReturn.getValues()
Get the list of return value expressions.Methods in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir with parameters of type IEGenericModifier and TypeMethodDescriptionstatic IECond
EUtil.abs
(IERoutineContext ctx, IEGeneric a) OperationMath#abs(int, int)
applied toIEGeneric
static IEOperation
static IEOperation
void
static IEOperation
static IEOperation
static IEGeneric
EUtil.buildCarryFlag
(IEGeneric a, IEGeneric b, IEGeneric result, boolean addition, boolean nativeOp) Generate an IR expression computing the carry flag bit of an integer addition or subtraction operation.static IEGeneric
EUtil.buildOverflowFlag
(IEGeneric a, IEGeneric b, IEGeneric result, boolean addition) Generate an IR expression computing the overflow flag bit of an integer addition or subtraction operation.static int
EUtil.calculateComplexity
(IEGeneric e) Calculate the trivial complexity metric for the provided IR expression.static IEGeneric
EUtil.checkFalse
(IEGeneric e) static IEGeneric
static IEGeneric
EUtil.cmpFloat
(OperationType op, IEGeneric op1, IEGeneric op2) EUtil.collectVars
(IEGeneric e) static void
EUtil.collectVars
(IEGeneric e, Collection<IEVar> sink) Collect all EVars of an expression.static IEGeneric
EUtil.compose
(IERoutineContext ctx, IEGeneric... elts) Create a composition if the provided list of elements contains at least two entries, else return the single element.static boolean
Indicates if the target expression contains any token expressionstatic boolean
EUtil.containsMemoryAccess
(IEGeneric e) Indicates if the generic expression contains any memory access (meaningIEMem
)static boolean
EUtil.containsUndeterminedInvocations
(IEGeneric e) Indicates if the generic expression invokes any undetermined kind of call (meaningIECall
,IEJumpFar
orIEUntranslatedInstruction
)void
IEGeneric.copyProperties
(IEGeneric srcExp) Copy the base properties from the provided IR source expression to this expression.static int
EUtil.countExpressionPresence
(IEGeneric e, IEGeneric target) Recursively count (using deep equality) how many times the provided target is seen in the input expression.static void
EUtil.countExpressionsPresence
(IEGeneric e, List<IEGeneric> targets, int[] acounts) Recursively count (using deep equality) how many times each of the provided targets is seen in the input expression.static int
EUtil.countSubExpressions
(IEGeneric e) Collect sub-expressions of the input expression and return the cardinal of that collection.static int
EUtil.countVariablePresence
(IEGeneric e, IEVar target) Count the number of times anIEVar
is present in an expression.static int
EUtil.countVariableUse
(IEGeneric e) static IEOperation
EUtil.createConversionOperation
(OperationType convOperator, IEGeneric src, int dstSize) Create a conversion operation: an integer truncation, integer extension (zero or signed), float truncation or extension, float-to-int and int-to-float conversion.static IEOperation
EUtil.createResizeOperation
(IEGeneric src, int dstSize, boolean signed) Create a resize operation operation: truncation, zero-extension, or sign-extension.static IEOperation
static IEOperation
static IEOperation
IEAssign.duplicateWithNewOperands
(IEGeneric dst, IEGeneric src) static IEOperation
static IEImm
EUtil.evaluate_preVerified
(IEGeneric e) static IEImm
EUtil.evaluate_preVerified
(IEGeneric e, EState state) static long
EUtil.evaluateAddress_preVerified
(IEGeneric e) static long
EUtil.evaluateAddress_preVerified
(IEGeneric e, EState state) static long
static long
EUtil.evaluateUnsignedLong_preVerified
(IEGeneric e, EState state) static IEGeneric
Extend anIEGeneric
.static IECond
EUtil.fabs
(IERoutineContext ctx, IEGeneric a) OperationMath#abs(float, float)
applied toIEGeneric
Find the parent of the the provided child element.IEGeneric.findParent
(IEGeneric elt) Find the parent of the first instance of the provided child element.IEGeneric.findParent
(IEGeneric elt, int start) Find the parent of the the provided child element.static IECond
EUtil.fmax
(IERoutineContext ctx, IEGeneric a, IEGeneric b) OperationMath.max(float, float)
applied toIEGeneric
static IECond
EUtil.fmin
(IERoutineContext ctx, IEGeneric a, IEGeneric b) OperationMath.min(float, float)
applied toIEGeneric
static IEOperation
static OperationType
EUtil.getOperation
(IEGeneric e, OperationType... optypes) EUtil.getParents
(IEGeneric expression, IEGeneric value) Retrieve all the parents of a value.int
FunctionOptype.getResultBitsize
(IEGeneric... opnds) static IEGeneric
EUtil.getSignExtensionBase
(IEGeneric e) Check if an IR expression looks like a sign-extension operation, and if so, provide the base expression.static IEGeneric
EUtil.getSignExtensionBase
(IEGeneric base, IEGeneric extend) Check if the composition of both expressions make up a sign-extension, and if so, provide the base expression.EUtil.getSubExpressions
(IEGeneric e) Collect the sub-expressions of an IRE.EUtil.getUsedVarIds
(IEGeneric e) static IEVar
EUtil.getVarSlice
(IEGeneric e) static Integer
EUtil.getVarSliceId
(IEGeneric e) static IEOperation
static IEOperation
static IEOperation
static boolean
EUtil.hasExplicitlyUsedVar
(IEGeneric e, IEVar target) static boolean
EUtil.hasNoSideEffect
(IEGeneric e) Determine if an IR expression is side-effect free.static boolean
EUtil.hasNoTypeInfo
(IEGeneric e) Determine if the provided IR expression embeds no amount at all of type information.static boolean
EUtil.hasSameType
(IEGeneric e1, IEGeneric e2) static boolean
EUtil.hasSideEffect
(IEGeneric e) The opposite ofEUtil.hasNoSideEffect(IEGeneric)
.static boolean
EUtil.hasTypeInfo
(IEGeneric e) Determine if the provided IR expression embeds some type information.static IEGeneric
static boolean
EUtil.isAssignedIn
(BasicBlock<IEStatement> bb, IEGeneric checkedDst) Check that an IRE is assigned in a basic block.static boolean
Verify that an IRE is a single-bit immediate set to 1 (technically, -1).static boolean
Verify that an IRE is a single-bit immediate set to 0.static boolean
EUtil.isComparableOperation
(IEGeneric e) ""Boolean"" comparable operation (eq/neq and all greater/lesser comparisons)static boolean
EUtil.isExpressionModified
(IEStatement insn, IEGeneric target, boolean defuse) static boolean
EUtil.isImmediate
(IEGeneric e) static boolean
EUtil.isImmNonZero
(IEGeneric e) static boolean
static boolean
EUtil.isImmValue
(IEGeneric e, long value) static boolean
EUtil.isImmValue
(IEGeneric e, BigInteger value) static boolean
static boolean
static boolean
EUtil.isLikeImmediate
(IEGeneric a) Determine if the IRE is an EImm or a slice or composition of immediates.static boolean
EUtil.isLikeLongImmediate
(IEGeneric e) Determine if the expression is equivalent to an EImm that can be read as along
primitive.static boolean
EUtil.isLikeLongImmediate
(IEGeneric e, boolean unsigned) Determine if the expression is equivalent to an EImm that can be read as along
primitive.static boolean
EUtil.isLogicalOperation
(IEGeneric e) ""Boolean"" operation (and, or, not, eq/neq and all greater/lesser comparisons)static boolean
EUtil.isLongImmediate
(IEGeneric e) Determine if the expression is an EImm that can be read as along
primitive.static boolean
EUtil.isLongImmediate
(IEGeneric e, boolean unsigned) Determine if the expression is an EImm that can be read as along
primitive.static boolean
EUtil.isMatchDuaryOperation
(IEGeneric e, OperationType wantedOperationType, IEGeneric wantedOperand1, IEGeneric wantedOperand2) static boolean
EUtil.isMinusOne
(IEGeneric e) Verify that an IRE is an immediate holding the value -1.static IEGeneric
As per IEEE 754-1985 floating-point standard, is NaN a number which exponent is filled with ones and a non-zero number in the mantissastatic boolean
EUtil.isNotPredicate
(IEGeneric p, IEGeneric p2) Indicate if p == !p2.static boolean
Verify that an IRE is an immediate holding 1.static boolean
EUtil.isOperation
(IEGeneric e, OperationType optype) Determine if theIEGeneric
is anIEOperation
.static boolean
EUtil.isOperation
(IEGeneric e, OperationType... optypes) Determine if theIEGeneric
is anIEOperation
.static boolean
EUtil.isOperationSize
(IEGeneric e, int bitsize) static boolean
EUtil.isStrictLogicalOperation
(IEGeneric e) Logical operations that should have logical operands (and, or, not)static boolean
static boolean
EUtil.isVarOrVarSlice
(IEGeneric e) static boolean
Verify that an IRE is a Zero representation (EImm(0) or ESlice(0, x, x))static boolean
EUtil.isZeroExtend
(IEGeneric e) static IEOperation
static IEOperation
static IEOperation
static IEOperation
static IECond
EUtil.max
(IERoutineContext ctx, IEGeneric a, IEGeneric b, boolean signed) OperationMath.max(int, int)
applied toIEGeneric
static IECond
EUtil.min
(IERoutineContext ctx, IEGeneric a, IEGeneric b, boolean signed) OperationMath.min(int, int)
applied toIEGeneric
static IEOperation
static IEOperation
static IEGeneric
static IEGeneric
static IEGeneric
static IEOperation
EUtil.op
(OperationType operator, IEGeneric a) static IEOperation
EUtil.op
(OperationType operator, IEGeneric a, IEGeneric b) static IEOperation
static IEOperation
static IEOperation
void
ETypeInfo.recordConflict
(String msg, IEGeneric elt, IWildcardType currentType, IWildcardType wantedType) IESwitch.removeCase
(IEGeneric value) static IEOperation
static IEOperation
int
IEStatement.replaceDefinedVar
(IEVar var, IEGeneric repl) Replace (deep) the variables that are defined by this statement.void
IECompose.replacePart
(int index, IEGeneric newPart) Replace a part by index.boolean
IEGeneric.replaceSubExpression
(IEGeneric oldExp, IEGeneric newExp) Shallow replacement, by reference.static IEGeneric
EUtil.replaceSubExpressionRecursive
(IEGeneric stm, IEGeneric src, IEGeneric dst) static IEGeneric
EUtil.replaceSubExpressionRecursive
(IEGeneric stm, IEGeneric src, IEGeneric dst, EVisitResults results) default int
IEStatement.replaceUsedVar
(IEVar var, IEGeneric repl) Replace (deep) the variables that are defined by this statement.int
IEGeneric.replaceVar
(IEVar var, IEGeneric repl) Deep replace.int
IEStatement.replaceVar
(IEVar var, IEGeneric repl, boolean doNotReplaceDefinedVariables) Deep replace.static boolean
EUtil.resolveExpressionsBackward
(Object name, IEConverter<?> conv, List<IEStatement> r, IEGeneric... targets) Apply a list of IEStatements to user targets, resolving expression starting from lastIEStatement
to first.static IEGeneric
EVarCopyFinder.retrieveVariableForRegister
(IERoutineContext ctx, IEGeneric exp, Collection<Integer> filters, boolean createIfNotFound, Long irOffset) static IEGeneric
EUtil.reversePredicate
(IEGeneric predicate) static IEGeneric
EUtil.safeExtend
(IEGeneric a, int bitsize, boolean signExtend) Safely extend anIEGeneric
.static int
EUtil.sameBitsize
(IEGeneric... elts) If all the provided expressions have the same bitsize, return it.static int
EUtil.sameBitsizeAllowNulls
(IEGeneric... elts) If all the provided expressions have the same bitsize, return it.static IEOperation
void
IECall.setCallsite
(IEGeneric callsite) void
IECond.setCondition
(IEGeneric e) void
IEJumpWithOptionalCondition.setCondition
(IEGeneric condition) void
IESwitch.setControlExpression
(IEGeneric controlExpression) void
IECond.setExpressionFalse
(IEGeneric e) void
IECond.setExpressionTrue
(IEGeneric e) void
IEJumpFar.setJumpsite
(IEGeneric jumpSite) void
IEUntranslatedInstruction.setParameterExpressions
(IEGeneric... params) void
IEMem.setReference
(IEGeneric reference) void
IECall.setReturnExpression
(int index, IEGeneric exp) Update a return expression.void
IEUntranslatedInstruction.setReturnExpression
(IEGeneric expression) Set a single return expression.void
IEUntranslatedInstruction.setReturnExpressions
(IEGeneric... expressions) void
IECall.setReturnLocation
(IEGeneric loc) Set the optional return location (address) for the call.void
IEMem.setSegment
(IEGeneric optionalSegment) void
Set the primary return value expression.static IEOperation
static IEOperation
static IEGeneric
Sign-extend operation IRE.static IEOperation
static IEGeneric
Truncate operation IRE.void
FunctionOptype.validateOperands
(IEGeneric... opnds) boolean
IEGeneric.visitDepthPost
(IEVisitor visitor, IEGeneric parent) Depth-first search, post-order visit of an expression tree or sub-tree.boolean
IEGeneric.visitDepthPost
(IEVisitor visitor, IEGeneric parent, EVisitResults results) Depth-first search, post-order visit of an expression tree or sub-tree.boolean
IEGeneric.visitDepthPre
(IEVisitor visitor, IEGeneric parent) Depth-first search, pre-order visit of an expression tree or sub-tree.boolean
IEGeneric.visitDepthPre
(IEVisitor visitor, IEGeneric parent, EVisitResults results) Depth-first search, pre-order visit of an expression tree or sub-tree.static IEOperation
static IEGeneric
Zero-extend operation IRE.Method parameters in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir with type arguments of type IEGenericModifier and TypeMethodDescriptionvoid
IEGeneric.collectSubExpressions
(Collection<IEGeneric> sink) Perform a shallow collection of the sub-expressions of this expression.default void
IEStatement.collectSubExpressions
(Collection<IEGeneric> sink) void
IEStatement.collectSubExpressions
(Collection<IEGeneric> sink, Boolean usedOnly) Perform a shallow collection of the sub-expressions of this statement.void
IEStatement.collectUsedExpressions
(Collection<Couple<IEGeneric, IEGeneric>> sink) Perform a shallow collection of the first-level expressions used by this statement.void
IEStatement.collectUsedExpressions
(Collection<Couple<IEGeneric, IEGeneric>> sink) Perform a shallow collection of the first-level expressions used by this statement.static IEGeneric
EUtil.compose
(IERoutineContext ctx, Collection<IEGeneric> elts) Create a composition if the provided list of elements contains at list two entries, else return the single element.static void
EUtil.countExpressionsPresence
(IEGeneric e, List<IEGeneric> targets, int[] acounts) Recursively count (using deep equality) how many times each of the provided targets is seen in the input expression.default boolean
Visit the constituents of this expression, and check if one of them is passing the provided test.static List<IWildcardType>
EUtil.getWildcardTypes
(IWildcardTypeManager etypeman, Collection<IEGeneric> elts) boolean
EPrototypeHandler.retrieveFromPrototype
(List<IEGeneric> params, List<IWildcardType> rettypes) boolean
IEPrototypeHandler.retrieveFromPrototype
(List<IEGeneric> params, List<IWildcardType> rettypes) Collect parameter EVars and return type(s).void
IEUntranslatedInstruction.setParameterExpressions
(Collection<IEGeneric> params) void
IEUntranslatedInstruction.setReturnExpressions
(List<IEGeneric> expressions) Set the tuple returned by this IR.void
IEReturn.setValues
(Collection<IEGeneric> values) Set the list of return value expressions.Constructors in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir with parameters of type IEGenericModifierConstructorDescriptionEntry
(String msg, IEGeneric elt, IWildcardType currentType, IWildcardType wantedType) -
Uses of IEGeneric in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.compiler
Methods in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.compiler with type parameters of type IEGenericModifier and TypeMethodDescriptionstatic <T extends IEGeneric>
TECompiler.cc
(String s, IEGlobalContext gctx, Class<T> clazz) Convenience method to parse an IR expression or statement.Methods in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.compiler that return IEGenericModifier and TypeMethodDescriptionstatic IEGeneric
ECompiler.cc
(String s, IEGlobalContext gctx) Convenience method to parse an IR expression or statement.Generate an expression using the template and the provided map of IR element nodes.ECompiler.CompiledExpression.getExpression()
EPatternMatcher.getInputExpression()
EPatternMatcher.Result.getInputExpression()
EPatternMatcher.Result.getMatchedExpression()
EPatternMatcher.Result.getMatchedLeaf
(int index) EPatternMatcher.Result.getMatchedParent()
EPatternMatcher.Result.getOptimizedExpression()
Process a matched node.Methods in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.compiler that return types with arguments of type IEGenericModifier and TypeMethodDescriptionEExpressionMatcher.getIRDepthsMap()
EPatternMatcher.getIRDepthsMap()
Methods in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.compiler with parameters of type IEGenericModifier and TypeMethodDescriptionboolean
Determine whether the provided IR expressions match the templatesboolean
Process a matched node.Method parameters in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.compiler with type arguments of type IEGenericModifier and TypeMethodDescriptionvoid
EExpressionMatcher.setIRDepthsMap
(Map<IEGeneric, Integer> IRDepthsMap) void
EPatternMatcher.setIRDepthsMap
(Map<IEGeneric, Integer> iRDepthsMap) Constructors in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.compiler with parameters of type IEGenericModifierConstructorDescriptionCompiledExpression
(IERoutineContext ctx, IEGeneric expr) EPatternMatcher
(EPatternCompiler.EPattern pattern, IEGeneric exp, IERoutineContext ctx) -
Uses of IEGeneric in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.opt
Methods in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.opt that return IEGenericModifier and TypeMethodDescriptionprotected IEGeneric
AbstractEExpressionOptimizer.doSubstitution
(IEGeneric e, SubstitutionDefinition... substitutions) Attempt to apply the first matchingSubstitutionDefinition
on anIEGeneric
expression.AbstractEExpressionOptimizer.EOR.getExpression()
AbstractEExpressionOptimizer.performOnExpression
(IEGeneric exp, IERoutineContext ectx) AbstractEOptimizer.performOnExpression
(IEGeneric exp, IERoutineContext ectx) The default implementation does nothing and returns null.AbstractEPatternOptimizer.performOnExpression
(IEGeneric exp, IERoutineContext ectx) IEOptimizer.performOnExpression
(IEGeneric exp, IERoutineContext ectx) Optimize a single expression.Methods in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.opt with parameters of type IEGenericModifier and TypeMethodDescriptionprotected IEGeneric
AbstractEExpressionOptimizer.doSubstitution
(IEGeneric e, SubstitutionDefinition... substitutions) Attempt to apply the first matchingSubstitutionDefinition
on anIEGeneric
expression.protected abstract AbstractEExpressionOptimizer.EOR
AbstractEExpressionOptimizer.optimizeExpression
(IEGeneric e) Attempt to optimize expressions.AbstractEExpressionOptimizer.performOnExpression
(IEGeneric exp, IERoutineContext ectx) AbstractEOptimizer.performOnExpression
(IEGeneric exp, IERoutineContext ectx) The default implementation does nothing and returns null.AbstractEPatternOptimizer.performOnExpression
(IEGeneric exp, IERoutineContext ectx) IEOptimizer.performOnExpression
(IEGeneric exp, IERoutineContext ectx) Optimize a single expression.void
AbstractEExpressionOptimizer.EOR.safeCopyType
(IEGeneric src)