IndexFunctionasmjit::FuncArgsAssignment

asmjit::FuncArgsAssignment Class Reference [¶]

A helper class that can be used to assign a physical register for each function argument. The assignment is passed to BaseEmitter::emit_args_assignment() function.

Public Members

Members

Member Functions

Construction & Destruction

Overloaded Operators

Accessors

Utilities

FuncArgsAssignment::FuncArgsAssignment(
const FuncDetail* fd = nullptr
)explicitnoexcept[1/2][¶]

Creates either a default initialized FuncArgsAssignment or to assignment that links to fd, if non-null.

FuncArgsAssignment::FuncArgsAssignment(
const FuncArgsAssignment& other
)defaultnoexcept[2/2][¶]

Copy constructor.

void FuncArgsAssignment::reset(
const FuncDetail* fd = nullptr
)noexcept[¶]

Resets this FuncArgsAssignment to either default constructed state or to assignment that links to fd, if non-null.

FuncArgsAssignment& FuncArgsAssignment::operator=(
const FuncArgsAssignment& other
)defaultnoexcept[¶]

Copy assignment.

const FuncDetail* FuncArgsAssignment::func_detail() constnodiscardnoexcept[¶]

Returns the associated FuncDetail of this FuncArgsAssignment.

void FuncArgsAssignment::set_func_detail(
const FuncDetail* fd
)noexcept[¶]

Associates FuncDetail with this FuncArgsAssignment.

bool FuncArgsAssignment::has_sa_reg_id() constnodiscardnoexcept[¶]

Returns whether a register to access stack arguments is available.

uint32_t FuncArgsAssignment::sa_reg_id() constnodiscardnoexcept[¶]

Returns a physical ID of a register that can access stack arguments.

void FuncArgsAssignment::set_sa_reg_id(
uint32_t reg_id
)[¶]

Sets a physical ID of a register that can access stack arguments.

void FuncArgsAssignment::reset_sa_reg_id()[¶]

Resets a physical ID of a register that can access stack arguments.

FuncValue& FuncArgsAssignment::arg(
size_t arg_index,
size_t value_index
)nodiscardnoexcept[1/2][¶]

Returns assigned argument at arg_index and value_index.

Note

arg_index refers to he function argument and value_index refers to a value pack (in case multiple values are passed as a single argument).

const FuncValue& FuncArgsAssignment::arg(
size_t arg_index,
size_t value_index
) constnodiscardnoexcept[2/2][¶]

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

bool FuncArgsAssignment::is_assigned(
size_t arg_index,
size_t value_index
) constnodiscardnoexcept[¶]

Tests whether argument at arg_index and value_index has been assigned.

void FuncArgsAssignment::assign_reg(
size_t arg_index,
const Reg& reg,
)noexcept[1/2][¶]

Assigns register at arg_index and value index of 0 to reg and an optional type_id.

void FuncArgsAssignment::assign_reg(
size_t arg_index,
RegType reg_type,
uint32_t reg_id,
)noexcept[2/2][¶]

Assigns register at arg_index and value index of 0 to reg_type, reg_id, and an optional type_id.

void FuncArgsAssignment::assign_stack(
size_t arg_index,
int32_t offset,
)noexcept[¶]

Assigns stack at arg_index and value index of 0 to offset and an optional type_id.

void FuncArgsAssignment::assign_reg_in_pack(
size_t arg_index,
size_t value_index,
const Reg& reg,
)noexcept[1/2][¶]

Assigns register at arg_index and value_index to reg and an optional type_id.

void FuncArgsAssignment::assign_reg_in_pack(
size_t arg_index,
size_t value_index,
RegType reg_type,
uint32_t reg_id,
)noexcept[2/2][¶]

Assigns register at arg_index and value_index to reg_type, reg_id, and an optional type_id.

void FuncArgsAssignment::assign_stack_in_pack(
size_t arg_index,
size_t value_index,
int32_t offset,
)noexcept[¶]

Assigns stack at arg_index and value_index to offset and an optional type_id.

template<typename... Args>
void FuncArgsAssignment::assign_all(
Args&&... args
)noexcept[¶]

Assigns all argument at once.

Note

This function can be only used if the arguments don't contain value packs (multiple values per argument).

Error FuncArgsAssignment::update_func_frame(
FuncFrame& frame
) constnoexcept[¶]

Update FuncFrame based on function's arguments assignment.

Note

This function must be called in order to use BaseEmitter::emit_args_assignment(), otherwise the FuncFrame would not contain the information necessary to assign all arguments into the registers and/or stack specified.

const FuncDetail* FuncArgsAssignment::_func_detail {}[¶]

Function detail.

uint8_t FuncArgsAssignment::_sa_reg_id = uint8_t()[¶]

Register that can be used to access arguments passed by stack.

uint8_t FuncArgsAssignment::_reserved[3] {}[¶]

Reserved for future use.

FuncValuePack FuncArgsAssignment::_arg_packs[Globals::kMaxFuncArgs] {}[¶]

Mapping of each function argument.