mirror of
https://github.com/momo5502/emulator.git
synced 2026-01-18 11:13:57 +00:00
42 lines
1.0 KiB
C++
42 lines
1.0 KiB
C++
#pragma once
|
|
|
|
#include <set>
|
|
#include <string>
|
|
#include "disassembler.hpp"
|
|
|
|
struct mapped_module;
|
|
class module_manager;
|
|
class windows_emulator;
|
|
|
|
using string_set = std::set<std::string, std::less<>>;
|
|
|
|
struct analysis_settings
|
|
{
|
|
bool concise_logging{false};
|
|
bool verbose_logging{false};
|
|
bool silent{false};
|
|
bool buffer_stdout{false};
|
|
bool instruction_summary{false};
|
|
|
|
string_set modules{};
|
|
string_set ignored_functions{};
|
|
};
|
|
|
|
struct analysis_context
|
|
{
|
|
const analysis_settings* settings{};
|
|
windows_emulator* win_emu{};
|
|
|
|
std::string output{};
|
|
bool has_reached_main{false};
|
|
|
|
disassembler d{};
|
|
std::unordered_map<uint32_t, uint64_t> instructions{};
|
|
std::set<uint64_t> rdtsc_cache{};
|
|
std::set<uint64_t> rdtscp_cache{};
|
|
std::set<std::pair<uint64_t, uint32_t>> cpuid_cache{};
|
|
};
|
|
|
|
void register_analysis_callbacks(analysis_context& c);
|
|
std::optional<mapped_module*> get_module_if_interesting(module_manager& manager, const string_set& modules, uint64_t address);
|