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
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";
|
|
}
|
|
}
|
|
} |