| java.lang.Object | |
| ↳ | com.pnfsoftware.jeb.core.units.code.AddressableInstruction<InsnType extends com.pnfsoftware.jeb.core.units.code.IInstruction> |
Decorator that makes address-less instructions addressable.
| Public Constructors | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|
AddressableInstruction(long address, InsnType insn)
Wrap an instruction and attach an address to it.
| |||||||||||
| Public Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| boolean |
canThrow()
Determine if the instruction can throw an exception.
| ||||||||||
| String |
format(Object context)
Format the instruction for printing
| ||||||||||
| IFlowInformation |
getBreakingFlow()
Determine if the instruction is the end of a basic block.
| ||||||||||
| IFlowInformation |
getBreakingFlow(long instructionAddress)
Determine if an instruction breaks the flow of execution.
| ||||||||||
| byte[] |
getCode()
Get the binary code that makes up this instruction.
| ||||||||||
| void |
getDefUse(List<Integer> def, List<Integer> use, Object context)
Determine the registers defined and used by the instruction.
| ||||||||||
| InsnType |
getInstruction()
Get the underlying instruction.
| ||||||||||
| String | getMnemonic() | ||||||||||
| long |
getOffset()
Get the instruction offset or address.
| ||||||||||
| IInstructionOperand[] |
getOperands()
Get the list of operands for this instruction.
| ||||||||||
| IFlowInformation |
getRoutineCall()
Determine if the end is calling into a sub-routine.
| ||||||||||
| IFlowInformation |
getRoutineCall(long instructionAddress)
Determine if an instruction branches to (or calls into) a sub-routine.
| ||||||||||
| int |
getSize()
Get the instruction size in bytes.
| ||||||||||
| String | toString() | ||||||||||
|
[Expand]
Inherited Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
From class
java.lang.Object
| |||||||||||
From interface
com.pnfsoftware.jeb.core.units.code.IInstruction
| |||||||||||
From interface
com.pnfsoftware.jeb.core.units.code.ILocatedInstruction
| |||||||||||
Wrap an instruction and attach an address to it.
| address | the address |
|---|
Determine if the instruction can throw an exception.
Format the instruction for printing
| context | optional context, used to provide a better representation of the instruction (for instance, resolving strings or method names.) The implementor should do its best to return a decent result even if context is null. |
|---|
Determine if the instruction is the end of a basic block.
isBroken()
returns true). If true, the list of next offsets (addresses) is returned (
getTargets())The implementing class MUST return the
fall-through offset, if any, first.
Determine if an instruction breaks the flow of execution. Sub-routine calls should not be
regarded as flow-breakers by this method. Refer to getRoutineCall.
| instructionAddress | the address of the current instruction |
|---|
isBroken() is true if the instruction breaks the current
flow of execution (sub-routine call instructions are excluded) , false otherwise; if
true, the getTargets() may be filled with potential
addresses, and the first entry should be the fall-through instruction, if there is
any
Get the binary code that makes up this instruction.
Determine the registers defined and used by the instruction.
| def | Output, the list of registers defined by the instruction. |
|---|---|
| use | Output, the list of registers used by the instruction. |
| context | Optional context, implementation specific. |
Get the underlying instruction.
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.
Get the list of operands for this instruction.
Determine if an instruction branches to (or calls into) a sub-routine.
Under normal circumstances, those instructions save the return value (eg, on a stack or in a
register). Therefore, the fall-through address is implied and should not be returned by the
caller in the getTargets(). That array should contain the branch
address - or addresses, for example if the processor branching instruction allows branch
selection.
| instructionAddress | the address of the current instruction |
|---|
isBroken() is true if the instruction calls into a
sub-routine, false otherwise; if true, the getTargets() may
be filled, else its contents is irrelevant
Get the instruction size in bytes.