From db853d85137daafa5bcaee996b137440b3af9a90 Mon Sep 17 00:00:00 2001 From: Henrik Rydgard Date: Sun, 9 Nov 2014 12:10:37 +0100 Subject: [PATCH] Collapse sequences of "int3" (padding after block linking) in x86 disassembly. --- Core/MIPS/JitCommon/JitCommon.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/Core/MIPS/JitCommon/JitCommon.cpp b/Core/MIPS/JitCommon/JitCommon.cpp index 9da6253a86..757ca02c8e 100644 --- a/Core/MIPS/JitCommon/JitCommon.cpp +++ b/Core/MIPS/JitCommon/JitCommon.cpp @@ -18,6 +18,7 @@ #include #include "JitCommon.h" +#include "Common/StringUtils.h" #include "ext/disarm.h" #include "ext/udis86/udis86.h" @@ -72,8 +73,22 @@ std::vector DisassembleX86(const u8 *data, int size) { ud_set_syntax(&ud_obj, UD_SYN_INTEL); ud_set_input_buffer(&ud_obj, data, size); + + int int3_count = 0; while (ud_disassemble(&ud_obj) != 0) { - lines.push_back(ud_insn_asm(&ud_obj)); + std::string str = ud_insn_asm(&ud_obj); + if (str == "int3") { + int3_count++; + } else { + if (int3_count) { + lines.push_back(StringFromFormat("int3 (x%i)", int3_count)); + int3_count = 0; + } + lines.push_back(str); + } + } + if (int3_count) { + lines.push_back(StringFromFormat("int3 (x%i)", int3_count)); } return lines; }