Print instruction summary

This commit is contained in:
momo5502
2025-08-18 19:00:31 +02:00
parent 5a3d05c64c
commit c71c204583
5 changed files with 81 additions and 3 deletions

View File

@@ -221,8 +221,33 @@ namespace
}
}
void print_instruction_summary(const analysis_context& c)
{
std::map<uint64_t, std::vector<std::string>> instruction_counts{};
for (const auto& [mnemonic, count] : c.instructions)
{
instruction_counts[count].push_back(mnemonic);
}
c.win_emu->log.print(color::white, "Instruction summary:\n");
for (const auto& [count, mnemonics] : instruction_counts)
{
for (const auto& mnemonic : mnemonics)
{
c.win_emu->log.print(color::white, "%s: %" PRIx64 "\n", mnemonic.c_str(), count);
}
}
}
void do_post_emulation_work(const analysis_context& c)
{
if (c.settings->instruction_summary)
{
print_instruction_summary(c);
}
if (c.settings->buffer_stdout)
{
c.win_emu->log.info("%.*s%s", static_cast<int>(c.output.size()), c.output.data(), c.output.ends_with("\n") ? "" : "\n");
@@ -647,6 +672,10 @@ namespace
{
options.tenet_trace = true;
}
else if (arg == "-is" || arg == "--instruction-summary")
{
options.instruction_summary = true;
}
else if (arg == "-m" || arg == "--module")
{
if (args.size() < 2)