1#ifndef ROSE_BinaryAnalysis_InstructionSemantics_BaseSemantics_RegisterState_H
2#define ROSE_BinaryAnalysis_InstructionSemantics_BaseSemantics_RegisterState_H
3#include <featureTests.h>
4#ifdef ROSE_ENABLE_BINARY_ANALYSIS
6#include <Rose/BinaryAnalysis/BasicTypes.h>
7#include <Rose/BinaryAnalysis/InstructionSemantics/BaseSemantics/AddressSpace.h>
8#include <Rose/BinaryAnalysis/InstructionSemantics/BaseSemantics/Merger.h>
9#include <Rose/BinaryAnalysis/InstructionSemantics/BaseSemantics/SValue.h>
10#include <Rose/BinaryAnalysis/RegisterDictionary.h>
12#include <boost/serialization/access.hpp>
13#include <boost/serialization/export.hpp>
14#include <boost/serialization/nvp.hpp>
15#include <boost/serialization/shared_ptr.hpp>
16#include <boost/serialization/version.hpp>
19namespace BinaryAnalysis {
20namespace InstructionSemantics {
44#ifdef ROSE_HAVE_BOOST_SERIALIZATION_LIB
46 friend class boost::serialization::access;
49 void serialize(S &s,
const unsigned version) {
52 s & BOOST_SERIALIZATION_NVP(protoval_);
54 s & BOOST_SERIALIZATION_NVP(
regdict);
Base class for address spaces.
The set of all registers and their values.
virtual void updateWriteProperties(RegisterDescriptor, InputOutputProperty)=0
Update register properties after writing to a register.
SValuePtr protoval() const
Return the protoval.
virtual void zero()=0
Set all registers to the zero.
RegisterStatePtr Ptr
Shared-ownership pointer.
virtual SValuePtr peekRegister(RegisterDescriptor reg, const SValuePtr &dflt, RiscOperators *ops)=0
Read a register without side effects.
RegisterDictionaryPtr registerDictionary() const
Property: Register dictionary.
virtual void writeRegister(RegisterDescriptor reg, const SValuePtr &value, RiscOperators *ops)=0
Write a value to a register.
virtual void updateReadProperties(RegisterDescriptor)=0
Update register properties after reading a register.
void merger(const MergerPtr &m)
Property: Merger.
virtual RegisterStatePtr create(const SValuePtr &protoval, const RegisterDictionaryPtr ®dict) const =0
Virtual constructor.
virtual SValuePtr readRegister(RegisterDescriptor reg, const SValuePtr &dflt, RiscOperators *ops)=0
Read a value from a register.
virtual void clear()=0
Removes stored values from the register state.
RegisterDictionaryPtr regdict
Registers that are able to be stored by this state.
MergerPtr merger() const
Property: Merger.
Base class for most instruction semantics RISC operators.
Describes (part of) a physical CPU register.
Base classes for instruction semantics.
InputOutputProperty
Boolean properties related to I/O.
boost::shared_ptr< AddressSpace > AddressSpacePtr
Shared-ownership pointer for AddressSpace objects.
boost::shared_ptr< RegisterState > RegisterStatePtr
Shared-ownership pointer to a register state.