Emitter (X86).
- Note
- This class cannot be instantiated, you can only cast to it and use it as emitter that emits to either
x86::Assembler
, x86::Builder
, or x86::Compiler
(use with caution with x86::Compiler
as it requires virtual registers).
T* as() noexcept
const T* as() const noexcept
template<typename... Args>
Gp gpz(
uint32_t id)
const noexcept Gp gpz(
const Gp& reg)
const noexcept Mem ptr_base(
uint32_t baseId,
int32_t off = 0,
uint32_t size = 0)
const noexcept Mem ptr_zax(
int32_t off = 0,
uint32_t size = 0)
const noexcept Mem ptr_zcx(
int32_t off = 0,
uint32_t size = 0)
const noexcept Mem ptr_zdx(
int32_t off = 0,
uint32_t size = 0)
const noexcept Mem ptr_zbx(
int32_t off = 0,
uint32_t size = 0)
const noexcept Mem ptr_zsp(
int32_t off = 0,
uint32_t size = 0)
const noexcept Mem ptr_zbp(
int32_t off = 0,
uint32_t size = 0)
const noexcept Mem ptr_zsi(
int32_t off = 0,
uint32_t size = 0)
const noexcept Mem ptr_zdi(
int32_t off = 0,
uint32_t size = 0)
const noexcept Mem intptr_ptr(
const Gp& base,
const Gp& index,
uint32_t shift = 0,
int32_t offset = 0)
const noexcept Mem intptr_ptr(
const Gp& base,
const Vec& index,
uint32_t shift = 0,
int32_t offset = 0)
const noexcept Mem intptr_ptr(
const Label& base,
const Gp& index,
uint32_t shift,
int32_t offset = 0)
const noexcept Mem intptr_ptr(
uint64_t base,
const Gp& index,
uint32_t shift = 0)
const noexcept Error db(
uint8_t x,
size_t repeatCount = 1)
Error dw(
uint16_t x,
size_t repeatCount = 1)
Error dd(
uint32_t x,
size_t repeatCount = 1)
Error dq(
uint64_t x,
size_t repeatCount = 1)
template<typename T>
This&
rep(
const Gp& zcx)
noexceptThis&
repe(
const Gp& zcx)
noexceptThis&
repz(
const Gp& zcx)
noexceptThis&
repne(
const Gp& zcx)
noexceptThis&
repnz(
const Gp& zcx)
noexceptThis&
k(
const KReg& kreg)
noexceptError cbw(
const Gp_AX& o0)
Error cdq(
const Gp_EDX& o0,
const Gp_EAX& o1)
Error cdqe(
const Gp_EAX& o0)
Error cqo(
const Gp_RDX& o0,
const Gp_RAX& o1)
Error cwd(
const Gp_DX& o0,
const Gp_AX& o1)
Error cwde(
const Gp_EAX& o0)
Error cmps(
const DS_ZSI& o0,
const ES_ZDI& o1)
Error cmpxchg(
const Gp& o0,
const Gp& o1,
const Gp_ZAX& o2)
Error cmpxchg(
const Mem& o0,
const Gp& o1,
const Gp_ZAX& o2)
Error cmpxchg16b(
const Mem& o0,
const Gp_RDX& o1,
const Gp_RAX& o2,
const Gp_RCX& o3,
const Gp_RBX& o4)
Error cmpxchg8b(
const Mem& o0,
const Gp_EDX& o1,
const Gp_EAX& o2,
const Gp_ECX& o3,
const Gp_EBX& o4)
Error lods(
const Gp_ZAX& o0,
const DS_ZSI& o1)
Error loop(
const Gp_ZCX& o0,
const Imm& o1)
Error loope(
const Gp_ZCX& o0,
const Imm& o1)
Error loopne(
const Gp_ZCX& o0,
const Imm& o1)
Error movs(
const ES_ZDI& o0,
const DS_ZSI& o1)
Error mul(
const Gp_AX& o0,
const Gp& o1)
Error mul(
const Gp_AX& o0,
const Mem& o1)
Error mul(
const Gp_ZDX& o0,
const Gp_ZAX& o1,
const Gp& o2)
Error mul(
const Gp_ZDX& o0,
const Gp_ZAX& o1,
const Mem& o2)
Error rcl(
const Gp& o0,
const Gp_CL& o1)
Error rcl(
const Mem& o0,
const Gp_CL& o1)
Error rcr(
const Gp& o0,
const Gp_CL& o1)
Error rcr(
const Mem& o0,
const Gp_CL& o1)
Error rol(
const Gp& o0,
const Gp_CL& o1)
Error rol(
const Mem& o0,
const Gp_CL& o1)
Error ror(
const Gp& o0,
const Gp_CL& o1)
Error ror(
const Mem& o0,
const Gp_CL& o1)
Error sal(
const Gp& o0,
const Gp_CL& o1)
Error sal(
const Mem& o0,
const Gp_CL& o1)
Error sar(
const Gp& o0,
const Gp_CL& o1)
Error sar(
const Mem& o0,
const Gp_CL& o1)
Error scas(
const Gp_ZAX& o0,
const ES_ZDI& o1)
Error shl(
const Gp& o0,
const Gp_CL& o1)
Error shl(
const Mem& o0,
const Gp_CL& o1)
Error shr(
const Gp& o0,
const Gp_CL& o1)
Error shr(
const Mem& o0,
const Gp_CL& o1)
Error shld(
const Gp& o0,
const Gp& o1,
const Gp_CL& o2)
Error shld(
const Mem& o0,
const Gp& o1,
const Gp_CL& o2)
Error shrd(
const Gp& o0,
const Gp& o1,
const Gp_CL& o2)
Error shrd(
const Mem& o0,
const Gp& o1,
const Gp_CL& o2)
Error stos(
const ES_ZDI& o0,
const Gp_ZAX& o1)
Error in(
const Gp_ZAX& o0,
const Imm& o1)
Error in(
const Gp_ZAX& o0,
const Gp_DX& o1)
Error ins(
const ES_ZDI& o0,
const Gp_DX& o1)
Error out(
const Imm& o0,
const Gp_ZAX& o1)
Error out(
const Gp_DX& o0,
const Gp_ZAX& o1)
Error outs(
const Gp_DX& o0,
const DS_ZSI& o1)
Error cpuid(
const Gp_EAX& o0,
const Gp_EBX& o1,
const Gp_ECX& o2,
const Gp_EDX& o3)
Error lahf(
const Gp_AH& o0)
Error sahf(
const Gp_AH& o0)
Error mulx(
const Gp& o0,
const Gp& o1,
const Gp& o2,
const Gp_ZDX& o3)
Error mulx(
const Gp& o0,
const Gp& o1,
const Mem& o2,
const Gp_ZDX& o3)
Error clzero(
const DS_ZAX& o0)
Error rdpru(
const Gp_EDX& o0,
const Gp_EAX& o1,
const Gp_ECX& o2)
Error rdpkru(
const Gp_EDX& o0,
const Gp_EAX& o1,
const Gp_ECX& o2)
Error rdtsc(
const Gp_EDX& o0,
const Gp_EAX& o1)
Error rdtscp(
const Gp_EDX& o0,
const Gp_EAX& o1,
const Gp_ECX& o2)
Error xgetbv(
const Gp_EDX& o0,
const Gp_EAX& o1,
const Gp_ECX& o2)
Error xrstor(
const Mem& o0,
const Gp_EDX& o1,
const Gp_EAX& o2)
Error xrstor64(
const Mem& o0,
const Gp_EDX& o1,
const Gp_EAX& o2)
Error xrstors(
const Mem& o0,
const Gp_EDX& o1,
const Gp_EAX& o2)
Error xrstors64(
const Mem& o0,
const Gp_EDX& o1,
const Gp_EAX& o2)
Error xsave(
const Mem& o0,
const Gp_EDX& o1,
const Gp_EAX& o2)
Error xsave64(
const Mem& o0,
const Gp_EDX& o1,
const Gp_EAX& o2)
Error xsavec(
const Mem& o0,
const Gp_EDX& o1,
const Gp_EAX& o2)
Error xsavec64(
const Mem& o0,
const Gp_EDX& o1,
const Gp_EAX& o2)
Error xsaveopt(
const Mem& o0,
const Gp_EDX& o1,
const Gp_EAX& o2)
Error xsaveopt64(
const Mem& o0,
const Gp_EDX& o1,
const Gp_EAX& o2)
Error xsaves(
const Mem& o0,
const Gp_EDX& o1,
const Gp_EAX& o2)
Error xsaves64(
const Mem& o0,
const Gp_EDX& o1,
const Gp_EAX& o2)
Error rdmsr(
const Gp_EDX& o0,
const Gp_EAX& o1,
const Gp_ECX& o2)
Error rdpmc(
const Gp_EDX& o0,
const Gp_EAX& o1,
const Gp_ECX& o2)
Error wrmsr(
const Gp_EDX& o0,
const Gp_EAX& o1,
const Gp_ECX& o2)
Error xsetbv(
const Gp_EDX& o0,
const Gp_EAX& o1,
const Gp_ECX& o2)
Error invlpgb(
const Gp_EAX& o0,
const Gp_EDX& o1,
const Gp_ECX& o2)
Error blendvpd(
const Xmm& o0,
const Xmm& o1,
const XMM0& o2)
Error blendvpd(
const Xmm& o0,
const Mem& o1,
const XMM0& o2)
Error blendvps(
const Xmm& o0,
const Xmm& o1,
const XMM0& o2)
Error blendvps(
const Xmm& o0,
const Mem& o1,
const XMM0& o2)
Error maskmovq(
const Mm& o0,
const Mm& o1,
const DS_ZDI& o2)
Error maskmovdqu(
const Xmm& o0,
const Xmm& o1,
const DS_ZDI& o2)
Error pblendvb(
const Xmm& o0,
const Xmm& o1,
const XMM0& o2)
Error pblendvb(
const Xmm& o0,
const Mem& o1,
const XMM0& o2)
Error pcmpestri(
const Xmm& o0,
const Xmm& o1,
const Imm& o2,
const Gp_ECX& o3,
const Gp_EAX& o4,
const Gp_EDX& o5)
Error pcmpestri(
const Xmm& o0,
const Mem& o1,
const Imm& o2,
const Gp_ECX& o3,
const Gp_EAX& o4,
const Gp_EDX& o5)
Error pcmpestrm(
const Xmm& o0,
const Xmm& o1,
const Imm& o2,
const XMM0& o3,
const Gp_EAX& o4,
const Gp_EDX& o5)
Error pcmpestrm(
const Xmm& o0,
const Mem& o1,
const Imm& o2,
const XMM0& o3,
const Gp_EAX& o4,
const Gp_EDX& o5)
Error pcmpistri(
const Xmm& o0,
const Xmm& o1,
const Imm& o2,
const Gp_ECX& o3)
Error pcmpistri(
const Xmm& o0,
const Mem& o1,
const Imm& o2,
const Gp_ECX& o3)
Error pcmpistrm(
const Xmm& o0,
const Xmm& o1,
const Imm& o2,
const XMM0& o3)
Error pcmpistrm(
const Xmm& o0,
const Mem& o1,
const Imm& o2,
const XMM0& o3)
Error sha256rnds2(
const Xmm& o0,
const Xmm& o1,
const XMM0& o2)
Error sha256rnds2(
const Xmm& o0,
const Mem& o1,
const XMM0& o2)
Error vmaskmovdqu(
const Vec& o0,
const Vec& o1,
const DS_ZDI& o2)
Error vpcmpestri(
const Vec& o0,
const Vec& o1,
const Imm& o2,
const Gp_ECX& o3,
const Gp_EAX& o4,
const Gp_EDX& o5)
Error vpcmpestri(
const Vec& o0,
const Mem& o1,
const Imm& o2,
const Gp_ECX& o3,
const Gp_EAX& o4,
const Gp_EDX& o5)
Error vpcmpestrm(
const Vec& o0,
const Vec& o1,
const Imm& o2,
const XMM0& o3,
const Gp_EAX& o4,
const Gp_EDX& o5)
Error vpcmpestrm(
const Vec& o0,
const Mem& o1,
const Imm& o2,
const XMM0& o3,
const Gp_EAX& o4,
const Gp_EDX& o5)
Error vpcmpistri(
const Vec& o0,
const Vec& o1,
const Imm& o2,
const Gp_ECX& o3)
Error vpcmpistri(
const Vec& o0,
const Mem& o1,
const Imm& o2,
const Gp_ECX& o3)
Error vpcmpistrm(
const Vec& o0,
const Vec& o1,
const Imm& o2,
const XMM0& o3)
Error vpcmpistrm(
const Vec& o0,
const Mem& o1,
const Imm& o2,
const XMM0& o3)