IndexCoreasmjit::ArchTraits
asmjit::ArchTraits Struct Reference

Architecture traits used by Function API and Compiler's register allocator.

Member Functions

Accessors

Static Functions

Statics

uint32_t ArchTraits::spRegId() constnoexcept[¶]

Returns stack pointer register id.

uint32_t ArchTraits::fpRegId() constnoexcept[¶]

Returns stack frame register id.

uint32_t ArchTraits::linkRegId() constnoexcept[¶]

Returns link register id, if the architecture provides it.

uint32_t ArchTraits::ipRegId() constnoexcept[¶]

Returns instruction pointer register id, if the architecture provides it.

uint32_t ArchTraits::hwStackAlignment() constnoexcept[¶]

Returns a hardware stack alignment requirement.

Note
This is a hardware constraint. Architectures that don't constrain it would return the lowest alignment (1), however, some architectures may constrain the alignment, for example AArch64 requires 16-byte alignment.

bool ArchTraits::hasLinkReg() constnoexcept[¶]

Tests whether the architecture provides link register, which is used across function calls.

If the link register is not provided then a function call pushes the return address on stack (X86/X64).

uint32_t ArchTraits::minStackOffset() constnoexcept[¶]

Returns minimum addressable offset on stack guaranteed for all instructions.

uint32_t ArchTraits::maxStackOffset() constnoexcept[¶]

Returns maximum addressable offset on stack depending on specific instruction.

InstHints ArchTraits::instFeatureHints(
RegGroup group
) constnoexcept[¶]

Returns ISA flags of the given register group.

bool ArchTraits::hasInstHint(
RegGroup group,
InstHints feature
) constnoexcept[¶]

Tests whether the given register group has the given flag set.

bool ArchTraits::hasInstRegSwap(
RegGroup group
) constnoexcept[¶]

Tests whether the ISA provides register swap instruction for the given register group.

bool ArchTraits::hasInstPushPop(
RegGroup group
) constnoexcept[¶]

Tests whether the ISA provides push/pop instructions for the given register group.

OperandSignature ArchTraits::regTypeToSignature(
RegType type
) constnoexcept[¶]

Returns an operand signature from the given register type of this architecture.

RegGroup ArchTraits::regTypeToGroup(
RegType type
) constnoexcept[¶]

Returns a register from the given register type of this architecture.

uint32_t ArchTraits::regTypeToSize(
RegType type
) constnoexcept[¶]

Returns a register size the given register type of this architecture.

TypeId ArchTraits::regTypeToTypeId(
RegType type
) constnoexcept[¶]

Returns a corresponding TypeId from the given register type of this architecture.

const ArchTypeNameId* ArchTraits::typeNameIdTable() constnoexcept[¶]

Returns a table of ISA word names that appear in formatted text.

Word names are ISA dependent.

The index of this table is log2 of the size:

  • [0] 8-bits
  • [1] 16-bits
  • [2] 32-bits
  • [3] 64-bits

ArchTypeNameId ArchTraits::typeNameIdByIndex(
uint32_t index
) constnoexcept[¶]

Returns an ISA word name identifier of the given index, see typeNameIdTable() for more details.

const ArchTraits& ArchTraits::byArch(
Arch arch
)staticnoexcept[¶]

Returns a const reference to ArchTraits for the given architecture arch.

uint8_t ArchTraits::_spRegId[¶]

Stack pointer register id.

uint8_t ArchTraits::_fpRegId[¶]

Frame pointer register id.

uint8_t ArchTraits::_linkRegId[¶]

Link register id.

uint8_t ArchTraits::_ipRegId[¶]

Instruction pointer (or program counter) register id, if accessible.

uint8_t ArchTraits::_hwStackAlignment[¶]

Hardware stack alignment requirement.

uint32_t ArchTraits::_minStackOffset[¶]

Minimum addressable offset on stack guaranteed for all instructions.

uint32_t ArchTraits::_maxStackOffset[¶]

Maximum addressable offset on stack depending on specific instruction.

Support::Array<InstHints, Globals::kNumVirtGroups>ArchTraits::_instHints[¶]

Flags for each virtual register group.

Support::Array<OperandSignature, uint32_t(RegType::kMaxValue) + 1>ArchTraits::_regSignature[¶]

Maps register type into a signature, that provides group, size and can be used to construct register operands.

Support::Array<TypeId, uint32_t(RegType::kMaxValue) + 1>ArchTraits::_regTypeToTypeId[¶]

Maps a register to type-id, see TypeId.

Support::Array<RegType, 32>ArchTraits::_typeIdToRegType[¶]

Maps scalar TypeId values (from TypeId::_kIdBaseStart) to register types, see TypeId.

ArchTypeNameId ArchTraits::_typeNameIdTable[4][¶]

Word name identifiers of 8-bit, 16-bit, 32-biit, and 64-bit quantities that appear in formatted text.