You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

125 lines
3.0 KiB

#pragma once
namespace perses::x86util
{
static asmjit::x86::Gp getAsmRegAny(ZydisRegister reg)
{
using namespace asmjit;
switch (reg)
{
case ZYDIS_REGISTER_RAX:
return x86::regs::rax;
case ZYDIS_REGISTER_RBX:
return x86::regs::rbx;
case ZYDIS_REGISTER_RCX:
return x86::regs::rcx;
case ZYDIS_REGISTER_RDX:
return x86::regs::rdx;
case ZYDIS_REGISTER_RSI:
return x86::regs::rsi;
case ZYDIS_REGISTER_RDI:
return x86::regs::rdi;
case ZYDIS_REGISTER_RSP:
return x86::regs::rsp;
case ZYDIS_REGISTER_RBP:
return x86::regs::rbp;
case ZYDIS_REGISTER_R8:
return x86::regs::r8;
case ZYDIS_REGISTER_R8D:
return x86::regs::r8d;
case ZYDIS_REGISTER_R9:
return x86::regs::r9;
case ZYDIS_REGISTER_R9D:
return x86::regs::r9d;
case ZYDIS_REGISTER_R10:
return x86::regs::r10;
case ZYDIS_REGISTER_R10D:
return x86::regs::r10d;
case ZYDIS_REGISTER_R11:
return x86::regs::r11;
case ZYDIS_REGISTER_R11D:
return x86::regs::r11d;
case ZYDIS_REGISTER_R12:
return x86::regs::r12;
case ZYDIS_REGISTER_R12D:
return x86::regs::r12d;
case ZYDIS_REGISTER_R12B:
return x86::regs::r12b;
case ZYDIS_REGISTER_R13:
return x86::regs::r13;
case ZYDIS_REGISTER_R13B:
return x86::regs::r13b;
case ZYDIS_REGISTER_R13D:
return x86::regs::r13d;
case ZYDIS_REGISTER_R14:
return x86::regs::r14;
case ZYDIS_REGISTER_R14D:
return x86::regs::r14d;
case ZYDIS_REGISTER_R14B:
return x86::regs::r14b;
case ZYDIS_REGISTER_R15:
return x86::regs::r15;
case ZYDIS_REGISTER_R15D:
return x86::regs::r15d;
case ZYDIS_REGISTER_EAX:
return x86::regs::eax;
case ZYDIS_REGISTER_EBX:
return x86::regs::ebx;
case ZYDIS_REGISTER_ECX:
return x86::regs::ecx;
case ZYDIS_REGISTER_EDX:
return x86::regs::edx;
case ZYDIS_REGISTER_ESI:
return x86::regs::esi;
case ZYDIS_REGISTER_EDI:
return x86::regs::edi;
case ZYDIS_REGISTER_ESP:
return x86::regs::esp;
case ZYDIS_REGISTER_EBP:
return x86::regs::ebp;
case ZYDIS_REGISTER_AL:
return x86::regs::al;
case ZYDIS_REGISTER_AX:
return x86::regs::ax;
case ZYDIS_REGISTER_AH:
return x86::regs::ah;
case ZYDIS_REGISTER_BX:
return x86::regs::bx;
case ZYDIS_REGISTER_BL:
return x86::regs::bl;
case ZYDIS_REGISTER_BH:
return x86::regs::bh;
case ZYDIS_REGISTER_CX:
return x86::regs::cx;
case ZYDIS_REGISTER_CH:
return x86::regs::ch;
case ZYDIS_REGISTER_CL:
return x86::regs::cl;
case ZYDIS_REGISTER_DX:
return x86::regs::dx;
case ZYDIS_REGISTER_DH:
return x86::regs::dh;
case ZYDIS_REGISTER_SI:
return x86::regs::si;
case ZYDIS_REGISTER_DI:
return x86::regs::di;
case ZYDIS_REGISTER_DIL:
return x86::regs::dil;
case ZYDIS_REGISTER_DL:
return x86::regs::dl;
case ZYDIS_REGISTER_SP:
return x86::regs::sp;
case ZYDIS_REGISTER_BP:
return x86::regs::bp;
case ZYDIS_REGISTER_BPL:
return x86::regs::bpl;
case ZYDIS_REGISTER_SPL:
return x86::regs::spl;
case ZYDIS_REGISTER_SIL:
return x86::regs::sil;
default:
throw "unknown";
}
}
}