ROSE 0.11.145.147
|
Information related to instruction semantics.
The purpose of this class is mainly to encapsulate all instruction semantics information so it can be accessed atomically in a multi-threaded application.
Definition at line 35 of file BasicBlock.h.
#include <Rose/BinaryAnalysis/Partitioner2/BasicBlock.h>
Public Member Functions | |
BasicBlockSemantics () | |
Construct an empty semantics object. | |
bool | isSemanticsDropped () const |
Determines whether semantics have been dropped. | |
bool | isSemanticsError () const |
Determines whether a semantics error was encountered. | |
BaseSemantics::StatePtr | finalState () const |
Return the final semantic state. | |
Public Attributes | |
BaseSemantics::DispatcherPtr | dispatcher |
How instructions are dispatched. | |
BaseSemantics::RiscOperatorsPtr | operators |
Risc operators. | |
BaseSemantics::StatePtr | initialState |
Initial state for semantics. | |
bool | usingDispatcher |
Whether semantic state is up-to-date. | |
Sawyer::Optional< BaseSemantics::StatePtr > | optionalPenultimateState |
The state just prior to executing the final instruction. | |
bool | wasDropped |
Whether the semantics had been dropped and reconstructed. | |
|
inline |
Construct an empty semantics object.
Definition at line 74 of file BasicBlock.h.
|
inline |
Determines whether semantics have been dropped.
Returns true if a basic block's semantics have been dropped and a dispatcher is available. Always returns false if a dispatcher is not available.
Definition at line 81 of file BasicBlock.h.
References dispatcher, and initialState.
|
inline |
Determines whether a semantics error was encountered.
Returns true if an error was encountered in the block's instruction semantics. Always returns false if a dispatcher is not available or if semantics have been dropped.
Definition at line 89 of file BasicBlock.h.
References dispatcher, initialState, and usingDispatcher.
|
inline |
Return the final semantic state.
The returned state is equivalent to starting with the initial state and processing each instruction. If a semantic error occurs during processing then the null pointer is returned. The null pointer is also returned if the basic block is empty.
Definition at line 98 of file BasicBlock.h.
References operators, and usingDispatcher.
BaseSemantics::DispatcherPtr Rose::BinaryAnalysis::Partitioner2::BasicBlockSemantics::dispatcher |
How instructions are dispatched.
Dispatchers are specific to the instruction architecture, and also contain a pointer to the register dictionary that was used. The register dictionary can be employed to obtain names for the registers in the semantic states. The disptcher is null if this basic block is empty or instruction semantics are not implemented for the instruction set architecture being used.
Definition at line 43 of file BasicBlock.h.
Referenced by isSemanticsDropped(), and isSemanticsError().
BaseSemantics::RiscOperatorsPtr Rose::BinaryAnalysis::Partitioner2::BasicBlockSemantics::operators |
Risc operators.
This is just the dispatcher's RiscOperators if there is a disptcher. If no dispatcher, then the operators are still present.
Definition at line 49 of file BasicBlock.h.
Referenced by finalState().
BaseSemantics::StatePtr Rose::BinaryAnalysis::Partitioner2::BasicBlockSemantics::initialState |
Initial state for semantics.
This is the semantic state prior to execution of the first instruction of the basic block. This is a nulll pointer if semantics have been dropped.
Definition at line 55 of file BasicBlock.h.
Referenced by isSemanticsDropped(), and isSemanticsError().
bool Rose::BinaryAnalysis::Partitioner2::BasicBlockSemantics::usingDispatcher |
Whether semantic state is up-to-date.
True if dispatcher's state is up-to-date, i.e., represents the semantic state after executing the last instruction of the basic block.
Definition at line 61 of file BasicBlock.h.
Referenced by finalState(), and isSemanticsError().
Sawyer::Optional<BaseSemantics::StatePtr> Rose::BinaryAnalysis::Partitioner2::BasicBlockSemantics::optionalPenultimateState |
The state just prior to executing the final instruction.
The penultimate state is saved so that one instruction can be efficiently popped from the end of the basic block, after which the final state is the old penultimate state and the new penultimate state is not stored.
Definition at line 67 of file BasicBlock.h.
bool Rose::BinaryAnalysis::Partitioner2::BasicBlockSemantics::wasDropped |
Whether the semantics had been dropped and reconstructed.
Definition at line 70 of file BasicBlock.h.