public interface

IInstructionAugmenter

com.pnfsoftware.jeb.core.units.code.asm.analyzer.IInstructionAugmenter
Known Indirect Subclasses

Class Overview

Provide additional elements for instructions, resulting from program analysis.

Summary

Public Methods
abstract IBranchResolution getDynamicBranchResolution(long instructionAddress)
This routine can be called on any instruction: a regular or seemingly regular instruction; a flow breaker; a call-to-sub.
abstract IRegistersResolution getRegisterValueResolution(long instructionAddress)
This routine can be called on any instruction.
abstract boolean isArtificialEndOfBlock(long instructionAddress)
Force the end of a basic block, regardless of flow information.
abstract boolean isReversedBranchSemantic(long instructionAddress)
Determine whether the branching instruction at the provided address, if there is one, should have its branch semantics reversed, that is, a flow-breaker should be interpreted as a call-to-sub, whereas a call-to-sub should be interpreted as flow-breaker.

Public Methods

public abstract IBranchResolution getDynamicBranchResolution (long instructionAddress)

This routine can be called on any instruction: a regular or seemingly regular instruction; a flow breaker; a call-to-sub. It is used to provide or augment the list of targets in case of a branching operation. This method may provide a resolved target or a list of candidate targets for the callsite.

public abstract IRegistersResolution getRegisterValueResolution (long instructionAddress)

This routine can be called on any instruction. It is used to provide candidate values for the registers defined and used by the instruction.

public abstract boolean isArtificialEndOfBlock (long instructionAddress)

Force the end of a basic block, regardless of flow information.

public abstract boolean isReversedBranchSemantic (long instructionAddress)

Determine whether the branching instruction at the provided address, if there is one, should have its branch semantics reversed, that is, a flow-breaker should be interpreted as a call-to-sub, whereas a call-to-sub should be interpreted as flow-breaker.