use clap::Parser; use dsa::{BulkAllocStore, Emulator, MemoryMap, SharedState, args::DsaArgs}; use std::{sync::Arc, thread}; fn main() { let args = DsaArgs::parse(); let mut emulator = Emulator::new(BulkAllocStore::new()); emulator.apply_memory_map(args.get_memory_map().unwrap_or_default()); let state = emulator.state_handle(); const STACK_SIZE: usize = 1024 * 1024 * 16; let runner = thread::Builder::new() .stack_size(STACK_SIZE) .spawn(move || emulator.run()) .unwrap(); let observer = thread::spawn(|| observe(state)); runner.join().unwrap(); observer.join().unwrap(); } /// todo: remove this! fn observe(state: Arc) { loop { thread::sleep(std::time::Duration::from_millis(100)); let state = state.proc.load(); println!("GP Registers: {:?}", state.registers); } }