Enum lc3_ensemble::sim::SimErr

source ·
pub enum SimErr {
Show 13 variants IllegalOpcode, InvalidInstrFormat, PrivilegeViolation, AccessViolation, ProgramHalted, StrictRegSetUninit, StrictMemSetUninit, StrictIOSetUninit, StrictJmpAddrUninit, StrictMemAddrUninit, StrictPCCurrUninit, StrictPCNextUninit, StrictPSRSetUninit,
}
Expand description

Errors that can occur during simulation.

Variants§

§

IllegalOpcode

Word was decoded, but the opcode was invalid.

§

InvalidInstrFormat

Word was decoded, and the opcode is recognized, but the instruction’s format is invalid.

§

PrivilegeViolation

A privileged instruction was called in user mode.

§

AccessViolation

A supervisor region was accessed in user mode.

§

ProgramHalted

Not an error, but HALT!

§

StrictRegSetUninit

A register was loaded with a partially uninitialized value.

This will ignore loads from the stack (R6), because it is convention to push registers (including uninitialized registers). This also ignores loads from allocated (.blkw) memory in case the program writer uses those as register stores.

§

StrictMemSetUninit

Memory was loaded with a partially uninitialized value.

This will ignore loads from the stack (R6), because it is convention to push registers (including uninitialized registers). This also ignores loads from allocated (.blkw) memory in case the program writer uses those as register stores.

§

StrictIOSetUninit

Data was stored into MMIO with a partially uninitialized value.

§

StrictJmpAddrUninit

Address to jump to is coming from an uninitialized value.

§

StrictMemAddrUninit

Address to read from memory is coming from an uninitialized value.

§

StrictPCCurrUninit

PC is pointing to an uninitialized value.

§

StrictPCNextUninit

PC was set to an address that has an uninitialized value and will read from it next cycle.

§

StrictPSRSetUninit

The PSR was loaded with a partially uninitialized value (by RTI).

Trait Implementations§

source§

impl Debug for SimErr

source§

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

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

impl Display for SimErr

source§

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

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

impl Error for SimErr

1.30.0 · source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more

Auto Trait Implementations§

§

impl Freeze for SimErr

§

impl RefUnwindSafe for SimErr

§

impl Send for SimErr

§

impl Sync for SimErr

§

impl Unpin for SimErr

§

impl UnwindSafe for SimErr

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