holey-bytes/hbvm/src/main.rs

43 lines
957 B
Rust
Raw Normal View History

2023-07-11 15:04:48 +00:00
use hbvm::vm::mem::{HandlePageFault, Memory, MemoryAccessReason, PageSize};
2023-06-24 22:16:14 +00:00
use {
hbvm::{validate::validate, vm::Vm},
std::io::{stdin, Read},
2023-04-22 18:00:19 +00:00
};
2023-04-18 23:08:30 +00:00
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut prog = vec![];
stdin().read_to_end(&mut prog)?;
2023-06-24 22:16:14 +00:00
if let Err(e) = validate(&prog) {
eprintln!("Program validation error: {e:?}");
return Ok(());
} else {
unsafe {
2023-07-11 08:29:23 +00:00
let mut vm = Vm::<_, 0>::new_unchecked(&prog, TestTrapHandler);
vm.memory.insert_test_page();
println!("Program interrupt: {:?}", vm.run());
println!("{:?}", vm.registers);
}
}
2023-04-22 21:06:33 +00:00
Ok(())
}
pub fn time() -> u32 {
9
}
2023-06-24 22:16:14 +00:00
struct TestTrapHandler;
2023-07-11 15:04:48 +00:00
impl HandlePageFault for TestTrapHandler {
2023-06-24 22:16:14 +00:00
fn page_fault(
&mut self,
_: MemoryAccessReason,
_: &mut Memory,
_: u64,
_: PageSize,
_: *mut u8,
) -> bool {
false
}
}