AsmJit
Low-Latency Machine Code Generation
Base class for all memory operands.
The data is split into the following parts:
Creates a default BaseMem
operand, that points to [0].
Creates a BaseMem
operand that is a clone of other
.
0
)constexprexplicitconstexprnoexcept[3/4]◆ Creates a BaseMem
operand from baseReg
and offset
.
Creates a completely uninitialized BaseMem
operand.
Resets the memory operand - after the reset the memory points to [0].
Clones the memory operand.
Creates a new copy of this memory operand adjusted by off
.
Tests whether this memory operand is a register home (only used by Compiler)
Mark this memory operand as register home (only used by Compiler).
Marks this operand to not be a register home (only used by Compiler).
Tests whether the memory operand has a BASE register or label specified.
Tests whether the memory operand has an INDEX register specified.
Tests whether the memory operand has BASE or INDEX register.
Tests whether the memory operand has BASE and INDEX register.
Tests whether the BASE operand is a label.
Tests whether the BASE operand is a register (registers start after RegType::kLabelTag
).
Tests whether the INDEX operand is a register (registers start after RegType::kLabelTag
).
Returns the type of the BASE register (0 if this memory operand doesn't use the BASE register).
kLabelTag
. You should always check hasBaseLabel()
before using baseId()
result. Returns the type of an INDEX register (0 if this memory operand doesn't use the INDEX register).
This is used internally for BASE+INDEX validation.
Returns both BASE (4:0 bits) and INDEX (9:5 bits) types combined into a single value.
Returns the id of the INDEX register.
Sets the id of the BASE register (without modifying its type).
Sets the register type of the BASE register (without modifying its id).
Sets the id of the INDEX register (without modifying its type).
Sets the register type of the INDEX register (without modifying its id).
Sets the base register to type and id of the given base
operand.
Sets the index register to type and id of the given index
operand.
Resets the memory operand's BASE register or label.
Resets the memory operand's INDEX register.
Tests whether the memory operand has a 64-bit offset or absolute address.
If this is true then hasBase()
must always report false.
Tests whether the memory operand has a non-zero offset or absolute address.
Returns either relative offset or absolute address as 64-bit integer.
Returns a 32-bit low part of a 64-bit offset or absolute address.
Returns a 32-but high part of a 64-bit offset or absolute address.
isOffset64Bit()
returns false. Never use it blindly without checking it first. Sets a 64-bit offset or an absolute address to offset
.
Sets a low 32-bit offset to offset
(don't use without knowing how BaseMem works).
Adjusts the offset by offset
.
offset
. Adds offset
to a low 32-bit offset part (don't use without knowing how BaseMem works).
Resets the memory offset to zero.
Resets the lo part of the memory offset to zero (don't use without knowing how BaseMem works).