Struct SimFlags

Source
pub struct SimFlags {
    pub strict: bool,
    pub use_real_traps: bool,
    pub machine_init: MachineInitStrategy,
    pub debug_frames: bool,
    pub ignore_privilege: bool,
}
Expand description

Configuration flags for Simulator.

These can be modified after the Simulator is created with Simulator::new and their effects should still apply.

Read the field descriptions for more details.

Fields§

§strict: bool

Whether strict mode is enabled.

Strict mode adds additional integrity checks to the simulator, such as verifying initialization state is normal for provided data.

By default, this flag is false.

§use_real_traps: bool

Whether to use emulated version of certain traps.

Certain traps and exceptions have two separate implementations within Simulator, namely:

  • HALT or TRAP x25
  • Privilege mode exception
  • Illegal opcode exception
  • Access violation exception

This flag allows us to configure between the two implementations:

  • virtual (false): On execution of one of these interrupts, the simulator breaks and prints its own error.
  • real (true): On execution of one of these interrupts, the simulator delegates the error to the machine’s OS and continues through the OS.

Activating real traps is useful for maintaining integrity to the LC-3 ISA, whereas virtual HALT preserves the state of the machine prior to calling the interrupt routines and can provide slightly more helpful error messages.

By default, this flag is false.

§machine_init: MachineInitStrategy

The creation strategy for uninitialized Words.

This is used to initialize the mem and reg_file fields.

By default, this flag is MachineInitStrategy::default.

§debug_frames: bool

Whether to store debugging information about call frames.

This flag only goes into effect after a Simulator::new or Simulator::reset call.

By default, this flag is false.

§ignore_privilege: bool

If true, privilege checks are ignored and the simulator runs as though the executor has supervisor level privilege.

By default, this flag is false.

Trait Implementations§

Source§

impl Clone for SimFlags

Source§

fn clone(&self) -> SimFlags

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

Source§

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

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

impl Default for SimFlags

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl PartialEq for SimFlags

Source§

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

Source§

impl Eq for SimFlags

Source§

impl StructuralPartialEq for SimFlags

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

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

Source§

fn vzip(self) -> V