| // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef COURGETTE_DISASSEMBLER_H_ |
| #define COURGETTE_DISASSEMBLER_H_ |
| |
| #include "base/basictypes.h" |
| |
| namespace courgette { |
| |
| class AssemblyProgram; |
| class PEInfo; |
| |
| class Disassembler { |
| public: |
| // Factory methods for making disassemblers for various kinds of executables. |
| // We have only one so far. |
| |
| static Disassembler* MakeDisassemberWin32X86(PEInfo* pe_info); |
| |
| // Disassembles the item passed to the factory method into the output |
| // parameter 'program'. |
| virtual bool Disassemble(AssemblyProgram* program) = 0; |
| |
| // Deletes 'this' disassembler. |
| virtual void Destroy() = 0; |
| |
| protected: |
| Disassembler() {} |
| virtual ~Disassembler() {} |
| |
| private: |
| DISALLOW_COPY_AND_ASSIGN(Disassembler); |
| }; |
| |
| } // namespace courgette |
| #endif // COURGETTE_DISASSEMBLER_H_ |