2024-09-07 18:00:09 +06:00
|
|
|
#pragma once
|
|
|
|
#include <capstone/capstone.h>
|
|
|
|
|
|
|
|
struct DisassemblerEngine
|
|
|
|
{
|
2024-09-07 18:21:08 +06:00
|
|
|
csh handle{};
|
2024-09-07 18:00:09 +06:00
|
|
|
|
2024-09-07 18:21:08 +06:00
|
|
|
DisassemblerEngine(const DisassemblerEngine&) = default;
|
|
|
|
DisassemblerEngine& operator=(const DisassemblerEngine&) = delete;
|
2024-09-07 18:00:09 +06:00
|
|
|
|
2024-09-07 18:21:08 +06:00
|
|
|
DisassemblerEngine(cs_arch arch, cs_mode mode);
|
|
|
|
~DisassemblerEngine();
|
|
|
|
size_t Disassemble(const uint8_t* code, size_t size, uint64_t base, size_t count, cs_insn** instructions) const;
|
|
|
|
void SetOption(cs_opt_type option, size_t value);
|
2024-09-07 18:00:09 +06:00
|
|
|
|
2024-09-07 18:21:08 +06:00
|
|
|
void SetDetail(bool value)
|
|
|
|
{
|
|
|
|
SetOption(CS_OPT_DETAIL, value);
|
|
|
|
}
|
2024-09-07 18:00:09 +06:00
|
|
|
};
|
|
|
|
|
|
|
|
namespace ppc
|
|
|
|
{
|
2024-09-07 18:21:08 +06:00
|
|
|
extern DisassemblerEngine gPPCBigEndianDisassembler;
|
|
|
|
static size_t Disassemble(const uint8_t* code, size_t size, uint64_t base, size_t count, cs_insn** instructions)
|
|
|
|
{
|
|
|
|
return gPPCBigEndianDisassembler.Disassemble(code, size, base, count, instructions);
|
|
|
|
}
|
2024-09-07 18:00:09 +06:00
|
|
|
|
2024-09-07 18:21:08 +06:00
|
|
|
static void SetDetail(bool value)
|
|
|
|
{
|
|
|
|
gPPCBigEndianDisassembler.SetDetail(value);
|
|
|
|
}
|
2024-09-07 18:00:09 +06:00
|
|
|
}
|