1*a03ca8b9SKrzysztof Kosiński // Copyright 2017 The Chromium Authors. All rights reserved. 2*a03ca8b9SKrzysztof Kosiński // Use of this source code is governed by a BSD-style license that can be 3*a03ca8b9SKrzysztof Kosiński // found in the LICENSE file. 4*a03ca8b9SKrzysztof Kosiński 5*a03ca8b9SKrzysztof Kosiński #ifndef COMPONENTS_ZUCCHINI_DISASSEMBLER_NO_OP_H_ 6*a03ca8b9SKrzysztof Kosiński #define COMPONENTS_ZUCCHINI_DISASSEMBLER_NO_OP_H_ 7*a03ca8b9SKrzysztof Kosiński 8*a03ca8b9SKrzysztof Kosiński #include <memory> 9*a03ca8b9SKrzysztof Kosiński #include <string> 10*a03ca8b9SKrzysztof Kosiński #include <vector> 11*a03ca8b9SKrzysztof Kosiński 12*a03ca8b9SKrzysztof Kosiński #include "components/zucchini/buffer_view.h" 13*a03ca8b9SKrzysztof Kosiński #include "components/zucchini/disassembler.h" 14*a03ca8b9SKrzysztof Kosiński #include "components/zucchini/image_utils.h" 15*a03ca8b9SKrzysztof Kosiński 16*a03ca8b9SKrzysztof Kosiński namespace zucchini { 17*a03ca8b9SKrzysztof Kosiński 18*a03ca8b9SKrzysztof Kosiński // This disassembler works on any file and does not look for reference. 19*a03ca8b9SKrzysztof Kosiński class DisassemblerNoOp : public Disassembler { 20*a03ca8b9SKrzysztof Kosiński public: 21*a03ca8b9SKrzysztof Kosiński static constexpr uint16_t kVersion = 1; 22*a03ca8b9SKrzysztof Kosiński 23*a03ca8b9SKrzysztof Kosiński DisassemblerNoOp(); 24*a03ca8b9SKrzysztof Kosiński DisassemblerNoOp(const DisassemblerNoOp&) = delete; 25*a03ca8b9SKrzysztof Kosiński const DisassemblerNoOp& operator=(const DisassemblerNoOp&) = delete; 26*a03ca8b9SKrzysztof Kosiński ~DisassemblerNoOp() override; 27*a03ca8b9SKrzysztof Kosiński 28*a03ca8b9SKrzysztof Kosiński // Disassembler: 29*a03ca8b9SKrzysztof Kosiński ExecutableType GetExeType() const override; 30*a03ca8b9SKrzysztof Kosiński std::string GetExeTypeString() const override; 31*a03ca8b9SKrzysztof Kosiński std::vector<ReferenceGroup> MakeReferenceGroups() const override; 32*a03ca8b9SKrzysztof Kosiński 33*a03ca8b9SKrzysztof Kosiński private: 34*a03ca8b9SKrzysztof Kosiński friend Disassembler; 35*a03ca8b9SKrzysztof Kosiński 36*a03ca8b9SKrzysztof Kosiński bool Parse(ConstBufferView image) override; 37*a03ca8b9SKrzysztof Kosiński }; 38*a03ca8b9SKrzysztof Kosiński 39*a03ca8b9SKrzysztof Kosiński } // namespace zucchini 40*a03ca8b9SKrzysztof Kosiński 41*a03ca8b9SKrzysztof Kosiński #endif // COMPONENTS_ZUCCHINI_DISASSEMBLER_NO_OP_H_ 42