Register

Enum Register 

Source
pub enum Register {
    A,
    B,
    C,
    D,
    IP,
    SP,
    R,
    S,
    E,
    F,
    G,
    H,
}
Expand description

A register in the CFD-16 Instruction Set Architecture, eight of which are general-purpose (%a, %b, %c, %d, %e, %f, %g, %h), and four of which are system registers which cannot be accessed by user processes, as they are shadowed over in user mode. ( %ip, %sp, %r, %s)

Variants§

§

A

General-purpose register. Available in user and kernel mode.

§

B

General-purpose register. Available in user and kernel mode.

§

C

General-purpose register. Available in user and kernel mode.

§

D

General-purpose register. Available in user and kernel mode.

§

IP

This register contains the instruction pointer, i.e. the address (plus 4 bytes due to pipelining) at which the current instruction resides. The branch and jump instructions (br jsr ret are the only way to modify this value when in userspace. This is the only register which is in actuality 24-bit wide to match the size of the ISA’s address space.

§

SP

This register contains the stack pointer, i.e. the address in memory where the top of the stack is currently located. The instructions push and pop modify this value when in userspace.

§

R

This register contains the return address of the last-called function call (through the instruction jsr) and is used by the ret instruction.

§

S

This register contains the status register which is encoded as follows. 0bNZCMPPPP-SSSSSSSS, where N is the negative bit, (when the result of the ALU calculation is negative) Z is the zero bit, (when the result of the ALU calculation is zero), C is the carry bit, (when the ALU carries or overflows in a given integer calculation), M is the mode bit, which indicates whether the current process is in user mode (0) or kernel mode. (1) Ps designate the current process id, which is important for controlling access to segments of memory, and S designates the currently accessed segment in memory.

§

E

General-purpose register. Available only in user mode.

§

F

General-purpose register. Available only in user mode.

§

G

General-purpose register. Available only in user mode.

§

H

General-purpose register. Available only in user mode.

Trait Implementations§

Source§

impl Clone for Register

Source§

fn clone(&self) -> Register

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 Codable for Register

Source§

fn encode(&self) -> u16

Encodes the instruction or portion thereof.
Source§

fn decode(value: u16, mode: Mode) -> Option<Self>

Decodes the instruction given the current mode of execution.
Source§

impl Debug for Register

Source§

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

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

impl PartialEq for Register

Source§

fn eq(&self, other: &Register) -> 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 Register

Source§

impl Eq for Register

Source§

impl StructuralPartialEq for Register

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.