diff options
| Commit | 991e6fdd96296bf7bcbee10c47c4f56dd1f83cf9 (patch) | |
|---|---|---|
| Author | 2025-02-14 13:28:22 +0200 | |
| Committer | 2025-02-14 13:28:39 +0200 | |
| Files | 56026c30dfd88759af455ebfd3787e1cd06b2720 /vm/src/main.rs | |
| tonkobali-991e6fdd96296bf7bcbee10c47c4f56dd1f83cf9.tar tonkobali-991e6fdd96296bf7bcbee10c47c4f56dd1f83cf9.tar.gz tonkobali-991e6fdd96296bf7bcbee10c47c4f56dd1f83cf9.zip | ||
| Parent | 5df95aaf466c2e2beaa321c380d03a4df7d07aaa (diff) | |
feat(vm): Proper cli
1 files changed, 25 insertions, 22 deletions
| -rw-r--r-- | vm/src/main.rs | 47 |
diff --git a/vm/src/main.rs b/vm/src/main.rs index 0076ba1..b3907ea 100644 --- a/vm/src/main.rs +++ b/vm/src/main.rs @@ -1,29 +1,32 @@ -use std::{ - sync::Arc, thread -}; - mod vm; -use vm::{ VirtualMachine, VirtualMachineInterface }; mod vmm; + +use std::{ sync::Arc, thread }; +use clap::Parser; + +use vm::{ VirtualMachine, VirtualMachineInterface }; use vmm::VirtualMachineMonitor; +#[derive(Parser, Debug)] +#[command(about, long_about = None)] +struct Args { + binary_path: Option<String>, + + #[arg(short, long, default_value_t = 10)] + tick_gap: u64, + + #[arg(short, long, default_value_t = 500)] + refresh: u64, +} + fn main() { - /* This is a simple program: calculate 331 + 95 in address 5 (answer 426) - * - * > ADD 331, 95 - * > JMP 0 - * - * > subleq 331, 0 - * > subleq 0, 95 - * > subleq 0, 0 - * > subleq 0, 0, 0 - * - * > subleq 3, 0, next - * > subleq 0, 4, next - * > subleq 0, 0, next - * > subleq 0, 0, 0 - */ - let vm = VirtualMachine::create_from_file("./program.bin"); + 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) + }; let _vm_handle = { let vm = Arc::clone(&vm); @@ -32,6 +35,6 @@ fn main() { }) }; - let mut monitor = VirtualMachineMonitor::new(); + let mut monitor = VirtualMachineMonitor::new(args.refresh); monitor.start(vm); } |
