| java.lang.Object | ||
| ↳ | com.pnfsoftware.jeb.core.units.code.asm.decompiler.opt.AbstractMasterOptimizer<T> | |
| ↳ | com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.opt.EMasterOptimizer | |
Standard master optimizer for CFG of IEStatement IR instructions. Comes with a
bundle of standard expression optimizers. Additional optimizers can be registered. Refer to the
constructor javadoc. Special use registers can be specified in order to improve the optimization
rate of the dead-code removal and expression substitution standard optimizers.
|
[Expand]
Inherited Constants | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
From class
com.pnfsoftware.jeb.core.units.code.asm.decompiler.opt.AbstractMasterOptimizer
| |||||||||||
| Fields | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| public static int | defaultMaxRunCount | no max | |||||||||
|
[Expand]
Inherited Fields | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
From class
com.pnfsoftware.jeb.core.units.code.asm.decompiler.opt.AbstractMasterOptimizer
| |||||||||||
| Public Constructors | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|
EMasterOptimizer(IERoutineContext ectx)
Create a standard IR master optimizer with no maximum runcount (unsafe).
| |||||||||||
|
EMasterOptimizer(IERoutineContext ectx, int grp1NMaxRunCount)
Create a standard IR master optimizer.
| |||||||||||
| Public Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| void | addDefaultInput(int bit, IEImm val) | ||||||||||
| void | addDisregardedOutputBits(Collection<Integer> disregardedOutputBits) | ||||||||||
| void | addDisregardedOutputFilter(IOptFilterCanDiscard filter) | ||||||||||
| void | addDisregardedOutputVariables(Collection<? extends IEVar> disregardedOutputVars) | ||||||||||
| boolean |
canDiscardUnusedDefinition(CFG<IEStatement> cfg, int regDef, long insnAddress)
Check if an unused variable definition unused in the routine, but reaching the exit, can be
discarded.
| ||||||||||
| IEImm | getDefaultInput(int reg) | ||||||||||
| Set<Integer> | getDisregardedOutputRegisters() | ||||||||||
| static boolean | isDefinitionReachingRoutineOutput(CFG<IEStatement> cfg, int reg, long address) | ||||||||||
| static boolean | isReachingRoutineOutput(CFG<IEStatement> cfg, int reg) | ||||||||||
| Protected Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| void | debugValidate(IERoutineContext ctx) | ||||||||||
| void | debugValidatePostOpti(IERoutineContext ctx, IOptimizer<IERoutineContext> opt, int cnt) | ||||||||||
|
[Expand]
Inherited Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
From class
com.pnfsoftware.jeb.core.units.code.asm.decompiler.opt.AbstractMasterOptimizer
| |||||||||||
From class
java.lang.Object
| |||||||||||
From interface
com.pnfsoftware.jeb.core.units.code.asm.decompiler.opt.IMasterOptimizer
| |||||||||||
no max
Create a standard IR master optimizer with no maximum runcount (unsafe).
Create a standard IR master optimizer.
| ectx | default context |
|---|---|
| grp1NMaxRunCount | maximum run count for the group [1..N] |
Check if an unused variable definition unused in the routine, but reaching the exit, can be discarded.