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§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for IsleConstructor
impl Debug for IsleConstructor
impl Copy for IsleConstructor
Auto Trait Implementations§
impl Freeze for IsleConstructor
impl RefUnwindSafe for IsleConstructor
impl Send for IsleConstructor
impl Sync for IsleConstructor
impl Unpin for IsleConstructor
impl UnwindSafe for IsleConstructor
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
clone_to_uninit)