mod vm; mod vmm; use clap::Parser; use vm::{ VirtualMachine, VirtualMachineInterface }; use vmm::VirtualMachineMonitor; #[derive(Parser, Debug)] #[command(about, long_about = None)] struct Args { /// Path to assembled binary binary_path: Option, /// Time between each instruction execution #[arg(short, long, default_value_t = 2)] tick_gap: u64, /// How often the command-line updates #[arg(short, long, default_value_t = 200)] refresh: u64, } fn main() { let args = Args::parse(); let vm = if let Some(path) = &args.binary_path { VirtualMachine::create_from_file(args.tick_gap, path) } else { VirtualMachine::create(args.tick_gap) }; vm.spawn(); let mut monitor = VirtualMachineMonitor::new(args.refresh); monitor.start(vm); }