Arion 1.0.2-alpha
A high-performance C++ framework for emulating executable binaries.
 
Loading...
Searching...
No Matches
arion_lnx_x86_64 Namespace Reference

Classes

class  ArchManagerLinuxX8664
 Linux x86-64 architecture manager class for Arion. More...
 
struct  elf_prstatus
 Structure for a process status ELF note (NT_PRSTATUS) for x86-64, containing general registers. More...
 
struct  user_i387_struct
 Flag indicating whether floating-point registers are valid. More...
 
struct  user_regs_struct
 Structure representing the x86-64 general-purpose registers as saved by the Linux kernel on the stack. More...
 

Typedefs

typedef arion_lnx_type::elf_greg_t elf_gregset_t[ELF_NGREG]
 Definition of the general-purpose register set type for ELF notes (NT_PRSTATUS).
 
typedef struct user_i387_struct elf_fpregset_t
 Definition of the floating-point register set type for ELF notes (NT_FPREGSET).
 

Variables

std::vector< arion::REGuc_user_regs
 A vector mapping the user_regs_struct fields to ARION's universal register enumeration (arion::REG).
 
const size_t ELF_NGREG = (sizeof(struct user_regs_struct) / sizeof(arion_lnx_type::elf_greg_t))
 The number of 64-bit words (general registers) in the user_regs_struct, used for ELF notes.
 
std::vector< arion::REGuc_st_space_regs
 A vector mapping the FPU stack register space (st_space) to ARION's universal register enumeration.
 
std::vector< arion::REGuc_xmm_space_regs
 A vector mapping the SSE/AVX register space (xmm_space) to ARION's universal register enumeration.
 

Typedef Documentation

◆ elf_fpregset_t

Definition of the floating-point register set type for ELF notes (NT_FPREGSET).

◆ elf_gregset_t

typedef arion_lnx_type::elf_greg_t arion_lnx_x86_64::elf_gregset_t[ELF_NGREG]

Definition of the general-purpose register set type for ELF notes (NT_PRSTATUS).

Variable Documentation

◆ ELF_NGREG

const size_t arion_lnx_x86_64::ELF_NGREG = (sizeof(struct user_regs_struct) / sizeof(arion_lnx_type::elf_greg_t))

The number of 64-bit words (general registers) in the user_regs_struct, used for ELF notes.

◆ uc_st_space_regs

std::vector<arion::REG> arion_lnx_x86_64::uc_st_space_regs
inline
Initial value:
= {UC_X86_REG_FP0, UC_X86_REG_FP1, UC_X86_REG_FP2, UC_X86_REG_FP3,
UC_X86_REG_FP4, UC_X86_REG_FP5, UC_X86_REG_FP6, UC_X86_REG_FP7}

A vector mapping the FPU stack register space (st_space) to ARION's universal register enumeration.

◆ uc_user_regs

std::vector<arion::REG> arion_lnx_x86_64::uc_user_regs
inline
Initial value:
= {
UC_X86_REG_R15, UC_X86_REG_R14, UC_X86_REG_R13, UC_X86_REG_R12, UC_X86_REG_RBP, UC_X86_REG_RBX,
UC_X86_REG_R11, UC_X86_REG_R10, UC_X86_REG_R9, UC_X86_REG_R8, UC_X86_REG_RAX, UC_X86_REG_RCX,
UC_X86_REG_RDX, UC_X86_REG_RSI, UC_X86_REG_RDI, UC_X86_REG_INVALID, UC_X86_REG_RIP, UC_X86_REG_CS,
UC_X86_REG_RFLAGS, UC_X86_REG_RSP, UC_X86_REG_SS, UC_X86_REG_FS_BASE, UC_X86_REG_GS_BASE, UC_X86_REG_DS,
UC_X86_REG_ES, UC_X86_REG_FS, UC_X86_REG_GS}

A vector mapping the user_regs_struct fields to ARION's universal register enumeration (arion::REG).

◆ uc_xmm_space_regs

std::vector<arion::REG> arion_lnx_x86_64::uc_xmm_space_regs
inline
Initial value:
= {
UC_X86_REG_XMM0, UC_X86_REG_XMM1, UC_X86_REG_XMM2, UC_X86_REG_XMM3, UC_X86_REG_XMM4, UC_X86_REG_XMM5,
UC_X86_REG_XMM6, UC_X86_REG_XMM7, UC_X86_REG_XMM8, UC_X86_REG_XMM9, UC_X86_REG_XMM10, UC_X86_REG_XMM11,
UC_X86_REG_XMM12, UC_X86_REG_XMM13, UC_X86_REG_XMM14, UC_X86_REG_XMM15, UC_X86_REG_XMM16, UC_X86_REG_XMM17,
UC_X86_REG_XMM18, UC_X86_REG_XMM19, UC_X86_REG_XMM20, UC_X86_REG_XMM21, UC_X86_REG_XMM22, UC_X86_REG_XMM23,
UC_X86_REG_XMM24, UC_X86_REG_XMM25, UC_X86_REG_XMM26, UC_X86_REG_XMM27, UC_X86_REG_XMM28, UC_X86_REG_XMM29,
UC_X86_REG_XMM30, UC_X86_REG_XMM31}

A vector mapping the SSE/AVX register space (xmm_space) to ARION's universal register enumeration.