Skip to main content

Slot

Enum Slot 

Source
pub enum Slot {
    Integer {
        offset: u64,
        size: u32,
    },
    Float {
        offset: u64,
        format: Format,
    },
}
Expand description

One register’s worth of an aggregate that travels in registers, and which of the object’s bytes go in it.

A slot is what the object’s bytes are read as rather than what the program wrote. An eightbyte holding two floats is Slot::Float of Format::Double, because eight bytes of floating point data go in one vector register whichever way they are divided up and the bits that arrive are the same either way.

The offset is here because it cannot be worked out from the run of slots. Two eightbytes are at zero and eight and four floats of a homogeneous aggregate are four bytes apart, but struct { int a; double b; } on RISC-V travels as an integer and a floating point register whose bytes are at zero and eight, and the second is not where the first one ended.

Variants§

§

Integer

An integer this many bytes wide, which is one general purpose register.

The last slot of an aggregate is as wide as what is left of it, so a twelve byte structure is eight bytes and then four, and nothing reads a byte past the object.

Fields

§offset: u64

Where its bytes start in the object.

§size: u32

How many of them there are.

§

Float

A floating point value in this format, which is one vector register.

Fields

§offset: u64

Where its bytes start in the object.

§format: Format

What is read out of them.

Implementations§

Source§

impl Slot

Source

pub const fn offset(self) -> u64

Where its bytes start in the object.

Trait Implementations§

Source§

impl Clone for Slot

Source§

fn clone(&self) -> Slot

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Copy for Slot

Source§

impl Debug for Slot

Source§

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

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

impl Eq for Slot

Source§

impl PartialEq for Slot

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Slot

Auto Trait Implementations§

§

impl Freeze for Slot

§

impl RefUnwindSafe for Slot

§

impl Send for Slot

§

impl Sync for Slot

§

impl Unpin for Slot

§

impl UnsafeUnpin for Slot

§

impl UnwindSafe for Slot

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 = !

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.