2023-09-24 22:40:45 +00:00
|
|
|
mod state;
|
2023-09-24 21:34:28 +00:00
|
|
|
|
2023-09-24 22:40:45 +00:00
|
|
|
#[cfg (test)]
|
|
|
|
mod tests;
|
2023-09-24 21:34:28 +00:00
|
|
|
|
2023-09-24 21:16:10 +00:00
|
|
|
fn main() {
|
2023-09-24 22:40:45 +00:00
|
|
|
use state::Instruction as Inst;
|
|
|
|
use state::State;
|
|
|
|
|
|
|
|
let chunk = state::Chunk {
|
2023-09-24 21:16:10 +00:00
|
|
|
instructions: vec! [
|
2023-09-24 22:40:45 +00:00
|
|
|
Inst::VarArgPrep (0),
|
|
|
|
Inst::LoadK (0, 0),
|
|
|
|
Inst::LoadI (1, 3),
|
|
|
|
Inst::Add (2, 0, 1),
|
|
|
|
Inst::MmBin (0, 1, 6),
|
|
|
|
Inst::GetTabUp (3, 0, 1),
|
|
|
|
Inst::Move (4, 2),
|
|
|
|
Inst::Call (3, 2, 1),
|
|
|
|
Inst::Return (2, 2, 1),
|
|
|
|
Inst::Return (3, 1, 1),
|
2023-09-24 21:16:10 +00:00
|
|
|
],
|
|
|
|
constants: vec! [
|
2023-09-24 22:34:38 +00:00
|
|
|
0.5.into (),
|
|
|
|
"print".into (),
|
|
|
|
],
|
2023-09-24 21:16:10 +00:00
|
|
|
};
|
|
|
|
|
2023-09-24 22:40:45 +00:00
|
|
|
let mut vm = State::default ();
|
|
|
|
let upvalues = State::upvalues_from_args (std::env::args ());
|
2023-09-24 21:57:12 +00:00
|
|
|
println! ("Returned: {:?}", vm.execute_chunk (&chunk, &upvalues));
|
|
|
|
}
|