2023-05-22 14:01:13 +00:00
|
|
|
use hbvm::{
|
2023-05-28 21:38:26 +00:00
|
|
|
bytecode::ops::{Operations::*},
|
2023-05-06 12:33:40 +00:00
|
|
|
engine::Engine,
|
2023-05-28 14:49:01 +00:00
|
|
|
RuntimeErrors, HaltStatus,
|
2023-04-22 18:00:19 +00:00
|
|
|
};
|
2023-04-18 23:08:30 +00:00
|
|
|
|
|
|
|
fn main() -> Result<(), RuntimeErrors> {
|
2023-05-23 07:29:31 +00:00
|
|
|
// TODO: Grab program from cmdline
|
2023-04-22 22:17:49 +00:00
|
|
|
#[rustfmt::skip]
|
|
|
|
let prog: Vec<u8> = vec![
|
2023-05-28 21:38:26 +00:00
|
|
|
NOP as u8,
|
|
|
|
JUMP as u8, 0, 0, 0, 0, 0, 0, 0, 0,
|
2023-04-22 22:17:49 +00:00
|
|
|
];
|
2023-04-22 21:06:33 +00:00
|
|
|
|
2023-04-22 22:17:49 +00:00
|
|
|
let mut eng = Engine::new(prog);
|
|
|
|
// eng.set_timer_callback(time);
|
2023-05-23 03:47:29 +00:00
|
|
|
eng.enviroment_call_table[10] = Some(print_fn);
|
2023-05-28 14:49:01 +00:00
|
|
|
while eng.run()? != HaltStatus::Halted {}
|
2023-05-06 12:33:40 +00:00
|
|
|
eng.dump();
|
2023-05-09 08:36:37 +00:00
|
|
|
println!("{:#?}", eng.registers);
|
2023-04-22 21:06:33 +00:00
|
|
|
|
|
|
|
Ok(())
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn time() -> u32 {
|
|
|
|
9
|
|
|
|
}
|
2023-05-28 14:49:01 +00:00
|
|
|
|
2023-05-06 12:33:40 +00:00
|
|
|
pub fn print_fn(engine: &mut Engine) -> Result<&mut Engine, u64> {
|
|
|
|
println!("hello");
|
|
|
|
Ok(engine)
|
2023-04-18 23:08:30 +00:00
|
|
|
}
|