ROSE 0.11.145.147
Classes | Typedefs | Enumerations | Functions
Rose::BinaryAnalysis::InstructionSemantics::BaseSemantics Namespace Reference

Description

Base classes for instruction semantics.

Basically, anything that is common to two or more instruction semantic domains will be factored out and placed in this name space.

Classes

class  Dispatcher
 Dispatches instructions through the RISC layer. More...
 
class  Exception
 Base class for exceptions thrown by instruction semantics. More...
 
class  Formatter
 Format for printing things. More...
 
class  Indent
 Adjusts a Formatter for one additional level of indentation. More...
 
class  InsnProcessor
 Functor that knows how to dispatch a single kind of instruction. More...
 
class  MemoryCell
 Represents one location in memory. More...
 
class  MemoryCellList
 Simple list-based memory state. More...
 
class  MemoryCellMap
 Simple map-based memory state. More...
 
class  MemoryCellState
 Cell-based memory state. More...
 
class  MemoryState
 Represents all memory in the state. More...
 
class  Merger
 Controls state merge operations. More...
 
class  NotImplemented
 
class  RegisterState
 The set of all registers and their values. More...
 
class  RegisterStateGeneric
 A RegisterState for any architecture. More...
 
class  RiscOperators
 Base class for most instruction semantics RISC operators. More...
 
class  State
 Base class for semantics machine states. More...
 
class  SValue
 Base class for semantic values. More...
 
class  SymbolicMemory
 Purely symbolic memory state. More...
 

Typedefs

typedef Sawyer::SharedPointer< MergerMergerPtr
 Shared-ownership pointer for Merger classes.
 
typedef Sawyer::SharedPointer< SValueSValuePtr
 Shared-ownership pointer to a semantic value in any domain.
 
typedef boost::shared_ptr< RegisterStateRegisterStatePtr
 Shared-ownership pointer to a register state.
 
typedef boost::shared_ptr< class RegisterStateGenericRegisterStateGenericPtr
 Shared-ownership pointer to generic register states.
 
typedef boost::shared_ptr< MemoryStateMemoryStatePtr
 Shared-ownership pointer to a memory state.
 
typedef boost::shared_ptr< MemoryCellMemoryCellPtr
 Shared-ownership pointer to a memory cell.
 
typedef boost::shared_ptr< StateStatePtr
 Shared-ownership pointer to a semantic state.
 
typedef boost::shared_ptr< RiscOperatorsRiscOperatorsPtr
 Shared-ownership pointer to a RISC operators object.
 
typedef boost::shared_ptr< DispatcherDispatcherPtr
 Shared-ownership pointer to a semantics instruction dispatcher.
 
typedef Sawyer::Container::Set< InputOutputPropertyInputOutputPropertySet
 Set of Boolean properties.
 
using CellList = std::list< MemoryCellPtr >
 List of memory cells.
 
typedef boost::shared_ptr< class MemoryCellListMemoryCellListPtr
 Shared-ownership pointer to a list-based memory state.
 
typedef boost::shared_ptr< class MemoryCellMapMemoryCellMapPtr
 Shared-ownership pointer to a map-based memory state.
 
typedef boost::shared_ptr< class MemoryCellStateMemoryCellStatePtr
 Shared-ownership pointer to a cell-based memory state.
 
typedef boost::shared_ptr< class SymbolicMemorySymbolicMemoryPtr
 Shared-ownership pointer for symbolic memory state.
 

Enumerations

enum  InputOutputProperty {
  IO_READ ,
  IO_WRITE ,
  IO_INIT ,
  IO_READ_BEFORE_WRITE ,
  IO_READ_AFTER_WRITE ,
  IO_READ_UNINITIALIZED
}
 Boolean properties related to I/O. More...
 

Functions

std::ostream & operator<< (std::ostream &, const Exception &)
 
std::ostream & operator<< (std::ostream &, const MemoryCell &)
 
std::ostream & operator<< (std::ostream &, const MemoryCell::WithFormatter &)
 
std::ostream & operator<< (std::ostream &, const MemoryState &)
 
std::ostream & operator<< (std::ostream &, const MemoryState::WithFormatter &)
 
std::ostream & operator<< (std::ostream &, const RegisterState &)
 
std::ostream & operator<< (std::ostream &, const RegisterState::WithFormatter &)
 
std::ostream & operator<< (std::ostream &, const RiscOperators &)
 
std::ostream & operator<< (std::ostream &, const RiscOperators::WithFormatter &)
 
std::ostream & operator<< (std::ostream &, const State &)
 
std::ostream & operator<< (std::ostream &, const State::WithFormatter &)
 
template<class To , class From >
Sawyer::SharedPointer< To > dynamic_pointer_cast (const Sawyer::SharedPointer< From > &from)
 
std::ostream & operator<< (std::ostream &, const SValue &)
 
std::ostream & operator<< (std::ostream &, const SValue::WithFormatter &)
 

Typedef Documentation

◆ MergerPtr

Shared-ownership pointer for Merger classes.

Definition at line 45 of file Rose/BinaryAnalysis/InstructionSemantics/BaseSemantics/BasicTypes.h.

◆ SValuePtr

Shared-ownership pointer to a semantic value in any domain.

Definition at line 48 of file Rose/BinaryAnalysis/InstructionSemantics/BaseSemantics/BasicTypes.h.

◆ RegisterStatePtr

Shared-ownership pointer to a register state.

Definition at line 51 of file Rose/BinaryAnalysis/InstructionSemantics/BaseSemantics/BasicTypes.h.

◆ RegisterStateGenericPtr

Shared-ownership pointer to generic register states.

Definition at line 54 of file Rose/BinaryAnalysis/InstructionSemantics/BaseSemantics/BasicTypes.h.

◆ MemoryStatePtr

Shared-ownership pointer to a memory state.

Definition at line 57 of file Rose/BinaryAnalysis/InstructionSemantics/BaseSemantics/BasicTypes.h.

◆ MemoryCellPtr

Shared-ownership pointer to a memory cell.

Definition at line 60 of file Rose/BinaryAnalysis/InstructionSemantics/BaseSemantics/BasicTypes.h.

◆ StatePtr

Shared-ownership pointer to a semantic state.

Definition at line 63 of file Rose/BinaryAnalysis/InstructionSemantics/BaseSemantics/BasicTypes.h.

◆ RiscOperatorsPtr

Shared-ownership pointer to a RISC operators object.

Definition at line 66 of file Rose/BinaryAnalysis/InstructionSemantics/BaseSemantics/BasicTypes.h.

◆ DispatcherPtr

Shared-ownership pointer to a semantics instruction dispatcher.

Definition at line 69 of file Rose/BinaryAnalysis/InstructionSemantics/BaseSemantics/BasicTypes.h.

◆ InputOutputPropertySet

Set of Boolean properties.

Definition at line 97 of file Rose/BinaryAnalysis/InstructionSemantics/BaseSemantics/BasicTypes.h.

◆ CellList

List of memory cells.

Definition at line 276 of file MemoryCell.h.

◆ MemoryCellListPtr

Shared-ownership pointer to a list-based memory state.

Definition at line 19 of file MemoryCellList.h.

◆ MemoryCellMapPtr

Shared-ownership pointer to a map-based memory state.

Definition at line 21 of file MemoryCellMap.h.

◆ MemoryCellStatePtr

Shared-ownership pointer to a cell-based memory state.

Definition at line 20 of file BaseSemantics/MemoryCellState.h.

◆ SymbolicMemoryPtr

Shared-ownership pointer for symbolic memory state.

Definition at line 17 of file SymbolicMemory.h.

Enumeration Type Documentation

◆ InputOutputProperty

Boolean properties related to I/O.

These Boolean properties keep track of whether a value was read from and/or written to a register or memory state. Each state implementation has different capabilities, so see the implementation for details. In short, RegisterStateGeneric tracks these properties per bit of each register while memory states generally track them on a byte-by-byte basis.

Although the register and memory state objects provide the data members for storing this information, the properties are generally manipulated by higher layers such as the readRegister, writeRegister, readMemory, and writeMemory methods in a RiscOperators implementation.

Enumerator
IO_READ 

The location was read on behalf of an instruction.

IO_WRITE 

The location was written on behalf of an instruction.

IO_INIT 

The location was written without an instruction.

This typically happens during state initialization.

IO_READ_BEFORE_WRITE 

The location was read without having the IO_WRITE property.

IO_READ_AFTER_WRITE 

The location was read after being written.

IO_READ_UNINITIALIZED 

The location was read without having the IO_WRITE or IO_INIT property.

Definition at line 85 of file Rose/BinaryAnalysis/InstructionSemantics/BaseSemantics/BasicTypes.h.

Function Documentation

◆ dynamic_pointer_cast()

template<class To , class From >
Sawyer::SharedPointer< To > Rose::BinaryAnalysis::InstructionSemantics::BaseSemantics::dynamic_pointer_cast ( const Sawyer::SharedPointer< From > &  from)

Definition at line 29 of file SValue.h.