00001 /* 00002 *$Revision: 1.3 $ // 1.1.2.1 00003 */ 00004 #ifndef PPCFRONTEND_H 00005 #define PPCFRONTEND_H 00006 00007 // Class PPCFrontEnd: derived from FrontEnd, with source machine specific 00008 // behaviour 00009 00010 #include <set> 00011 #include "decoder.h" 00012 #include "exp.h" // Ugh... just for enum OPER 00013 #include "frontend.h" // In case included bare, e.g. ProcTest.cpp 00014 00015 class FrontEnd; 00016 class PPCDecoder; 00017 struct DecodeResult; 00018 class CallStatement; 00019 00020 class PPCFrontEnd : public FrontEnd 00021 { 00022 public: 00023 PPCFrontEnd(BinaryFile *pBF, Prog* prog, BinaryFileFactory* pbff); 00024 /** 00025 * Virtual destructor. 00026 */ 00027 virtual ~PPCFrontEnd(); 00028 00029 virtual platform getFrontEndId() { return PLAT_PPC; } 00030 00031 virtual bool processProc(ADDRESS uAddr, UserProc* pProc, std::ofstream &os, bool frag = false, 00032 bool spec = false); 00033 00034 00035 virtual std::vector<Exp*> &getDefaultParams(); 00036 virtual std::vector<Exp*> &getDefaultReturns(); 00037 00038 virtual ADDRESS getMainEntryPoint( bool &gotMain ); 00039 00040 }; 00041 00042 #endif