ROSE 0.11.145.237
Disassembler/Cil.h
1#ifndef ROSE_BinaryAnalysis_Disassembler_Cil_H
2#define ROSE_BinaryAnalysis_Disassembler_Cil_H
3#include <featureTests.h>
4#ifdef ROSE_ENABLE_BINARY_ANALYSIS
5#include <Rose/BinaryAnalysis/Disassembler/Base.h>
6
7#include <Rose/BinaryAnalysis/Architecture/BasicTypes.h>
8#include <Rose/BinaryAnalysis/InstructionEnumsCil.h>
9
10#ifdef ROSE_ENABLE_BOOST_SERIALIZATION
11#include <boost/serialization/access.hpp>
12#include <boost/serialization/base_object.hpp>
13#endif
14
15namespace Rose {
16namespace BinaryAnalysis {
17namespace Disassembler {
18
23class Cil: public Base {
24public:
27
29 // Constructors
31protected:
32 explicit Cil(const Architecture::BaseConstPtr&);
33
34public:
37
38 virtual ~Cil();
39
40 virtual Base::Ptr clone() const override;
41
43 // Public methods
45public:
46 virtual SgAsmInstruction* disassembleOne(const MemoryMap::Ptr&, Address va, AddressSet* successors=nullptr) override;
47
49
50private:
51 SgAsmCilInstruction* makeUnknownInstruction(Address va, SgUnsignedCharList &bytes, size_t size);
52 SgAsmCilInstruction* makeInstruction(Address, SgUnsignedCharList& bytes/*in,out*/, size_t, CilInstructionKind,
53 SgAsmExpression* operand=nullptr) const;
54
56 // Serialization
58#ifdef ROSE_ENABLE_BOOST_SERIALIZATION
59private:
60 friend class boost::serialization::access;
61
62 template<class S>
63 void serialize(S &s, const unsigned /*version*/) {
64 s & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Disassembler::Base);
65 }
66#endif
67};
68
69} // namespace
70} // namespace
71} // namespace
72
73#endif
74#endif
Virtual base class for instruction disassemblers.
virtual SgAsmInstruction * makeUnknownInstruction(const Disassembler::Exception &) override
Makes an unknown instruction from an exception.
virtual Base::Ptr clone() const override
Creates a new copy of a disassembler.
static Ptr instance(const Architecture::BaseConstPtr &)
Allocating constructor.
virtual SgAsmInstruction * disassembleOne(const MemoryMap::Ptr &, Address va, AddressSet *successors=nullptr) override
This is the lowest level disassembly function and is implemented in the architecture-specific subclas...
Reference-counting intrusive smart pointer.
Base class for expressions.
Base class for machine instructions.
std::shared_ptr< const Base > BaseConstPtr
Reference counted pointer for Architecture::Base.
std::uint64_t Address
Address.
Definition Address.h:11
The ROSE library.