1 #ifndef ROSE_BinaryAnalysis_AbstractLocation_H
2 #define ROSE_BinaryAnalysis_AbstractLocation_H
3 #include <featureTests.h>
4 #ifdef ROSE_ENABLE_BINARY_ANALYSIS
6 #include <Rose/Location.h>
7 #include <Rose/BinaryAnalysis/BasicTypes.h>
8 #include <Rose/BinaryAnalysis/SmtSolver.h>
14 namespace BinaryAnalysis {
73 virtual bool isValid()
const override;
74 virtual std::string
toString()
const override;
75 virtual void print(std::ostream&)
const override;
78 virtual bool operator<(
const Location&)
const override;
79 virtual bool operator<=(
const Location&)
const override;
80 virtual bool operator>(
const Location&)
const override;
81 virtual bool operator>=(
const Location&)
const override;
virtual bool isEqual(const Location &) const override
Equality and inequality.
virtual std::string toString() const override
Convert location to string.
size_t nBytes() const
Returns size of memory location in bytes.
AbstractLocation()
Default constructor.
Main namespace for the ROSE library.
static AbstractLocation parse(const std::string &)
Parse an abstract location from a string.
RegisterDescriptor getRegister() const
Returns register.
const Address getAddress() const
Returns memory address.
Describes (part of) a physical CPU register.
Base class for location types.
virtual bool isValid() const override
Test whether this object is valid.
int compare(const AbstractLocation &other) const
Compare two abstract locations.
bool isAddress() const
Checks memory reference.
Sawyer::SharedPointer< SValue > SValuePtr
Shared-ownership pointer to a semantic value in any domain.
bool mayAlias(const AbstractLocation &other, const SmtSolverPtr &solver=SmtSolverPtr()) const
True if two abstract locations could be aliases.
std::shared_ptr< SmtSolver > SmtSolverPtr
Reference counting pointer.
virtual std::string printableName() const override
Convert location to escaped, parsable string.
bool mustAlias(const AbstractLocation &other, const SmtSolverPtr &solver=SmtSolverPtr()) const
True if two abstract locations are certainly aliases.
virtual void print(std::ostream &) const override
Output location to a stream.
bool isRegister() const
Checks register reference.
AbstractLocation & operator=(const AbstractLocation &)
Assignment operator.