ROSE
0.11.87.0
|
Represents the entire state of the machine.
This state expects to use a subclass of BaseSemantics::MemoryCellList as its memory state, and does not expect that MemoryCellList to be byte-restricted.
Definition at line 255 of file PartialSymbolicSemantics.h.
#include <Rose/BinaryAnalysis/InstructionSemantics2/PartialSymbolicSemantics.h>
Public Types | |
using | Super = BaseSemantics::State |
Base type. More... | |
using | Ptr = StatePtr |
Shared-ownership pointer. More... | |
![]() | |
using | Ptr = StatePtr |
Shared-ownership pointer for a State. More... | |
Public Member Functions | |
virtual BaseSemantics::StatePtr | create (const BaseSemantics::RegisterStatePtr ®isters, const BaseSemantics::MemoryStatePtr &memory) const override |
Virtual constructor. More... | |
virtual BaseSemantics::StatePtr | clone () const override |
Virtual copy constructor. More... | |
virtual void | print_diff_registers (std::ostream &, const StatePtr &other_state, Formatter &) const |
Print info about how registers differ. More... | |
virtual bool | equal_registers (const StatePtr &other) const |
Tests registers of two states for equality. More... | |
virtual void | discard_popped_memory () |
Removes from memory those values at addresses below the current stack pointer. More... | |
![]() | |
SValuePtr | protoval () const |
Return the protoval. More... | |
virtual void | clear () |
Initialize state. More... | |
void | zeroRegisters () |
Initialize all registers to zero. More... | |
virtual void | zero_registers () |
void | clearMemory () |
Clear all memory locations. More... | |
virtual void | clear_memory () |
RegisterStatePtr | registerState () const |
Property: Register state. More... | |
MemoryStatePtr | memoryState () const |
Property: Memory state. More... | |
virtual SValuePtr | readRegister (RegisterDescriptor desc, const SValuePtr &dflt, RiscOperators *ops) |
Read a value from a register. More... | |
virtual SValuePtr | peekRegister (RegisterDescriptor desc, const SValuePtr &dflt, RiscOperators *ops) |
Read register without side effects. More... | |
virtual void | writeRegister (RegisterDescriptor desc, const SValuePtr &value, RiscOperators *ops) |
Write a value to a register. More... | |
virtual SValuePtr | readMemory (const SValuePtr &address, const SValuePtr &dflt, RiscOperators *addrOps, RiscOperators *valOps) |
Read a value from memory. More... | |
virtual SValuePtr | peekMemory (const SValuePtr &address, const SValuePtr &dflt, RiscOperators *addrOps, RiscOperators *valOps) |
Read from memory without side effects. More... | |
virtual void | writeMemory (const SValuePtr &addr, const SValuePtr &value, RiscOperators *addrOps, RiscOperators *valOps) |
Write a value to memory. More... | |
virtual void | hash (Combinatorics::Hasher &, RiscOperators *addrOps, RiscOperators *valOps) const |
Compute a hash of the state. More... | |
std::string | toString () const |
Convert the state to a string for debugging. More... | |
virtual bool | merge (const StatePtr &other, RiscOperators *ops) |
Merge operation for data flow analysis. More... | |
void | printRegisters (std::ostream &stream, const std::string &prefix="") |
Print the register contents. More... | |
virtual void | printRegisters (std::ostream &stream, Formatter &fmt) const |
Print the register contents. More... | |
void | printMemory (std::ostream &stream, const std::string &prefix="") const |
Print memory contents. More... | |
virtual void | printMemory (std::ostream &stream, Formatter &fmt) const |
Print memory contents. More... | |
void | print (std::ostream &stream, const std::string &prefix="") const |
Print the state. More... | |
virtual void | print (std::ostream &, Formatter &) const |
Print the state. More... | |
WithFormatter | with_format (Formatter &fmt) |
Used for printing states with formatting. More... | |
WithFormatter | operator+ (Formatter &fmt) |
Used for printing states with formatting. More... | |
WithFormatter | operator+ (const std::string &linePrefix) |
Used for printing states with formatting. More... | |
Static Public Member Functions | |
static StatePtr | instance (const BaseSemantics::RegisterStatePtr ®isters, const BaseSemantics::MemoryStatePtr &memory) |
Instantiates a new instance of memory state with specified register and memory states. More... | |
static StatePtr | instance (const StatePtr &other) |
Instantiates a new copy of an existing state. More... | |
static StatePtr | promote (const BaseSemantics::StatePtr &x) |
![]() | |
static StatePtr | instance (const RegisterStatePtr ®isters, const MemoryStatePtr &memory) |
Instantiate a new state object with specified register and memory states. More... | |
static StatePtr | instance (const StatePtr &other) |
Instantiate a new copy of an existing state. More... | |
static StatePtr | promote (const StatePtr &x) |
Protected Member Functions | |
State (const BaseSemantics::RegisterStatePtr ®isters, const BaseSemantics::MemoryStatePtr &memory) | |
State (const State &other) | |
![]() | |
State (const RegisterStatePtr ®isters, const MemoryStatePtr &memory) | |
State (const State &other) | |
using Rose::BinaryAnalysis::InstructionSemantics2::PartialSymbolicSemantics::State::Super = BaseSemantics::State |
Base type.
Definition at line 258 of file PartialSymbolicSemantics.h.
Shared-ownership pointer.
Definition at line 261 of file PartialSymbolicSemantics.h.
|
inlinestatic |
Instantiates a new instance of memory state with specified register and memory states.
Definition at line 287 of file PartialSymbolicSemantics.h.
|
inlinestatic |
Instantiates a new copy of an existing state.
Definition at line 293 of file PartialSymbolicSemantics.h.
|
inlineoverridevirtual |
Virtual constructor.
Reimplemented from Rose::BinaryAnalysis::InstructionSemantics2::BaseSemantics::State.
Definition at line 300 of file PartialSymbolicSemantics.h.
References instance().
|
inlineoverridevirtual |
Virtual copy constructor.
Allocates a new state object which is a deep copy of this state. States must be copyable objects because many analyses depend on being able to make a copy of the entire semantic state at each machine instruction, at each CFG vertex, etc.
Reimplemented from Rose::BinaryAnalysis::InstructionSemantics2::BaseSemantics::State.
Definition at line 305 of file PartialSymbolicSemantics.h.
References instance().
|
virtual |
Print info about how registers differ.
If a RenameMap is specified then named values will be renamed to have a shorter name.
|
virtual |
Tests registers of two states for equality.
|
virtual |
Removes from memory those values at addresses below the current stack pointer.
This is automatically called after each instruction if the policy's p_discard_popped_memory property is set.