ZydisEncoderRequest_

Struct ZydisEncoderRequest_ 

Source
#[repr(C)]
pub struct ZydisEncoderRequest_ { pub machine_mode: ZydisMachineMode, pub allowed_encodings: ZydisEncodableEncoding, pub mnemonic: ZydisMnemonic, pub prefixes: ZydisInstructionAttributes, pub branch_type: ZydisBranchType, pub branch_width: ZydisBranchWidth, pub address_size_hint: ZydisAddressSizeHint, pub operand_size_hint: ZydisOperandSizeHint, pub operand_count: ZyanU8, pub operands: [ZydisEncoderOperand; 5], pub evex: ZydisEncoderRequest__ZydisEncoderRequestEvexFeatures_, pub mvex: ZydisEncoderRequest__ZydisEncoderRequestMvexFeatures_, }
Expand description

Main structure consumed by the encoder. It represents full semantics of an instruction.

Fields§

§machine_mode: ZydisMachineMode

The machine mode used to encode this instruction.

§allowed_encodings: ZydisEncodableEncoding

This optional field can be used to restrict allowed physical encodings for desired instruction. Some mnemonics can be supported by more than one encoding, so this field can resolve ambiguities e.g. you can disable AVX-512 extensions by prohibiting usage of EVEX prefix and allow only VEX variants.

§mnemonic: ZydisMnemonic

The instruction-mnemonic.

§prefixes: ZydisInstructionAttributes

A combination of requested encodable prefixes (ZYDIS_ATTRIB_HAS_* flags) for desired instruction. See ZYDIS_ENCODABLE_PREFIXES for list of available prefixes.

§branch_type: ZydisBranchType

Branch type (required for branching instructions only). Use ZYDIS_BRANCH_TYPE_NONE to let encoder pick size-optimal branch type automatically (short and near are prioritized over far).

§branch_width: ZydisBranchWidth

Specifies physical size for relative immediate operands. Use ZYDIS_BRANCH_WIDTH_NONE to let encoder pick size-optimal branch width automatically. For segment:offset far branches this field applies to physical size of the offset part. For branching instructions without relative operands this field affects effective operand size attribute.

§address_size_hint: ZydisAddressSizeHint

Optional address size hint used to resolve ambiguities for some instructions. Generally encoder deduces address size from ZydisEncoderOperand structures that represent explicit and implicit operands. This hint resolves conflicts when instruction’s hidden operands scale with address size attribute.

§operand_size_hint: ZydisOperandSizeHint

Optional operand size hint used to resolve ambiguities for some instructions. Generally encoder deduces operand size from ZydisEncoderOperand structures that represent explicit and implicit operands. This hint resolves conflicts when instruction’s hidden operands scale with operand size attribute.

§operand_count: ZyanU8

The number of visible (explicit) instruction operands.

The encoder does not care about hidden (implicit) operands.

§operands: [ZydisEncoderOperand; 5]

Detailed info for all explicit and implicit instruction operands.

§evex: ZydisEncoderRequest__ZydisEncoderRequestEvexFeatures_§mvex: ZydisEncoderRequest__ZydisEncoderRequestMvexFeatures_

Trait Implementations§

Source§

impl Clone for ZydisEncoderRequest_

Source§

fn clone(&self) -> ZydisEncoderRequest_

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ZydisEncoderRequest_

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for ZydisEncoderRequest_

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Copy for ZydisEncoderRequest_

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.