ROSE 0.11.145.237
Rose/BinaryAnalysis/InstructionSemantics/BaseSemantics/BasicTypes.h
1#ifndef ROSE_BinaryAnalysis_InstructionSemantics_BaseSemantics_BasicTypes_H
2#define ROSE_BinaryAnalysis_InstructionSemantics_BaseSemantics_BasicTypes_H
3#include <featureTests.h>
4#ifdef ROSE_ENABLE_BINARY_ANALYSIS
5#include <RoseFirst.h>
6
7// Basic types needed by almost all other instruction semantics layers
8
9#ifdef ROSE_ENABLE_BOOST_SERIALIZATION
10#include <boost/serialization/shared_ptr.hpp>
11#endif
12
13#include <boost/shared_ptr.hpp>
14#include <Sawyer/SharedPointer.h>
15#include <Sawyer/Set.h>
16
17namespace Rose {
18namespace BinaryAnalysis {
19namespace InstructionSemantics {
20
25namespace BaseSemantics {
26
28// Forward declarations
30
31// Documented where they're defined.
32class AddressSpace;
33class AddressSpaceAddress;
34class Dispatcher;
35class Formatter;
36class MemoryCell;
37class MemoryState;
38class Merger;
39class RegisterState;
40class RegisterStateGeneric;
41class RiscOperators;
42class State;
43class SValue;
44
46// Shared-ownership pointers
48
50using AddressSpacePtr = boost::shared_ptr<AddressSpace>;
51
54
57
59typedef boost::shared_ptr<RegisterState> RegisterStatePtr;
60
62typedef boost::shared_ptr<class RegisterStateGeneric> RegisterStateGenericPtr;
63
65typedef boost::shared_ptr<MemoryState> MemoryStatePtr;
66
68typedef boost::shared_ptr<MemoryCell> MemoryCellPtr;
69
71typedef boost::shared_ptr<State> StatePtr;
72
74typedef boost::shared_ptr<class MemoryCellState> MemoryCellStatePtr;
75
77typedef boost::shared_ptr<RiscOperators> RiscOperatorsPtr;
78
80typedef boost::shared_ptr<Dispatcher> DispatcherPtr;
81
83// Enums
85
88 REGISTERS,
89 MEMORY,
91 USER,
93};
94
115
118
119
120} // namespace
121} // namespace
122} // namespace
123} // namespace
124
125#endif
126#endif
Ordered set of values.
Definition Set.h:56
Reference-counting intrusive smart pointer.
Base classes for instruction semantics.
Sawyer::SharedPointer< Merger > MergerPtr
Shared-ownership pointer for Merger classes.
boost::shared_ptr< RiscOperators > RiscOperatorsPtr
Shared-ownership pointer to a RISC operators object.
boost::shared_ptr< MemoryState > MemoryStatePtr
Shared-ownership pointer to a memory state.
boost::shared_ptr< MemoryCell > MemoryCellPtr
Shared-ownership pointer to a memory cell.
boost::shared_ptr< Dispatcher > DispatcherPtr
Shared-ownership pointer to a semantics instruction dispatcher.
@ IO_READ_UNINITIALIZED
The location was read without having the IO_WRITE or IO_INIT property.
boost::shared_ptr< class MemoryCellState > MemoryCellStatePtr
Shared-ownership pointer to a cell-based memory state.
boost::shared_ptr< class RegisterStateGeneric > RegisterStateGenericPtr
Shared-ownership pointer to generic register states.
@ REGISTERS
Stores register values indexed by RegisterDescriptor.
boost::shared_ptr< AddressSpace > AddressSpacePtr
Shared-ownership pointer for AddressSpace objects.
Sawyer::SharedPointer< SValue > SValuePtr
Shared-ownership pointer to a semantic value in any domain.
Sawyer::Container::Set< InputOutputProperty > InputOutputPropertySet
Set of Boolean properties.
boost::shared_ptr< RegisterState > RegisterStatePtr
Shared-ownership pointer to a register state.
BaseSemantics::Formatter Formatter
Formatter for symbolic values.
SymbolicSemantics::Merger Merger
Controls merging of tainted values.
The ROSE library.
const char * AddressSpace(int64_t)
Convert SgAsmGenericFile::AddressSpace enum constant to a string.