IndexAArch64 Backendasmjit::a64::Gp

asmjit::a64::Gp Class Reference [¶]

Inheritance diagram for asmjit::a64::Gp:
asmjit::UniGp asmjit::Reg asmjit::Operand asmjit::Operand_

General purpose register (AArch64).

Public Types

Constants
- Public Types inherited from asmjit::Operand_

Member Functions

Gp Register Accessors
- Public Member Functions inherited from asmjit::UniGp
- Public Member Functions inherited from asmjit::Reg
- Public Member Functions inherited from asmjit::Operand
- Public Member Functions inherited from asmjit::Operand_

Static Functions

Static Constructors
- Static Public Member Functions inherited from asmjit::UniGp
- Static Public Member Functions inherited from asmjit::Reg
- Static Public Member Functions inherited from asmjit::Operand_

Additional Inherited Members

- Public Attributes inherited from asmjit::Operand_
- Static Public Attributes inherited from asmjit::Reg
- Static Public Attributes inherited from asmjit::Operand_

a64::Gp::Id : uint32_tenum[¶]

Special register id.

ConstantDescription
kIdOs 

Register that depends on OS, could be used as TLS offset.

kIdFp 

Frame pointer register id.

kIdLr 

Link register id.

kIdSp 

Stack register id.

kIdZr 

Zero register id.

Although zero register has the same id as stack register it has a special treatment, because we need to be
able to distinguish between these two at API level. Some instructions were designed to be used with SP and
some other with ZR - so we need a way to distinguish these two to make sure we emit the right thing.

The number 63 is not random, when you perform `id & 31` you would always get 31 for both SP and ZR inputs,
which is the identifier used by AArch64 ISA to encode either SP or ZR depending on the instruction. 

a64::Gp::Gp()constexprnoexcept[1/5][¶]

Default constructor that only setups basics.

a64::Gp::Gp(
const Gp& other
)constexprnoexcept[2/5][¶]

Makes a copy of the other register operand.

a64::Gp::Gp(
const Reg& other,
uint32_t id
)constexprnoexcept[3/5][¶]

Makes a copy of the other register having id set to id

a64::Gp::Gp(
const OperandSignature& sgn,
uint32_t id
)constexprnoexcept[4/5][¶]

Creates a register based on signature and id.

a64::Gp::Gp()explicitnoexcept[5/5][¶]

Creates a completely uninitialized Gp register operand (garbage).

Gp a64::Gp::fromTypeAndId(
RegType type,
uint32_t id
)staticnoexcept[¶]

Creates a new register from register type and id.

Gp a64::Gp::clone() constconstexprnoexcept[¶]

Clones the register operand.

Gp a64::Gp::make_r32(
uint32_t regId
)constexprstaticnoexcept[¶]

Creates a new 32-bit low general purpose register (W) having the given register id regId.

Gp a64::Gp::make_r64(
uint32_t regId
)constexprstaticnoexcept[¶]

Creates a new 64-bit low general purpose register (X) having the given register id regId.

Gp a64::Gp::make_w(
uint32_t regId
)constexprstaticnoexcept[¶]

Creates a new 32-bit low general purpose register (W) having the given register id regId.

Gp a64::Gp::make_x(
uint32_t regId
)constexprstaticnoexcept[¶]

Creates a new 64-bit low general purpose register (X) having the given register id regId.

bool a64::Gp::isZR() constconstexprnoexcept[¶]

Test whether this register is ZR register.

bool a64::Gp::isSP() constconstexprnoexcept[¶]

Test whether this register is SP register.

Gp a64::Gp::r32() constconstexprnoexcept[¶]

Clones and casts this register to a 32-bit (W) register.

Gp a64::Gp::r64() constconstexprnoexcept[¶]

Clones and casts this register to a 64-bit (X) register.

Gp a64::Gp::w() constconstexprnoexcept[¶]

Clones and casts this register to a 32-bit (W) register.

Gp a64::Gp::x() constconstexprnoexcept[¶]

Clones and casts this register to a 64-bit (X) register.