RoseBin_DataFlowAbstract Class Reference

#include <RoseBin_DataFlowAbstract.h>

Inheritance diagram for RoseBin_DataFlowAbstract:

Inheritance graph
[legend]
Collaboration diagram for RoseBin_DataFlowAbstract:

Collaboration graph
[legend]
List of all members.

Public Member Functions

SgGraphNodegetPredecessor (SgGraphNode *node)
SgGraphNodegetSuccessor (SgGraphNode *node)
 RoseBin_DataFlowAbstract (GraphAlgorithms *algo)
virtual ~RoseBin_DataFlowAbstract ()
virtual bool run (std::string &name, SgGraphNode *node, SgGraphNode *before)=0
virtual bool runEdge (SgGraphNode *node, SgGraphNode *next)=0
virtual void init (RoseBin_Graph *vg)=0
int getDefinitionSize ()
int getUsageSize ()
int64_t check_isRegister (SgGraphNode *node, SgAsmx86Instruction *inst, std::pair< X86RegisterClass, int > codeSearch, bool rightSide, std::vector< std::pair< X86RegisterClass, int > > &regsOfInterest, bool &cantTrack)
int64_t check_isLeftSideRegister (SgAsmx86Instruction *inst, std::pair< X86RegisterClass, int > codeSearch)
uint64_t getValueInExpression (SgAsmValueExpression *valExp)
int64_t trackValueForRegister (SgGraphNode *node, std::pair< X86RegisterClass, int > codeSearch, bool &cantTrack, SgAsmx86RegisterReferenceExpression *refExpr_rightHand)
std::pair< X86RegisterClass,
int > 
check_isRegister (SgGraphNode *node, SgAsmx86Instruction *inst, bool rightSide, bool &memoryReference, bool &registerReference)
SgAsmExpressiongetOperand (SgAsmx86Instruction *inst, bool rightSide)
uint64_t getValueInMemoryRefExp (SgAsmExpression *ref)
bool isInstructionAlteringOneRegister (SgAsmx86Instruction *inst)
bool altersMultipleRegisters (std::vector< std::pair< X86RegisterClass, int > > &codes, SgAsmx86Instruction *inst)
bool sameParents (SgGraphNode *node, SgGraphNode *next)
void printDefTableToFile (std::string file)
std::set< SgGraphNode * > getDefFor (SgGraphNode *node, std::pair< X86RegisterClass, int > initName)
std::set< SgGraphNode * > getUseFor (SgGraphNode *node, std::pair< X86RegisterClass, int > initName)
const std::multimap< std::pair<
X86RegisterClass, int >,
SgGraphNode * > & 
getDefMultiMapFor (SgGraphNode *node)
const std::multimap< std::pair<
X86RegisterClass, int >,
SgGraphNode * > & 
getUseMultiMapFor (SgGraphNode *node)
uint64_t getValueOfInstr (SgAsmx86Instruction *inst, bool rightSide)
RoseBin_VariablecreateVariable (uint64_t position, std::vector< uint64_t > pos, std::string name, RoseBin_DataTypes::DataTypes type, std::string description, int length, std::vector< uint64_t > value, bool memoryRef)
RoseBin_VariablegetVariable (uint64_t pos)
RoseBin_VariablegetVariable (std::string var)

Public Attributes

tabletype deftable
tabletype usetable
RoseBin_Graph * vizzGraph

Protected Types

typedef rose_hash::unordered_map<
std::string, uint64_t > 
variablesReverseType
typedef std::multimap< std::pair<
X86RegisterClass, int >,
SgGraphNode * > 
multitype
typedef rose_hash::unordered_map<
SgGraphNode *, multitype,
rose_hash::hash_graph_node,
rose_hash::eqstr_graph_node
tabletype

Protected Member Functions

std::set< SgGraphNode * > getAnyFor (const multitype *multi, std::pair< X86RegisterClass, int > initName)

Protected Attributes

rose_hash::unordered_map<
uint64_t, RoseBin_Variable * > 
variables
GraphAlgorithmsg_algo
variablesReverseType variablesReverse
rose_hash::unordered_map<
uint64_t, RoseBin_Variable * > 
memory
int nrOfMemoryWrites
int nrOfRegisterWrites

Member Typedef Documentation

typedef rose_hash::unordered_map<std::string, uint64_t> RoseBin_DataFlowAbstract::variablesReverseType [protected]

typedef std::multimap< std::pair<X86RegisterClass, int>, SgGraphNode*> RoseBin_DataFlowAbstract::multitype [protected]

typedef rose_hash::unordered_map< SgGraphNode*, multitype,rose_hash::hash_graph_node,rose_hash::eqstr_graph_node> RoseBin_DataFlowAbstract::tabletype [protected]


Constructor & Destructor Documentation

RoseBin_DataFlowAbstract::RoseBin_DataFlowAbstract ( GraphAlgorithms algo  )  [inline]

virtual RoseBin_DataFlowAbstract::~RoseBin_DataFlowAbstract (  )  [inline, virtual]


Member Function Documentation

std::set< SgGraphNode* > RoseBin_DataFlowAbstract::getAnyFor ( const multitype multi,
std::pair< X86RegisterClass, int >  initName 
) [protected]

SgGraphNode* RoseBin_DataFlowAbstract::getPredecessor ( SgGraphNode node  ) 

SgGraphNode* RoseBin_DataFlowAbstract::getSuccessor ( SgGraphNode node  ) 

virtual bool RoseBin_DataFlowAbstract::run ( std::string &  name,
SgGraphNode node,
SgGraphNode before 
) [pure virtual]

Implemented in InterruptAnalysis, RoseBin_DefUseAnalysis, RoseBin_Emulate, and RoseBin_VariableAnalysis.

virtual bool RoseBin_DataFlowAbstract::runEdge ( SgGraphNode node,
SgGraphNode next 
) [pure virtual]

Implemented in InterruptAnalysis, RoseBin_DefUseAnalysis, RoseBin_Emulate, and RoseBin_VariableAnalysis.

virtual void RoseBin_DataFlowAbstract::init ( RoseBin_Graph *  vg  )  [pure virtual]

Implemented in InterruptAnalysis, RoseBin_DefUseAnalysis, RoseBin_Emulate, and RoseBin_VariableAnalysis.

int RoseBin_DataFlowAbstract::getDefinitionSize (  )  [inline]

int RoseBin_DataFlowAbstract::getUsageSize (  )  [inline]

int64_t RoseBin_DataFlowAbstract::check_isRegister ( SgGraphNode node,
SgAsmx86Instruction inst,
std::pair< X86RegisterClass, int >  codeSearch,
bool  rightSide,
std::vector< std::pair< X86RegisterClass, int > > &  regsOfInterest,
bool &  cantTrack 
)

int64_t RoseBin_DataFlowAbstract::check_isLeftSideRegister ( SgAsmx86Instruction inst,
std::pair< X86RegisterClass, int >  codeSearch 
)

uint64_t RoseBin_DataFlowAbstract::getValueInExpression ( SgAsmValueExpression valExp  ) 

int64_t RoseBin_DataFlowAbstract::trackValueForRegister ( SgGraphNode node,
std::pair< X86RegisterClass, int >  codeSearch,
bool &  cantTrack,
SgAsmx86RegisterReferenceExpression refExpr_rightHand 
)

std::pair<X86RegisterClass, int> RoseBin_DataFlowAbstract::check_isRegister ( SgGraphNode node,
SgAsmx86Instruction inst,
bool  rightSide,
bool &  memoryReference,
bool &  registerReference 
)

SgAsmExpression* RoseBin_DataFlowAbstract::getOperand ( SgAsmx86Instruction inst,
bool  rightSide 
)

uint64_t RoseBin_DataFlowAbstract::getValueInMemoryRefExp ( SgAsmExpression ref  ) 

bool RoseBin_DataFlowAbstract::isInstructionAlteringOneRegister ( SgAsmx86Instruction inst  ) 

bool RoseBin_DataFlowAbstract::altersMultipleRegisters ( std::vector< std::pair< X86RegisterClass, int > > &  codes,
SgAsmx86Instruction inst 
)

bool RoseBin_DataFlowAbstract::sameParents ( SgGraphNode node,
SgGraphNode next 
)

void RoseBin_DataFlowAbstract::printDefTableToFile ( std::string  file  ) 

std::set< SgGraphNode* > RoseBin_DataFlowAbstract::getDefFor ( SgGraphNode node,
std::pair< X86RegisterClass, int >  initName 
)

std::set< SgGraphNode* > RoseBin_DataFlowAbstract::getUseFor ( SgGraphNode node,
std::pair< X86RegisterClass, int >  initName 
)

const std::multimap< std::pair<X86RegisterClass, int> , SgGraphNode* >& RoseBin_DataFlowAbstract::getDefMultiMapFor ( SgGraphNode node  ) 

const std::multimap< std::pair<X86RegisterClass, int> , SgGraphNode* >& RoseBin_DataFlowAbstract::getUseMultiMapFor ( SgGraphNode node  ) 

uint64_t RoseBin_DataFlowAbstract::getValueOfInstr ( SgAsmx86Instruction inst,
bool  rightSide 
)

RoseBin_Variable* RoseBin_DataFlowAbstract::createVariable ( uint64_t  position,
std::vector< uint64_t >  pos,
std::string  name,
RoseBin_DataTypes::DataTypes  type,
std::string  description,
int  length,
std::vector< uint64_t >  value,
bool  memoryRef 
)

RoseBin_Variable* RoseBin_DataFlowAbstract::getVariable ( uint64_t  pos  ) 

RoseBin_Variable* RoseBin_DataFlowAbstract::getVariable ( std::string  var  ) 


Member Data Documentation

rose_hash::unordered_map<uint64_t, RoseBin_Variable*> RoseBin_DataFlowAbstract::variables [protected]

GraphAlgorithms* RoseBin_DataFlowAbstract::g_algo [protected]

variablesReverseType RoseBin_DataFlowAbstract::variablesReverse [protected]

rose_hash::unordered_map<uint64_t, RoseBin_Variable*> RoseBin_DataFlowAbstract::memory [protected]

Reimplemented in RoseBin_Emulate.

int RoseBin_DataFlowAbstract::nrOfMemoryWrites [protected]

int RoseBin_DataFlowAbstract::nrOfRegisterWrites [protected]

tabletype RoseBin_DataFlowAbstract::deftable

tabletype RoseBin_DataFlowAbstract::usetable

RoseBin_Graph* RoseBin_DataFlowAbstract::vizzGraph


The documentation for this class was generated from the following file:
Generated on Tue Jan 31 05:34:33 2012 for ROSE by  doxygen 1.4.7