RoseBin_VariableAnalysis.h

Go to the documentation of this file.
00001 /****************************************************
00002  * RoseBin :: Binary Analysis for ROSE
00003  * Author : tps
00004  * Date : Sep7 07
00005  * Decription : Data flow Analysis
00006  ****************************************************/
00007 
00008 #ifndef __RoseBin_VariableAnalysis__
00009 #define __RoseBin_VariableAnalysis__
00010 
00011 #include "RoseBin_DataFlowAbstract.h"
00012 #include "RoseBin_DefUseAnalysis.h"
00013 
00014 
00015 class RoseBin_VariableAnalysis : public RoseBin_DataFlowAbstract{
00016  private:
00017  public:
00018 
00019  RoseBin_VariableAnalysis(RoseBin_DefUseAnalysis* defuse, GraphAlgorithms* algo):RoseBin_DataFlowAbstract(algo) {
00020     deftable = (defuse->deftable);
00021   }
00022   ~RoseBin_VariableAnalysis() {}
00023 
00024 
00025 
00026   std::string getIntCallName_Linux32bit(uint64_t rax,RoseBin_DataTypes::DataTypes& data_ebx,
00027                                         RoseBin_DataTypes::DataTypes& data_ecx,
00028                                         RoseBin_DataTypes::DataTypes& data_edx,
00029                                         std::vector<uint64_t>& val_rbx,
00030                                         std::vector<uint64_t>& val_rcx,
00031                                         std::vector<uint64_t>& val_rdx,
00032                                         std::vector<uint64_t>& pos_ebx,
00033                                         std::vector<uint64_t>& pos_ecx,
00034                                         std::vector<uint64_t>& pos_edx,
00035                                         uint64_t fpos_rbx, uint64_t fpos_rcx, uint64_t fpos_rdx);
00036   std::string getIntCallName_Linux64bit(uint64_t rax,RoseBin_DataTypes::DataTypes& data_ebx,
00037                                         RoseBin_DataTypes::DataTypes& data_ecx,
00038                                         RoseBin_DataTypes::DataTypes& data_edx,
00039                                         std::vector<uint64_t>& val_rbx,
00040                                         std::vector<uint64_t>& val_rcx,
00041                                         std::vector<uint64_t>& val_rdx,
00042                                         std::vector<uint64_t>& pos_ebx,
00043                                         std::vector<uint64_t>& pos_ecx,
00044                                         std::vector<uint64_t>& pos_edx,
00045                                         uint64_t fpos_rbx, uint64_t fpos_rcx, uint64_t fpos_rdx);
00046   std::string getIntCallName(uint64_t rax,RoseBin_DataTypes::DataTypes& data_ebx,
00047                              RoseBin_DataTypes::DataTypes& data_ecx,
00048                              RoseBin_DataTypes::DataTypes& data_edx,
00049                              std::vector<uint64_t>& val_rbx,
00050                              std::vector<uint64_t>& val_rcx,
00051                              std::vector<uint64_t>& val_rdx,
00052                              std::vector<uint64_t>& pos_ebx,
00053                              std::vector<uint64_t>& pos_ecx,
00054                              std::vector<uint64_t>& pos_edx,
00055                              uint64_t fpos_rbx, uint64_t fpos_rcx, uint64_t fpos_rdx);
00056 
00057   bool run(std::string& name, SgGraphNode* node,SgGraphNode* previous);
00058 
00059   bool runEdge(SgGraphNode* node, SgGraphNode* next) {
00060     return false;
00061   }
00062 
00063   void init(RoseBin_Graph* vg) {
00064     vizzGraph = vg;
00065   }
00066 
00067   void getValueForDefinition(std::vector<uint64_t>& vec,
00068                              std::vector<uint64_t>& positions,
00069                              uint64_t& fpos,
00070                              SgGraphNode* node,
00071                              std::pair<X86RegisterClass, int> reg );
00072 
00073 };
00074 
00075 #endif
00076 

Generated on Wed May 16 06:18:11 2012 for ROSE by  doxygen 1.4.7