1 #ifndef ROSE_BinaryAnalysis_ConcreteLocation_H
2 #define ROSE_BinaryAnalysis_ConcreteLocation_H
3 #include <featureTests.h>
4 #ifdef ROSE_ENABLE_BINARY_ANALYSIS
6 #include <Rose/BinaryAnalysis/BasicTypes.h>
7 #include <Rose/BinaryAnalysis/RegisterDescriptor.h>
8 #include <Rose/Location.h>
10 #include <boost/serialization/access.hpp>
12 #include <Sawyer/Optional.h>
16 namespace BinaryAnalysis {
41 #ifdef ROSE_HAVE_BOOST_SERIALIZATION_LIB
43 friend class boost::serialization::access;
46 void serialize(S &s,
const unsigned ) {
47 s & BOOST_SERIALIZATION_NVP(reg_);
48 s & BOOST_SERIALIZATION_NVP(va_);
49 s & BOOST_SERIALIZATION_NVP(regdict_);
95 virtual bool isValid()
const override;
96 virtual std::string
toString()
const override;
97 virtual void print(std::ostream&)
const override;
100 virtual bool operator<(
const Location&)
const override;
101 virtual bool operator<=(
const Location&)
const override;
102 virtual bool operator>(
const Location&)
const override;
103 virtual bool operator>=(
const Location&)
const override;
133 RegisterDescriptor
reg()
const;
Used by default-constructed locations.
rose_addr_t address() const
Address part of the location.
virtual bool isEqual(const Location &) const override
Equality and inequality.
Parameter is in a register.
Parameter in memory relative to a register.
RegisterDescriptor reg() const
Register part of the location.
Parameter is at a fixed memory address.
Sawyer::SharedPointer< RegisterDictionary > RegisterDictionaryPtr
Reference counting pointer.
Type type() const
Type of location.
static ConcreteLocation parse(const std::string &)
Parse a concrete location from a string.
RegisterDictionaryPtr registerDictionary() const
Property: Register dictionary.
Main namespace for the ROSE library.
int64_t offset() const
Offset part of the location.
int compare(const ConcreteLocation &) const
Compare two concrete locations.
virtual void print(std::ostream &) const override
Output location to a stream.
Concrete location of data.
Describes (part of) a physical CPU register.
Base class for location types.
ConcreteLocation()
Default constructor.
virtual bool isValid() const override
Test whether this object is valid.
virtual std::string toString() const override
Convert location to string.
virtual std::string printableName() const override
Convert location to escaped, parsable string.