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 }