Uses of Interface
com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEStatement
Packages that use IEStatement
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 IEStatement in com.pnfsoftware.jeb.core.units.code.asm.decompiler
Fields in com.pnfsoftware.jeb.core.units.code.asm.decompiler with type parameters of type IEStatementMethods in com.pnfsoftware.jeb.core.units.code.asm.decompiler that return types with arguments of type IEStatementModifier and TypeMethodDescriptionIERoutineContext.buildCfg
(List<IEStatement> statements) Build an IR-CFG using the provided list of statements, and set the resulting CFG as the current CFG for this converted routine.IERoutineContext.buildCfg
(List<IEStatement> statements, boolean subroutineCallNotBreaking, boolean assignToContext) Build an IR-CFG from a list of statements.final List<IEStatement>
AbstractConverter.convertBlockForTest
(BasicBlock<InsnType> b) Reserved for testing.IERoutineContext.getCfg()
IERoutineContext.getStatements()
Retrieve the raw list of converted IR-statements.Methods in com.pnfsoftware.jeb.core.units.code.asm.decompiler with parameters of type IEStatementModifier and TypeMethodDescriptionAbstractNativeDecompilerExtension.augmentSimulationContext
(INativeDecompilerContext decompiler, IERoutineContext ctx, IESimulationResults simulationContext, long offset, IEStatement insn, EState state) The default implementation does nothing and requests continuation.INativeDecompilerExtension.augmentSimulationContext
(INativeDecompilerContext decompiler, IERoutineContext ctx, IESimulationResults simulationContext, long offset, IEStatement insn, EState state) This method is called during the early simulation phase (unoptimized IR emulation) in the decompilation pipeline.AbstractConverter.buildFailsafePrototype
(IERoutineContext ctx, IEStatement stm) The default implementation provides a no-arg/no-return prototype: "void __defaultCC ()".IEConverter.buildFailsafePrototype
(IERoutineContext ctx, IEStatement stm) Create a simple, failsafe prototype for the given routine.IERoutineContext.createNop
(IEStatement template) Method parameters in com.pnfsoftware.jeb.core.units.code.asm.decompiler with type arguments of type IEStatementModifier and TypeMethodDescriptionAbstractNativeDecompilerExtension.applyAdditionalTypes
(IDecompiledMethod target, CFG<IEStatement> cfg) The default implementation does nothing and requests continuation.INativeDecompilerExtension.applyAdditionalTypes
(IDecompiledMethod target, CFG<IEStatement> cfg) This method is called by the decompiler just before type propagation on the IR-CFG takes place.IERoutineContext.buildCfg
(List<IEStatement> statements) Build an IR-CFG using the provided list of statements, and set the resulting CFG as the current CFG for this converted routine.IERoutineContext.buildCfg
(List<IEStatement> statements, boolean subroutineCallNotBreaking, boolean assignToContext) Build an IR-CFG from a list of statements.protected void
AbstractConverter.convertBlock
(BasicBlock<InsnType> b, List<IEStatement> interlist) Convert a basic block.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) protected final boolean
AbstractConverter.insertOptionalEntryPointTrampoline
(IERoutineContext ctx, List<IEStatement> irlist) For native routines that have their entry point in-the-middle (i.e., not at their lowest address), insert a syntheticIEJump
as the first instruction of the converted method.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.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) 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.IEConverter.normalizeBranchingExpression
(IDFA<IEStatement> dfa, BasicBlock<IEStatement> b, IEGeneric callsite, IEGeneric expectedTarget) Normalize a branching expression.protected void
AbstractConverter.postBlockConversion
(CFG<InsnType> cfg, BasicBlock<InsnType> b, List<IEStatement> interlist, int cnt) This method is called afterAbstractConverter.convertBlock(BasicBlock, List)
is called.protected BasicBlock<InsnType>
AbstractConverter.preBlockConversion
(CFG<InsnType> cfg, BasicBlock<InsnType> b, List<IEStatement> interlist) This method is called beforeAbstractConverter.convertBlock(BasicBlock, List)
is called.protected void
AbstractConverter.preRoutineConversion
(INativeMethodItem routine, IERoutineContext ctx, List<IEStatement> irlist) Executed byconvert
before converting the blocks.AbstractNativeDecompilerExtension.resolveVariableArgumentInformation
(IERoutineContext ctx, CFG<IEStatement> cfg, int iblk, IWildcardPrototype proto) INativeDecompilerExtension.resolveVariableArgumentInformation
(IERoutineContext ctx, CFG<IEStatement> cfg, int iblk, IWildcardPrototype proto) void
IERoutineContext.setCfg
(CFG<IEStatement> cfg) void
IERoutineContext.setStatements
(List<IEStatement> statements) Set the converted list of raw IR-statements.void
IERoutineContext.setStatements
(List<IEStatement> statements, boolean verifyStatements, boolean replaceLeftAssignSlices, boolean buildCfg) Set the converted list of raw IR-statements.Constructor parameters in com.pnfsoftware.jeb.core.units.code.asm.decompiler with type arguments of type IEStatementModifierConstructorDescriptionConverterInstructionEntry
(InsnType insn, long address, List<IEStatement> r, int irAddress) -
Uses of IEStatement in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir
Subinterfaces of IEStatement 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
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
A no-operation IR instruction.interface
A routine terminator.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.Fields in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir with type parameters of type IEStatementMethods in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir that return IEStatementModifier and TypeMethodDescriptiondefault IEStatement
IEGeneric.asStatement()
ELocation.getStatement()
IEStatement.withLowerLevelAddress
(long address) IEStatement.withLowerLevelAddresses
(Collection<Long> addresses) Methods in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir that return types with arguments of type IEStatementModifier and TypeMethodDescriptionstatic CFG<IEStatement>
EUtil.expandStatementSize
(IERoutineContext ectx, IEStatement stm0, int minSize) Expand thesize
of a statement.static CFG<IEStatement>
EUtil.expandStatementSizes
(IERoutineContext ectx, Collection<IEStatement> stmcoll, int minSize) Expand thesizes
of a collection of statements.Methods in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir with parameters of type IEStatementModifier and TypeMethodDescriptionstatic int
EUtil.adjustBranchToIRInstruction
(IEStatement stm, int currentTargetIROffset, int newTargetIROffset) void
IEStatement.copyLowerLevelAddresses
(IEStatement srcStm) Copy (add) the native addresses of the instruction to this statement's mapping.void
IEStatement.copyProperties
(IEStatement srcStm) Copy over the generic statement properties of the source statement onto this statement.static CFG<IEStatement>
EUtil.expandStatementSize
(IERoutineContext ectx, IEStatement stm0, int minSize) Expand thesize
of a statement.protected void
ECFGFormatter.genAddress
(StringBuilder sb, long address, IEStatement insn) protected void
ECFGFormatter.genEOL
(StringBuilder sb, long address, IEStatement insn) protected void
ECFGFormatter.genPostAddress
(StringBuilder sb, long address, IEStatement insn) protected void
ECFGFormatter.genPostInstruction
(StringBuilder sb, long address, IEStatement insn) protected void
ECFGFormatter.genPreAddress
(StringBuilder sb, long insnOffset, IEStatement insn) static IEMem
EUtil.getAssigningFromMemory
(IEStatement stm) static IEMem
EUtil.getAssigningToMemory
(IEStatement stm) 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).static boolean
EUtil.isCondEAssign
(IEStatement e) static boolean
EUtil.isConditionalJump
(IEStatement e) static boolean
EUtil.isExpressionModified
(IEStatement insn, IEGeneric target, boolean defuse) static boolean
EUtil.isPCAssign
(IEStatement stm) Determine if the provided statement is a PC-assign:PC = ...
static boolean
EUtil.isSPAssign
(IEStatement stm) Determine if the provided statement is a SP-assign:SP = ...
orSP[slice] = ...
.static boolean
EUtil.isSPAssignOrPCAssign
(IEStatement stm) Determine if the provided statement is assigning the stack pointer or the program counter.static boolean
EUtil.isUnconditionalJump
(IEStatement e) static boolean
EUtil.isVariableAssigned
(IEStatement stm, IEVar var) Method parameters in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir with type arguments of type IEStatementModifier and TypeMethodDescriptionstatic Boolean
EUtil.checkCallReturnAddress
(IERoutineContext ctx, CFG<IEStatement> cfg, BasicBlock<IEStatement> b, int insnIndex) static Boolean
EUtil.checkCallReturnAddress
(IERoutineContext ctx, CFG<IEStatement> cfg, BasicBlock<IEStatement> b, int insnIndex) static void
EUtil.dump
(CFG<IEStatement> cfg, String filename) Dump an IR-CFG to a Graphvizdot
file in the user's temporary folder.static void
EUtil.dump
(CFG<IEStatement> cfg, String filename, String title) Dump an IR-CFG to a Graphvizdot
file in the user's temporary folder.static CFG<IEStatement>
EUtil.expandStatementSizes
(IERoutineContext ectx, Collection<IEStatement> stmcoll, int minSize) Expand thesizes
of a collection of statements.ECFGFormatter.format
(boolean formatAddresses, boolean formatChains, boolean formatInOut, IDFA<IEStatement> dfa, IFormattingContextFactory<IEStatement> fcf) ECFGFormatter.format
(boolean formatAddresses, boolean formatChains, boolean formatInOut, IDFA<IEStatement> dfa, IFormattingContextFactory<IEStatement> fcf) static String
EUtil.formatStatements
(List<? extends IEStatement> irlist) static AddressConversionLists
AddressConversionLists.generateFromCFG
(CFG<IEStatement> cfg) Generate conversion lists from a CFG.static AddressConversionLists
AddressConversionLists.generateFromList
(List<IEStatement> stmlist) static boolean
EUtil.isAssignedIn
(BasicBlock<IEStatement> bb, IEGeneric checkedDst) Check that an IRE is assigned in a basic block.static boolean
EUtil.isTrampoline
(BasicBlock<IEStatement> bb) 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 void
EUtil.setLowerLevelAddress
(long addr, List<IEStatement> list) static void
EUtil.setLowerLevelAddress
(long addr, List<IEStatement> list, int fromIndex, int toIndex) static void
EUtil.setLowerLevelAddressIfNone
(long addr, List<IEStatement> list) static void
EUtil.setLowerLevelAddressIfNone
(long addr, List<IEStatement> list, int fromIndex, int toIndex) static void
EUtil.verify
(CFG<IEStatement> cfg) Verify an IR-CFG.Constructor parameters in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir with type arguments of type IEStatementModifierConstructorDescriptionECFGFormatter
(CFG<IEStatement> cfg) ECFGFormatter
(CFG<IEStatement> cfg, IVariableProvider varprv, boolean formatFineGrained) -
Uses of IEStatement in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.compiler
Methods in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.compiler that return IEStatementMethods in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.compiler that return types with arguments of type IEStatementModifier and TypeMethodDescriptionECompiler.compileCfg
(IERoutineContext ctx, String... slist) Compile a sequence of statements and return the CFG.ECompiler.compileCfg
(String... slist) Compile a sequence of statements and return the CFG.EPatternMatcher.Result.getCfg()
EPatternMatcher.getInputCfg()
Constructors in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.compiler with parameters of type IEStatementConstructor parameters in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.compiler with type arguments of type IEStatementModifierConstructorDescriptionEPatternMatcher
(EPatternCompiler.EPattern pattern, CFG<IEStatement> cfg, IERoutineContext ctx) -
Uses of IEStatement in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.opt
Fields in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.opt declared as IEStatementModifier and TypeFieldDescriptionprotected IEStatement
AbstractEExpressionOptimizer.currentStatement
This field holds a reference to the top-level parent statement of the expression currently being optimized.Fields in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.opt with type parameters of type IEStatementMethods in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.opt that return IEStatementModifier and TypeMethodDescriptionprotected abstract IEStatement
AbstractEStatementOptimizer.optimizeStatement
(IEStatement stm) Attempt to optimize a statement.Methods in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.opt with parameters of type IEStatementModifier and TypeMethodDescriptionprotected abstract IEStatement
AbstractEStatementOptimizer.optimizeStatement
(IEStatement stm) Attempt to optimize a statement.Method parameters in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.opt with type arguments of type IEStatementModifier and TypeMethodDescriptionboolean
IEOptFilterCanDiscard.check
(CFG<IEStatement> cfg, long insnAddress, int varDefId) protected boolean
AbstractEOptimizer.deleteUnreachableTrampoline
(BasicBlock<IEStatement> b) protected abstract int
AbstractEBlockOptimizer.optimizeBlock
(BasicBlock<IEStatement> b) Attempt to optimize a basic block.