25 lines
652 B
C++
Raw Normal View History

2024-09-07 18:00:09 +06:00
#include "disasm.h"
2024-09-09 03:10:53 +06:00
thread_local ppc::DisassemblerEngine ppc::gBigEndianDisassembler{ BFD_ENDIAN_BIG, "cell 64"};
2024-09-07 18:00:09 +06:00
2024-09-08 21:39:04 +06:00
ppc::DisassemblerEngine::DisassemblerEngine(bfd_endian endian, const char* options)
2024-09-07 18:00:09 +06:00
{
2024-09-08 21:39:04 +06:00
INIT_DISASSEMBLE_INFO(info, stdout, fprintf);
info.arch = bfd_arch_powerpc;
info.endian = endian;
info.disassembler_options = options;
2024-09-07 18:00:09 +06:00
}
2024-09-08 21:39:04 +06:00
int ppc::DisassemblerEngine::Disassemble(const void* code, size_t size, uint64_t base, ppc_insn& out)
2024-09-07 18:00:09 +06:00
{
2024-09-08 21:39:04 +06:00
if (size < 4)
{
return 0;
}
2024-09-07 18:00:09 +06:00
2024-09-08 21:39:04 +06:00
info.buffer = (bfd_byte*)code;
info.buffer_vma = base;
info.buffer_length = size;
return decode_insn_ppc(base, &info, &out);
2024-09-07 18:00:09 +06:00
}