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#ifdef ROSE_ENABLE_BOOST_SERIALIZATION 
   13#include <boost/serialization/access.hpp> 
   14#include <boost/serialization/export.hpp> 
   15#include <boost/serialization/nvp.hpp> 
   16#include <boost/serialization/shared_ptr.hpp> 
   17#include <boost/serialization/version.hpp> 
   21namespace BinaryAnalysis {
 
   22namespace InstructionSemantics {
 
   46#ifdef ROSE_ENABLE_BOOST_SERIALIZATION 
   48    friend class boost::serialization::access;
 
   51    void serialize(S &s, 
const unsigned version) {
 
   54        s & BOOST_SERIALIZATION_NVP(protoval_);
 
   56            s & BOOST_SERIALIZATION_NVP(
regdict);
 
 
  180#ifdef ROSE_ENABLE_BOOST_SERIALIZATION 
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.