public interface

IFlowInformation

com.pnfsoftware.jeb.core.units.code.IFlowInformation
Known Indirect Subclasses

Class Overview

Information relative to flow change (break in the flow, indicating the end of a Basic Block).

Summary

Public Methods
abstract int getDelaySlotCount()
Get the number of instructions in the delay slot.
abstract List<IEntryPointDescription> getTargets()
Get the a list of targets.
abstract boolean isBroken()
Determine if this object does contain flow information.
abstract boolean isBrokenKnown()
Determine if this object does contain flow information and all targets are known.
abstract boolean isBrokenUnknown()
Determine if this object does contain flow information but has no known targets.
abstract boolean mustComputeFallThrough()
Indicate if the flow information includes a fall-through address (relative to the current instruction) that is not present in the FlowInfo object itself.

Public Methods

public abstract int getDelaySlotCount ()

Get the number of instructions in the delay slot.

Returns
  • number of instructions in delay slot

public abstract List<IEntryPointDescription> getTargets ()

Get the a list of targets. Be careful, this list does not include the fall-through target if it is implied (eg, when flow-info is returned by getRoutineCall(long)) or when its calculation was requested dynamically (via mustComputeFallThrough()).

Returns
  • the list of addresses that must be checked, possibly empty. A null value signifies no-flow information.

public abstract boolean isBroken ()

Determine if this object does contain flow information.

Returns
  • true is the flow is broken (eg, generic branch)

public abstract boolean isBrokenKnown ()

Determine if this object does contain flow information and all targets are known.

Returns
  • true if the flow is broken and all targets are known

public abstract boolean isBrokenUnknown ()

Determine if this object does contain flow information but has no known targets.

IMPORTANT: if this flow info object is mixed (it specifies having unknown target(s), and also bears known targets), this method returns false.

Returns
  • true if the flow is broken but no targets are known

public abstract boolean mustComputeFallThrough ()

Indicate if the flow information includes a fall-through address (relative to the current instruction) that is not present in the FlowInfo object itself. If this method returns true, the caller must dynamically calculate the fall-through address itself.

Note that the creator of a flowinfo object may decide to add the fall-through (if any) in the flowinfo object target list. However, in some cases, such as branching instructions with delay slot(s), it is simpler to indicate that the branching instruction allows a fall-through flow, but that it should be computer by the client/user, instead of stored or computer by the flowinfo object.

Voluntarily broke JavaBeans convention: named `must` instead of `is`.

Returns
  • true if the flow info does not include a fall-through address, false otherwise