Enum Operation

Source
pub enum Operation {
Show 15 variants Alu(DataOp, SetFlags, Registers, Shift), StatusTransfer(TransferFlags, u8, Registers, Shift), Multiply(MultiplyFlags, Registers), MultiplyLong(MultiplyFlags, Registers), SingleDataSwap(TransferFlags, Registers), BranchExchange(Registers), HalfwordDataTransfer(TransferFlags, Registers, Shift), SingleDataTransfer(TransferFlags, Registers, Shift), Undefined, BlockDataTransfer(TransferFlags, Registers, u16), Branch(Condition, Link, i32), CoprocessorDataTransfer(TransferFlags, u8, Registers, u32), CoprocessorDataOperation(u8, u8, u8, Registers), CoprocessorRegisterTransfer(TransferFlags, u8, u8, u8, Registers), SoftwareInterrupt(u32),
}
Expand description

Processor operations

Operations that the processor can perform.

Variants§

§

Alu(DataOp, SetFlags, Registers, Shift)

Data processing

Perform an arithmetic or logical calculation on data contained in registers or encoded in the instruction.

§

StatusTransfer(TransferFlags, u8, Registers, Shift)

Status register transfer

Perform a transfer of a value between a register and a status register.

NOTE: The u8 member is the mask of the portions of the status register that should be transferred.

§

Multiply(MultiplyFlags, Registers)

Multiply

Perform integer multiplication on data contained in registers.

§

MultiplyLong(MultiplyFlags, Registers)

Multiply long

Perform integer multiplication on data contained in registers, producing a 64-bit result.

§

SingleDataSwap(TransferFlags, Registers)

Single Data Swap

Perform a swap between a register and a memory address.

§

BranchExchange(Registers)

Branch and Exchange

Perform a branch by setting the program counter. The instruction set can also be changed based on the contents of the new PC.

§

HalfwordDataTransfer(TransferFlags, Registers, Shift)

Halfword and signed data transfer

Perform a transfer of a halfword, byte, signed halfword, or signed halfword value between a register and memory.

§

SingleDataTransfer(TransferFlags, Registers, Shift)

Single data transfer

Perform a transfer of a word, or byte value between a register and memory.

§

Undefined

Undefined

Execute the undefined instruction trap.

§

BlockDataTransfer(TransferFlags, Registers, u16)

Block data transfer

Perform a transfer of a subset of visible registers between the register bank and memory.

§

Branch(Condition, Link, i32)

Conditional branch

Perform a branch by adding an offset to the program counter.

§

CoprocessorDataTransfer(TransferFlags, u8, Registers, u32)

Coprocessor data transfer

Perform a transfer between a subset of a coprocessor’s registers and memory.

NOTE: The u8 member is the coprocessor number and the u32 member is the offset.

§

CoprocessorDataOperation(u8, u8, u8, Registers)

Coprocessor data operation

Perform a request for an operation on a coprocessor.

NOTE: The u8 members are, in order: coprocessor number, coprocessor opcode, coprocessor information.

§

CoprocessorRegisterTransfer(TransferFlags, u8, u8, u8, Registers)

Coprocessor register transfer

Perform a transfer between an ARM register and a coprocessor register, with an optional transformation.

NOTE: The u8 members are, in order: coprocessor number, coprocessor opcode, coprocessor information.

§

SoftwareInterrupt(u32)

Software interrupt

Execute the software interrupt trap.

Trait Implementations§

Source§

impl Clone for Operation

Source§

fn clone(&self) -> Operation

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 Debug for Operation

Source§

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

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

impl PartialEq for Operation

Source§

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

Source§

impl StructuralPartialEq for Operation

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.