Skip to main content

EncodingSpec

Struct EncodingSpec 

Source
pub struct EncodingSpec {
    pub mnemonic: &'static str,
    pub variant: &'static str,
    pub opcode: u32,
    pub opcode_mask: u32,
    pub fields: &'static [BitFieldSpec],
    pub operand_order: &'static [u8],
    pub operand_kinds: &'static [OperandConstraintKind],
    pub implicit_defaults: &'static [ImplicitField],
    pub memory_addressing: MemoryAddressingConstraintSpec,
    pub field_scales: &'static [u16],
    pub split_immediate_plan: Option<SplitImmediatePlanSpec>,
    pub gpr32_extend_compatibility: u64,
}
Expand description

Encoding metadata for a single canonical instruction variant.

Fields§

§mnemonic: &'static str

Lower-case mnemonic (e.g. "add").

§variant: &'static str

Canonical variant ID from the source dataset.

§opcode: u32

Base opcode with fixed bits already applied.

§opcode_mask: u32

Mask of fixed bits in the opcode.

§fields: &'static [BitFieldSpec]

Operand field list in deterministic argument order.

§operand_order: &'static [u8]

Field indices, in user-facing operand order.

§operand_kinds: &'static [OperandConstraintKind]

Operand class constraints, aligned with EncodingSpec::operand_order.

§implicit_defaults: &'static [ImplicitField]

Implicit field defaults automatically filled during encoding.

§memory_addressing: MemoryAddressingConstraintSpec

Precomputed memory addressing-mode constraint for this variant.

§field_scales: &'static [u16]

Per-field immediate scaling factors (1 means no scaling).

The slice is aligned with EncodingSpec::fields indices.

§split_immediate_plan: Option<SplitImmediatePlanSpec>

Precomputed split-immediate packing plan, if this variant uses one logical immediate split across two bitfields (e.g. immlo/immhi, b5/b40).

§gpr32_extend_compatibility: u64

Bitset of operand slots where Gpr64Register accepts a Gpr32Register when followed by an extend operand in the same variant.

Bit n corresponds to operand slot n.

Trait Implementations§

Source§

impl Clone for EncodingSpec

Source§

fn clone(&self) -> EncodingSpec

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 EncodingSpec

Source§

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

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

impl PartialEq for EncodingSpec

Source§

fn eq(&self, other: &EncodingSpec) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for EncodingSpec

Source§

impl Eq for EncodingSpec

Source§

impl StructuralPartialEq for EncodingSpec

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.