33 lines
881 B
Rust
33 lines
881 B
Rust
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<SharedState>) {
|
|
loop {
|
|
thread::sleep(std::time::Duration::from_millis(100));
|
|
let state = state.proc.load();
|
|
println!("GP Registers: {:?}", state.registers);
|
|
}
|
|
}
|