ROSE 0.11.145.192
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  AddressSpace
 Base class for address spaces. More...
 
class  AddressSpaceAddress
 Addresses for base address space. More...
 
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

using AddressSpacePtr = boost::shared_ptr< AddressSpace >
 Shared-ownership pointer for AddressSpace objects.
 
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< class MemoryCellStateMemoryCellStatePtr
 Shared-ownership pointer to a cell-based memory 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.
 
using SymbolicMemoryPtr = boost::shared_ptr< class SymbolicMemory >
 Shared-ownership pointer for symbolic memory state.
 

Enumerations

enum class  AddressSpacePurpose {
  REGISTERS ,
  MEMORY ,
  INTERRUPTS ,
  USER ,
  UNSPECIFIED
}
 Purpose that an address space serves. More...
 
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 AddressSpace &)
 
std::ostream & operator<< (std::ostream &, const AddressSpace::WithFormatter &)
 
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 RiscOperators &)
 
std::ostream & operator<< (std::ostream &, const RiscOperators::WithFormatter &)
 
std::ostream & operator<< (std::ostream &, const State &)
 
std::ostream & operator<< (std::ostream &, const State::WithFormatter &)
 
std::ostream & operator<< (std::ostream &, const SValue &)
 
std::ostream & operator<< (std::ostream &, const SValue::WithFormatter &)
 

Typedef Documentation

◆ AddressSpacePtr

Shared-ownership pointer for AddressSpace objects.

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

◆ MergerPtr

Shared-ownership pointer for Merger classes.

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

◆ SValuePtr

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

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

◆ RegisterStatePtr

Shared-ownership pointer to a register state.

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

◆ RegisterStateGenericPtr

Shared-ownership pointer to generic register states.

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

◆ MemoryStatePtr

Shared-ownership pointer to a memory state.

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

◆ MemoryCellPtr

Shared-ownership pointer to a memory cell.

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

◆ StatePtr

Shared-ownership pointer to a semantic state.

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

◆ MemoryCellStatePtr

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

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

◆ RiscOperatorsPtr

Shared-ownership pointer to a RISC operators object.

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

◆ DispatcherPtr

Shared-ownership pointer to a semantics instruction dispatcher.

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

◆ InputOutputPropertySet

Set of Boolean properties.

Definition at line 114 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 20 of file MemoryCellMap.h.

◆ SymbolicMemoryPtr

Shared-ownership pointer for symbolic memory state.

Definition at line 17 of file SymbolicMemory.h.

Enumeration Type Documentation

◆ AddressSpacePurpose

Purpose that an address space serves.

Enumerator
REGISTERS 

Stores register values indexed by RegisterDescriptor.

MEMORY 

Stores memory values indexed by address.

INTERRUPTS 

Stores interrupt states indexed by interrupt.

USER 

User defined address space.

UNSPECIFIED 

Purpose for default-constructed address spaces.

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

◆ 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 102 of file Rose/BinaryAnalysis/InstructionSemantics/BaseSemantics/BasicTypes.h.