# Interface: com.pnfsoftware.jeb.core.units.code.ILocatedInstruction

An addressable instruction.

## Method: collectIndirectCallReferences
- return type: `com.pnfsoftware.jeb.core.units.code.IFlowInformation`

Description: Collect the list of dereferenced addresses computed by a call\-to\-sub instruction. This method should not be confused with [#getRoutineCall(long)](#getRoutineCall(long)).
return: [IFlowInformation#isBroken()](IFlowInformation#isBroken()) is true if the instruction indirectly calls into         a sub\-routine, false otherwise \(**in particular for direct routine calls**\); if         true, the [IFlowInformation#getTargets()](IFlowInformation#getTargets()) may be filled with the dereferenced         addresses, else its contents is irrelevant
see also: IInstruction#collectIndirectCallReferences(long)

## Method: getBreakingFlow
- return type: `com.pnfsoftware.jeb.core.units.code.IFlowInformation`

Description: Determine if an instruction breaks the flow of execution. Examples: jump instructions, conditional jumps, return\-to\-caller instructions, etc. Sub\-routine calls should not be regarded as flow\-breakers by this method. Refer to [getRoutineCall](#getRoutineCall(long)).
return: [IFlowInformation#isBroken()](IFlowInformation#isBroken()) is true if the instruction breaks the current         flow of execution \(sub\-routine call instructions are excluded\) , false otherwise; if         true, [IFlowInformation#getTargets()](IFlowInformation#getTargets()) may be filled with potential addresses,         and the first entry should be the fall\-through instruction, if there is any
see also: IInstruction#getBreakingFlow(long)

## Method: getOffset
- return type: `long`

Description: Get the instruction offset or address. The offset may be relative to a base, or absolute in the case of a memory address. The choice is up to the implementor.
return: the instruction offset/address

## Method: getOffsetEnd
- return type: `long`

Description: Get the instruction address end \(exclusive\).
return: end offset

## Method: getPrimaryBranchAddress
- return type: `long`

Description: Convenience method used to retrieve the primary target of this branching instruction. If the instruction is not branching, or if the target cannot be determined, \-1 is returned. If the instruction has multiple branches, only one is returned.
return: the target address, or \-1 on error

## Method: getRoutineCall
- return type: `com.pnfsoftware.jeb.core.units.code.IFlowInformation`

Description: Determine if an instruction branches to \(or calls into\) a sub\-routine. 

 Under normal circumstances, those instructions save the return address \(e.g., on a stack or in a register\). Therefore, the fall\-through address is implied and should not be returned by [IFlowInformation#getTargets()](IFlowInformation#getTargets()). The list of targets should contain the branch address \- or addresses, for example if the processor branching instruction allows branch selection.
return: [IFlowInformation#isBroken()](IFlowInformation#isBroken()) is true if the instruction calls into a         sub\-routine, false otherwise; if true, [IFlowInformation#getTargets()](IFlowInformation#getTargets()) may be         filled, else its contents is irrelevant
see also: IInstruction#getRoutineCall(long)

