X86 Backend

X86/X64 backend.

Namespace

  • x86 - x86 namespace provides support for X86/X64 code generation.

Emitters

Supported Instructions

Register Operands

Memory Operands

  • x86::Mem - X86/X64 memory operand that provides support for all X86 and X64 addressing features, including absolute addresses, index scales, and segment override prefixes.

Other

Status and Control Words

Predicates

Namespaces

Classes

Functions

Variables

Function Documentation

GpbLo x86::gpb(uint32_t rId)constexprstaticconstexprnoexcept

Creates an 8-bit low GPB register operand.

GpbLo x86::gpb_lo(uint32_t rId)constexprstaticconstexprnoexcept

Creates an 8-bit low GPB register operand.

GpbHi x86::gpb_hi(uint32_t rId)constexprstaticconstexprnoexcept

Creates an 8-bit high GPB register operand.

Gpw x86::gpw(uint32_t rId)constexprstaticconstexprnoexcept

Creates a 16-bit GPW register operand.

Gpd x86::gpd(uint32_t rId)constexprstaticconstexprnoexcept

Creates a 32-bit GPD register operand.

Gpq x86::gpq(uint32_t rId)constexprstaticconstexprnoexcept

Creates a 64-bit GPQ register operand (64-bit).

Xmm x86::xmm(uint32_t rId)constexprstaticconstexprnoexcept

Creates a 128-bit XMM register operand.

Ymm x86::ymm(uint32_t rId)constexprstaticconstexprnoexcept

Creates a 256-bit YMM register operand.

Zmm x86::zmm(uint32_t rId)constexprstaticconstexprnoexcept

Creates a 512-bit ZMM register operand.

Mm x86::mm(uint32_t rId)constexprstaticconstexprnoexcept

Creates a 64-bit Mm register operand.

KReg x86::k(uint32_t rId)constexprstaticconstexprnoexcept

Creates a 64-bit K register operand.

CReg x86::cr(uint32_t rId)constexprstaticconstexprnoexcept

Creates a 32-bit or 64-bit control register operand.

DReg x86::dr(uint32_t rId)constexprstaticconstexprnoexcept

Creates a 32-bit or 64-bit debug register operand.

St x86::st(uint32_t rId)constexprstaticconstexprnoexcept

Creates an 80-bit st register operand.

Bnd x86::bnd(uint32_t rId)constexprstaticconstexprnoexcept

Creates a 128-bit bound register operand.

Mem x86::ptr(const Gp& base, int32_t offset = 0, uint32_t size = 0)constexprstaticconstexprnoexcept[1/10]

Creates [base.reg + offset] memory operand.

Mem x86::ptr(const Gp& base, const Gp& index, uint32_t shift = 0, int32_t offset = 0, uint32_t size = 0)constexprstaticconstexprnoexcept[2/10]

Creates [base.reg + (index << shift) + offset] memory operand (scalar index).

Mem x86::ptr(const Gp& base, const Vec& index, uint32_t shift = 0, int32_t offset = 0, uint32_t size = 0)constexprstaticconstexprnoexcept[3/10]

Creates [base.reg + (index << shift) + offset] memory operand (vector index).

Mem x86::ptr(const Label& base, int32_t offset = 0, uint32_t size = 0)constexprstaticconstexprnoexcept[4/10]

Creates [base + offset] memory operand.

Mem x86::ptr(const Label& base, const Gp& index, uint32_t shift = 0, int32_t offset = 0, uint32_t size = 0)constexprstaticconstexprnoexcept[5/10]

Creates [base + (index << shift) + offset] memory operand.

Mem x86::ptr(const Label& base, const Vec& index, uint32_t shift = 0, int32_t offset = 0, uint32_t size = 0)constexprstaticconstexprnoexcept[6/10]

Creates [base + (index << shift) + offset] memory operand.

Mem x86::ptr(const Rip& rip_, int32_t offset = 0, uint32_t size = 0)constexprstaticconstexprnoexcept[7/10]

Creates [rip + offset] memory operand.

Mem x86::ptr(uint64_t base, uint32_t size = 0)constexprstaticconstexprnoexcept[8/10]

Creates [base] absolute memory operand.

Mem x86::ptr(uint64_t base, const Reg& index, uint32_t shift = 0, uint32_t size = 0)constexprstaticconstexprnoexcept[9/10]

Creates [base + (index.reg << shift)] absolute memory operand.

Mem x86::ptr(uint64_t base, const Vec& index, uint32_t shift = 0, uint32_t size = 0)constexprstaticconstexprnoexcept[10/10]

Creates [base + (index.reg << shift)] absolute memory operand.

Mem x86::ptr_abs(uint64_t base, uint32_t size = 0)constexprstaticconstexprnoexcept[1/3]

Creates [base] absolute memory operand (absolute).

Mem x86::ptr_abs(uint64_t base, const Reg& index, uint32_t shift = 0, uint32_t size = 0)constexprstaticconstexprnoexcept[2/3]

Creates [base + (index.reg << shift)] absolute memory operand (absolute).

Mem x86::ptr_abs(uint64_t base, const Vec& index, uint32_t shift = 0, uint32_t size = 0)constexprstaticconstexprnoexcept[3/3]

Creates [base + (index.reg << shift)] absolute memory operand (absolute).

Mem x86::ptr_rel(uint64_t base, uint32_t size = 0)constexprstaticconstexprnoexcept[1/3]

Creates [base] relative memory operand (relative).

Mem x86::ptr_rel(uint64_t base, const Reg& index, uint32_t shift = 0, uint32_t size = 0)constexprstaticconstexprnoexcept[2/3]

Creates [base + (index.reg << shift)] relative memory operand (relative).

Mem x86::ptr_rel(uint64_t base, const Vec& index, uint32_t shift = 0, uint32_t size = 0)constexprstaticconstexprnoexcept[3/3]

Creates [base + (index.reg << shift)] relative memory operand (relative).