28 lines
777 B
C
Raw Normal View History

2024-09-07 18:00:09 +06:00
#pragma once
2024-09-08 21:39:04 +06:00
#include <dis-asm.h>
2024-09-07 18:00:09 +06:00
namespace ppc
{
2024-09-08 21:39:04 +06:00
struct DisassemblerEngine
2024-09-07 18:21:08 +06:00
{
2024-09-08 21:39:04 +06:00
disassemble_info info{};
DisassemblerEngine(const DisassemblerEngine&) = default;
DisassemblerEngine& operator=(const DisassemblerEngine&) = delete;
2024-09-07 18:00:09 +06:00
2024-09-08 21:39:04 +06:00
DisassemblerEngine(bfd_endian endian, const char* options);
~DisassemblerEngine() = default;
2024-09-07 22:56:20 +06:00
2024-09-08 21:39:04 +06:00
/**
* \return Numbers of bytes decoded
*/
int Disassemble(const void* code, size_t size, uint64_t base, ppc_insn& out);
};
thread_local extern DisassemblerEngine gBigEndianDisassembler;
2024-09-07 22:56:20 +06:00
2024-09-08 21:39:04 +06:00
static int Disassemble(const void* code, size_t size, uint64_t base, ppc_insn& out)
2024-09-07 18:21:08 +06:00
{
2024-09-08 21:39:04 +06:00
return gBigEndianDisassembler.Disassemble(code, size, base, out);
2024-09-07 18:21:08 +06:00
}
2024-09-08 21:39:04 +06:00
}