com.pnfsoftware.jeb.core.units.code.asm.decompiler.INativeDecompilerExtension |
![]() |
Decompiler extension plugins. Refer to AbstractNativeDecompilerExtension
for additional
details concerning the lifecycle of those objects.
Important notes:
- Be careful with state data stored in decompiler extensions; those plugins are shared among all
decompilers (except for a decompiler primary extension)
- Methods must not return null
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
abstract ChainedOperationResult<Boolean> |
applyAdditionalTypes(INativeDecompilationTarget target, CFG<IEStatement> cfg)
This method is called by the decompiler just before type propagation on the IR-CFG takes
place.
| ||||||||||
abstract ChainedOperationResult<Boolean> |
augmentSimulationContext(INativeDecompilerUnit<?> decompiler, IIRSimulationContext simulationContext, long offset, IEStatement insn, IEState state)
This method is called during the early simulation phase (unoptimized IR emulation) in the
decompilation pipeline.
| ||||||||||
abstract ChainedOperationResult<Boolean> |
convertInstruction(INativeDecompilerUnit<?> decompiler, ConverterInstructionEntry<?> e)
Convert a native instruction to IR code.
| ||||||||||
abstract ChainedOperationResult<Boolean> |
customizeIntermediateOptimizer(INativeDecompilerUnit<?> decompiler, EMasterOptimizer optimizer)
This method is called by a decompiler unit to customize a master IR optimizer.
| ||||||||||
abstract ChainedOperationResult<DecompilationStatus> |
executePostPipelineStage(INativeDecompilationTarget target)
Extensions may customize the decompilation pipeline by implementing this method.
| ||||||||||
abstract ChainedOperationResult<VariableArgumentInformation> | resolveVariableArgumentInformation(IERoutineContext ctx, CFG<IEStatement> cfg, int iblk, IWildcardPrototype proto) |
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
![]() |
This method is called by the decompiler just before type propagation on the IR-CFG takes place. Extensions can use it to set additional types on IR expressions.
This method is called during the early simulation phase (unoptimized IR emulation) in the decompilation pipeline. Extensions can provide additional details to enhance further decompilation stages.
For an example of this method, refer to the MIPS decompiler primary extension code.
simulationContext | simulation context, the extension may record information in this context |
---|---|
offset | IR offset |
insn | IR instruction |
state | input pre-execution state at the provided instruction |
Convert a native instruction to IR code. It is the responsibility of native code converters
to decide whether they want to call this method, before attempting to
convert the instruction themselves. Extensions implementing this method have a chance to
provide alternate conversion of low-level instructions or even provide conversion support for
instructions not supported by a converter.
e | the entry to be converted, holding references to the IInstruction and
current state of the IR basic block |
---|
This method is called by a decompiler unit to customize a master IR optimizer. Extensions may use it to change settings of the master optimizer, provide additional IR optimizers, etc.
Extensions may customize the decompilation pipeline by implementing this method. It is called by the pipeline at the end of each stage of method decompilation.
target | the method being decompiled |
---|