| com.pnfsoftware.jeb.core.units.code.IInstruction |
Known Indirect Subclasses
|
A generic interface to represent machine-code or bytecode instructions.
| Public Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| abstract boolean |
canThrow()
Determine if the instruction can throw an exception.
| ||||||||||
| abstract String |
format(Object context)
Format the instruction for printing
| ||||||||||
| abstract IFlowInformation |
getBreakingFlow(long instructionAddress)
Determine if an instruction breaks the flow of execution.
| ||||||||||
| abstract byte[] |
getCode()
Get the binary code that makes up this instruction.
| ||||||||||
| abstract void |
getDefUse(List<Integer> def, List<Integer> use, Object context)
Determine the registers defined and used by the instruction.
| ||||||||||
| abstract String | getMnemonic() | ||||||||||
| abstract IInstructionOperand[] |
getOperands()
Get the list of operands for this instruction.
| ||||||||||
| abstract IFlowInformation |
getRoutineCall(long instructionAddress)
Determine if an instruction branches to (or calls into) a sub-routine.
| ||||||||||
| abstract int |
getSize()
Get the instruction size in bytes.
| ||||||||||
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 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 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.