xref: /aosp_15_r20/external/zucchini/disassembler_no_op.h (revision a03ca8b91e029cd15055c20c78c2e087c84792e4)
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