3 #ifndef ROSE_BinaryAnalysis_InstructionSemantics2_BaseSemantics_SymbolicMemory_H
4 #define ROSE_BinaryAnalysis_InstructionSemantics2_BaseSemantics_SymbolicMemory_H
5 #include <featureTests.h>
6 #ifdef ROSE_ENABLE_BINARY_ANALYSIS
8 #include <Rose/BinaryAnalysis/InstructionSemantics2/BaseSemantics/MemoryState.h>
9 #include <Rose/BinaryAnalysis/SymbolicExpr.h>
12 namespace BinaryAnalysis {
13 namespace InstructionSemantics2 {
52 return instance(addrProtoval, valProtoval);
64 SymbolicMemoryPtr retval = boost::dynamic_pointer_cast<
SymbolicMemory>(x);
65 ASSERT_not_null(retval);
80 virtual void clear()
override;
virtual MemoryStatePtr clone() const override
Virtual allocating copy constructor.
virtual void print(std::ostream &, Formatter &) const override
Print a memory state to more than one line of output.
virtual void hash(Combinatorics::Hasher &, RiscOperators *addrOps, RiscOperators *valOps) const override
Calculate a hash for this memory state.
boost::shared_ptr< MemoryState > MemoryStatePtr
Shared-ownership pointer to a memory state.
static SymbolicMemoryPtr instance(const SValuePtr &addrProtoval, const SValuePtr &valProtoval)
Instantiate a new empty memory state on the heap.
MemoryStatePtr Ptr
Shared-ownership pointer for a MemoryState.
virtual void clear() override
Clear memory.
virtual SValuePtr readMemory(const SValuePtr &address, const SValuePtr &dflt, RiscOperators *addrOps, RiscOperators *valOps) override
Read a value from memory.
Main namespace for the ROSE library.
static SymbolicMemoryPtr promote(const MemoryStatePtr &x)
Convert pointer to a SymbolicMemory pointer.
SymbolicExpr::Ptr expression() const
Property: the symbolic expression for the memory.
boost::shared_ptr< class SymbolicMemory > SymbolicMemoryPtr
Shared-ownership pointer for symbolic memory state.
Base classes for instruction semantics.
Purely symbolic memory state.
virtual MemoryStatePtr create(const SValuePtr &addrProtoval, const SValuePtr &valProtoval) const override
Virtual allocating constructor.
virtual void writeMemory(const SValuePtr &address, const SValuePtr &value, RiscOperators *addrOps, RiscOperators *valOps) override
Write a value to memory.
Base class for most instruction semantics RISC operators.
Represents all memory in the state.
virtual bool merge(const MemoryStatePtr &other, RiscOperators *addrOps, RiscOperators *valOps) override
Merge memory states for data flow analysis.
virtual SValuePtr peekMemory(const SValuePtr &address, const SValuePtr &dflt, RiscOperators *addrOps, RiscOperators *valOps) override
Read a value from memory without side effects.
LeafPtr makeMemoryVariable(size_t addressWidth, size_t valueWidth, const std::string &comment="", unsigned flags=0)
Leaf constructor.