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