asmjit::FuncDetail Class Reference

Function detail - CallConv and expanded FuncSignature.

Function detail is architecture and OS dependent representation of a function. It contains a materialized calling convention and expanded function signature so all arguments have assigned either register type/id or stack address.

Public Members

Members

Static Public Attributes

Constants

Member Functions

Construction & Destruction
Overloaded Operators
Reset
Accessors

Constructor & Destructor Documentation

FuncDetail::FuncDetail()noexcept[1/2]◆ 

Creates a default constructed FuncDetail.

FuncDetail::FuncDetail(const FuncDetail& other)defaultnoexcept[2/2]◆ 

Copy constructor.

Function details are copyable.

Member Function Documentation

Error FuncDetail::init(const FuncSignature& signature, const Environment& environment)noexcept◆ 

Initializes this FuncDetail to the given signature.

FuncDetail& FuncDetail::operator=(const FuncDetail& other)defaultnoexcept◆ 

Assignment operator, copies other to this FuncDetail.

void FuncDetail::reset()noexcept◆ 

Resets the function detail to its default constructed state.

const CallConv& FuncDetail::callConv() constnoexcept◆ 

Returns the function's calling convention, see CallConv.

CallConvFlags FuncDetail::flags() constnoexcept◆ 

Returns the associated calling convention flags, see CallConv::Flags.

bool FuncDetail::hasFlag(CallConvFlags ccFlag) constnoexcept◆ 

Checks whether a CallConv flag is set, see CallConv::Flags.

bool FuncDetail::hasRet() constnoexcept◆ 

Tests whether the function has a return value.

uint32_t FuncDetail::argCount() constnoexcept◆ 

Returns the number of function arguments.

FuncValuePack& FuncDetail::retPack()noexcept[1/2]◆ 

Returns function return values.

const FuncValuePack& FuncDetail::retPack() constnoexcept[2/2]◆ 

Returns function return values.

FuncValue& FuncDetail::ret(size_t valueIndex = 0)noexcept[1/2]◆ 

Returns a function return value associated with the given valueIndex.

const FuncValue& FuncDetail::ret(size_t valueIndex = 0) constnoexcept[2/2]◆ 

Returns a function return value associated with the given valueIndex (const).

FuncValuePack* FuncDetail::argPacks()noexcept[1/2]◆ 

Returns function argument packs array.

const FuncValuePack* FuncDetail::argPacks() constnoexcept[2/2]◆ 

Returns function argument packs array (const).

FuncValuePack& FuncDetail::argPack(size_t argIndex)noexcept[1/2]◆ 

Returns function argument pack at the given argIndex.

const FuncValuePack& FuncDetail::argPack(size_t argIndex) constnoexcept[2/2]◆ 

Returns function argument pack at the given argIndex (const).

FuncValue& FuncDetail::arg(size_t argIndex, size_t valueIndex = 0)noexcept[1/2]◆ 

Returns an argument at valueIndex from the argument pack at the given argIndex.

const FuncValue& FuncDetail::arg(size_t argIndex, size_t valueIndex = 0) constnoexcept[2/2]◆ 

Returns an argument at valueIndex from the argument pack at the given argIndex (const).

void FuncDetail::resetArg(size_t argIndex)noexcept◆ 

Resets an argument at the given argIndex.

If the argument is a parameter pack (has multiple values) all values are reset.

bool FuncDetail::hasVarArgs() constnoexcept◆ 

Tests whether the function has variable arguments.

uint32_t FuncDetail::vaIndex() constnoexcept◆ 

Returns an index of a first variable argument.

bool FuncDetail::hasStackArgs() constnoexcept◆ 

Tests whether the function passes one or more argument by stack.

uint32_t FuncDetail::argStackSize() constnoexcept◆ 

Returns stack size needed for function arguments passed on the stack.

uint32_t FuncDetail::redZoneSize() constnoexcept◆ 

Returns red zone size.

uint32_t FuncDetail::spillZoneSize() constnoexcept◆ 

Returns spill zone size.

uint32_t FuncDetail::naturalStackAlignment() constnoexcept◆ 

Returns natural stack alignment.

RegMask FuncDetail::passedRegs(RegGroup group) constnoexcept◆ 

Returns a mask of all passed registers of the given register group.

RegMask FuncDetail::preservedRegs(RegGroup group) constnoexcept◆ 

Returns a mask of all preserved registers of the given register group.

RegMask FuncDetail::usedRegs(RegGroup group) constnoexcept◆ 

Returns a mask of all used registers of the given register group.

void FuncDetail::addUsedRegs(RegGroup group, RegMask regs)noexcept◆ 

Adds regs to the mask of used registers of the given register group.

Member Data Documentation

uint8_t FuncDetail::kNoVarArgs = 0xFFuconstexprstaticconstexpr◆ 

Function doesn't have a variable number of arguments (...).

CallConv FuncDetail::_callConv {}◆ 

Calling convention.

uint8_t FuncDetail::_argCount = 0◆ 

Number of function arguments.

uint8_t FuncDetail::_vaIndex = 0◆ 

Variable arguments index of kNoVarArgs.

uint16_t FuncDetail::_reserved = 0◆ 

Reserved for future use.

Support::Array<RegMask, Globals::kNumVirtGroups>FuncDetail::_usedRegs {}◆ 

Registers that contain arguments.

uint32_t FuncDetail::_argStackSize = 0◆ 

Size of arguments passed by stack.

FuncValuePack FuncDetail::_rets {}◆ 

Function return value(s).

FuncValuePack FuncDetail::_args[Globals::kMaxFuncArgs] {}◆ 

Function arguments.