enum IsleConstructor {
RetMemorySideEffect,
RetGpr,
RetXmm,
RetValueRegs,
NoReturnSideEffect,
ProducesFlagsSideEffect,
ConsumesFlagsReturnsGpr,
}
Expand description
Different kinds of ISLE constructors generated for a particular instruction.
One instruction may generate a single constructor or multiple constructors.
For example an instruction that writes its result to a register will
generate only a single constructor. An instruction where the destination
read/write operand is GprMem
will generate two constructors though, one
for memory and one for in registers.
Variants§
RetMemorySideEffect
This constructor only produces a side effect, meaning that the instruction does not produce results in registers. This may produce a result in memory, however.
RetGpr
This constructor produces a Gpr
value, meaning that the instruction
will write its result to a single GPR register.
RetXmm
This is similar to RetGpr
, but for XMM registers.
RetValueRegs
This “special” constructor captures multiple written-to registers (e.g.
mul
).
NoReturnSideEffect
This constructor does not return any results, but produces a side effect affecting EFLAGs.
ProducesFlagsSideEffect
This constructor produces no results, but the flags register is written,
so a ProducesFlags
value is returned with a side effect.
ConsumesFlagsReturnsGpr
This instructions reads EFLAGS, and returns a single gpr, so this
creates ConsumesFlags.ConsumesFlagsReturnsReg
.
Implementations§
Source§impl IsleConstructor
impl IsleConstructor
Sourcefn result_ty(&self) -> &'static str
fn result_ty(&self) -> &'static str
Returns the result type, in ISLE, that this constructor generates.
Sourcefn conversion_constructor(&self) -> &'static str
fn conversion_constructor(&self) -> &'static str
Returns the constructor used to convert an AssemblerOutput
into the
type returned by Self::result_ty
.
Sourcefn includes_write_only_reg_mem(&self) -> bool
fn includes_write_only_reg_mem(&self) -> bool
Returns whether this constructor will include a write-only RegMem
operand as an argument to the constructor.
Memory-based ctors take an Amode
, but register-based ctors don’t take
the result as an argument and instead manufacture it internally.
Trait Implementations§
Source§impl Clone for IsleConstructor
impl Clone for IsleConstructor
Source§fn clone(&self) -> IsleConstructor
fn clone(&self) -> IsleConstructor
1.0.0 · Source§const fn clone_from(&mut self, source: &Self)
const fn clone_from(&mut self, source: &Self)
source
. Read more