#include <RoseBin_DataFlowAbstract.h>
Inheritance diagram for RoseBin_DataFlowAbstract:


Public Member Functions | |
| SgGraphNode * | getPredecessor (SgGraphNode *node) |
| SgGraphNode * | getSuccessor (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 > > ®sOfInterest, 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 ®isterReference) |
| SgAsmExpression * | getOperand (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_Variable * | 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 * | getVariable (uint64_t pos) |
| RoseBin_Variable * | getVariable (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 |
| GraphAlgorithms * | g_algo |
| variablesReverseType | variablesReverse |
| rose_hash::unordered_map< uint64_t, RoseBin_Variable * > | memory |
| int | nrOfMemoryWrites |
| int | nrOfRegisterWrites |
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] |
| RoseBin_DataFlowAbstract::RoseBin_DataFlowAbstract | ( | GraphAlgorithms * | algo | ) | [inline] |
| virtual RoseBin_DataFlowAbstract::~RoseBin_DataFlowAbstract | ( | ) | [inline, virtual] |
| 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 | ) |
rose_hash::unordered_map<uint64_t, RoseBin_Variable*> RoseBin_DataFlowAbstract::variables [protected] |
GraphAlgorithms* RoseBin_DataFlowAbstract::g_algo [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] |
| RoseBin_Graph* RoseBin_DataFlowAbstract::vizzGraph |
1.4.7