Struct lc3_ensemble::ast::Offset

source ·
pub struct Offset<OFF, const N: u32>(/* private fields */);
Expand description

A value representing an offset or an immediate value.

The OFF type represents the backing type of this offset. The signedness of this offset type is dependent on the signedness of the OFF type:

  • Offset<i16, _>: signed offset
  • Offset<u16, _>: unsigned offset

N indicates the maximum bit size of this offset/immediate value.

For example, Offset<i16, 5> is used to represent ADD/AND’s imm5 operand.

Implementations§

source§

impl<OFF: OffsetBacking, const N: u32> Offset<OFF, N>

source

pub fn new(n: OFF) -> Result<Self, OffsetNewErr>

Creates a new offset value. This must fit within N bits of the representation, otherwise an error is raised.

§Panics

This will panic if N is larger than the offset backing (e.g., for backing u16, larger than 16).

source

pub fn new_trunc(n: OFF) -> Self

Creates a new offset by extending the first N bits of the integer, and discarding the rest.

The extension is considered sign-extended if the offset’s backing is signed, and it is considered zero-extended if the offset’s backing is unsigned.

§Panics

This will panic if N is larger than the offset backing (e.g., for backing u16, larger than 16).

source

pub fn get(&self) -> OFF

Gets the value of the offset.

Trait Implementations§

source§

impl<OFF: Binary, const N: u32> Binary for Offset<OFF, N>

source§

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

Formats the value using the given formatter.
source§

impl<OFF: Clone, const N: u32> Clone for Offset<OFF, N>

source§

fn clone(&self) -> Offset<OFF, N>

Returns a copy 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<OFF: Debug, const N: u32> Debug for Offset<OFF, N>

source§

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

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

impl<OFF: Display, const N: u32> Display for Offset<OFF, N>

source§

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

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

impl<OFF: Hash, const N: u32> Hash for Offset<OFF, N>

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<OFF: LowerHex, const N: u32> LowerHex for Offset<OFF, N>

source§

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

Formats the value using the given formatter.
source§

impl<OFF: PartialEq, const N: u32> PartialEq for Offset<OFF, N>

source§

fn eq(&self, other: &Offset<OFF, N>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<const N: u32> TokenParse for Offset<i16, N>

§

type Intermediate = Either<i16, u16>

An intermediate to hold the match before it is converted to the actual component.
source§

fn match_( m_token: Option<&Token>, span: Span ) -> Result<Self::Intermediate, ParseErr>

Tries to match the next token to the given component, if possible. Read more
source§

fn convert(imed: Self::Intermediate, span: Span) -> Result<Self, ParseErr>

Parses the intermediate into the given component, raising an error if conversion fails.
source§

impl<const N: u32> TokenParse for Offset<u16, N>

§

type Intermediate = Either<u16, i16>

An intermediate to hold the match before it is converted to the actual component.
source§

fn match_( m_token: Option<&Token>, span: Span ) -> Result<Self::Intermediate, ParseErr>

Tries to match the next token to the given component, if possible. Read more
source§

fn convert(imed: Self::Intermediate, span: Span) -> Result<Self, ParseErr>

Parses the intermediate into the given component, raising an error if conversion fails.
source§

impl<OFF: UpperHex, const N: u32> UpperHex for Offset<OFF, N>

source§

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

Formats the value using the given formatter.
source§

impl<OFF: Copy, const N: u32> Copy for Offset<OFF, N>

source§

impl<OFF: Eq, const N: u32> Eq for Offset<OFF, N>

source§

impl<OFF, const N: u32> StructuralPartialEq for Offset<OFF, N>

Auto Trait Implementations§

§

impl<OFF, const N: u32> Freeze for Offset<OFF, N>
where OFF: Freeze,

§

impl<OFF, const N: u32> RefUnwindSafe for Offset<OFF, N>
where OFF: RefUnwindSafe,

§

impl<OFF, const N: u32> Send for Offset<OFF, N>
where OFF: Send,

§

impl<OFF, const N: u32> Sync for Offset<OFF, N>
where OFF: Sync,

§

impl<OFF, const N: u32> Unpin for Offset<OFF, N>
where OFF: Unpin,

§

impl<OFF, const N: u32> UnwindSafe for Offset<OFF, N>
where OFF: UnwindSafe,

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> 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<S> Parse for S
where S: TokenParse,

source§

fn parse(parser: &mut Parser) -> Result<S, ParseErr>

Attempt to convert the next sequence of tokens in the parser’s state into a component. Read more
source§

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

§

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> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

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

§

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>,

§

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.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V