InterruptAnalysis.h

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

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