36 lines
950 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-09 03:10:53 +06:00
#include <ppc.h>
2024-09-07 18:00:09 +06:00
namespace ppc
{
struct DisassemblerEngine
{
disassemble_info info {};
DisassemblerEngine(const DisassemblerEngine&) = default;
DisassemblerEngine& operator=(const DisassemblerEngine&) = delete;
2024-09-07 22:56:20 +06:00
DisassemblerEngine(bfd_endian endian, const char* options);
~DisassemblerEngine() = default;
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);
};
2024-09-07 22:56:20 +06:00
thread_local extern DisassemblerEngine gBigEndianDisassembler;
2024-09-09 01:30:45 +06:00
static int Disassemble(const void* code, size_t size, uint64_t base, ppc_insn& out)
{
return gBigEndianDisassembler.Disassemble(code, size, base, out);
}
2024-09-18 13:07:07 +06:00
static int Disassemble(const void* code, uint64_t base, ppc_insn& out)
{
return Disassemble(code, 4, base, out);
2024-09-08 21:39:04 +06:00
}
static int Disassemble(const void* code, uint64_t base, ppc_insn* out, size_t nOut);
} // namespace ppc