use std::env::args; use dekejit::assembler::parser; use dekejit::assembler::to_binary; use dekejit::cpu::IOBuffer; use dekejit::cpu::CPU; fn main() { let args: Vec = args().collect(); if args.len() < 2 { println!("Scialla"); return; } // let code = std::fs::read_to_string("./tests/assembly/hello_world.grasm").unwrap(); let code = match std::fs::read_to_string(&args[1]) { Ok(p) => p, Err(_) => { println!("Could not open file '{}'", &args[1]); return; } }; let mut parser = parser::Parser::new(code); let r = parser.parse_sections().unwrap(); println!("Parsed sections: {:?}", r); let code = to_binary(r).unwrap(); // let mut k = make_string("Hello world!"); // // let mut code: Vec = vec![ // 0b0111000100000011, // addi ra 3 // 0b1110000100000011, // ecall ra 3 // 0b1111000000000000, // HALT. // ]; // // code.append(&mut k); // let mut env = IOBuffer::default(); // let mut cpu = CPU::new(&mut env); // for c in &code[..] { println!("{:#018b}", c); } // match cpu.run_code_raw(&code) { Ok(_) => { println!("Result: {}", env.output) } Err(e) => println!("Err: {:?}", e), }; }