ROSE 2.8.0
Loading...
Searching...
No Matches
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 FrameState;
36class Formatter;
37class MemoryCell;
38class MemoryState;
39class Merger;
40class RegisterState;
41class RegisterStateGeneric;
42class RiscOperators;
43class State;
44class SValue;
45
47// Shared-ownership pointers
49
51using AddressSpacePtr = boost::shared_ptr<AddressSpace>;
52
55
58
60typedef boost::shared_ptr<RegisterState> RegisterStatePtr;
61
63typedef boost::shared_ptr<class RegisterStateGeneric> RegisterStateGenericPtr;
64
66typedef boost::shared_ptr<MemoryState> MemoryStatePtr;
67
69typedef boost::shared_ptr<MemoryCell> MemoryCellPtr;
70
72typedef boost::shared_ptr<State> StatePtr;
73
75typedef boost::shared_ptr<class MemoryCellState> MemoryCellStatePtr;
76
78typedef boost::shared_ptr<FrameState> FrameStatePtr;
79
81typedef boost::shared_ptr<RiscOperators> RiscOperatorsPtr;
82
84typedef boost::shared_ptr<Dispatcher> DispatcherPtr;
85
87// Enums
89
92 REGISTERS,
93 MEMORY,
95 FRAMES,
96 USER,
98};
99
120
123
124
125} // namespace
126} // namespace
127} // namespace
128} // namespace
129
130#endif
131#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.
@ FRAMES
Stores frame states, which store operands and local variables.
@ REGISTERS
Stores register values indexed by RegisterDescriptor.
boost::shared_ptr< AddressSpace > AddressSpacePtr
Shared-ownership pointer for AddressSpace objects.
boost::shared_ptr< FrameState > FrameStatePtr
Shared-ownership pointer to a frame state.
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.