1 #pragma once
2 
3 #include <hex/views/view.hpp>
4 
5 #include "helpers/disassembler.hpp"
6 
7 #include <cstdio>
8 #include <string>
9 #include <vector>
10 
11 namespace hex {
12 
13     namespace prv { class Provider; }
14 
15     struct Disassembly {
16         u64 address;
17         u64 offset;
18         size_t size;
19         std::string bytes;
20         std::string mnemonic;
21         std::string operators;
22     };
23 
24     class ViewDisassembler : public View {
25     public:
26         explicit ViewDisassembler();
27         ~ViewDisassembler() override;
28 
29         void drawContent() override;
30         void drawMenu() override;
31 
32     private:
33         bool m_shouldInvalidate = false;
34 
35         u64 m_baseAddress = 0;
36         u64 m_codeRegion[2] = { 0 };
37         bool m_shouldMatchSelection = false;
38 
39         Architecture m_architecture = Architecture::ARM;
40         cs_mode m_modeBasicARM = cs_mode(0), m_modeExtraARM = cs_mode(0), m_modeBasicMIPS = cs_mode(0), m_modeBasicPPC = cs_mode(0), m_modeBasicX86 = cs_mode(0);
41         bool m_littleEndianMode = true, m_micoMode = false, m_sparcV9Mode = false;
42 
43         std::vector<Disassembly> m_disassembly;
44 
45 
46     };
47 
48 }