diff --git a/helloworld b/helloworld new file mode 100644 index 0000000..873cf2a Binary files /dev/null and b/helloworld differ diff --git a/src/main.rs b/src/main.rs index aac2bba..4110fcf 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,63 +1,22 @@ -const PC_START: u16 = 0x3000; - -#[allow(dead_code)] -enum Registers { - R0 = 0, - R1, - R2, - R3, - R4, - R5, - R6, - R7, - PC, - COND, - COUNT -} - -#[allow(dead_code)] -enum Opcodes { - // https://www.cs.utexas.edu/~fussell/courses/cs310h/lectures/Lecture_10-310h.pdf - ADD = 0, // add - AND, // and - NOT, // not (bitwise) - LD, // load (pc relative) - LDI, // load indirect - LDR, // load base + offset - LEA, // load immediate - ST, // store pc relative - STR, // store base + offset - STI, // store indirect - BR, // branch - JSR, // jump register - JMP, // jump - RTI, // return from interrupt (unused) - TRAP, // trap -} - -#[allow(dead_code)] -enum ConditionFlags { - POS = 1 << 0, - ZERO = 1 << 1, - NEG = 1 << 2, -} +mod mem; +use std::env; +use std::fs; +use std::io; +use std::io::Read; fn main() { - let _memory:[u16; 1 << 16] = [0; 1 << 16]; - let mut registers:[u16; Registers::COUNT as usize] = [0; Registers::COUNT as usize]; - - registers[Registers::COND as usize] = ConditionFlags::ZERO as u16; - registers[Registers::PC as usize] = PC_START; - - // set running state - let mut running:bool = true; - while running { - let index: u16 = registers[Registers::PC as usize]; - let mut instr:u16 = _memory[index as usize]; - registers[Registers::PC as usize] += 1; - match instr >> 12 { - op if op == Opcodes::ADD as u16 => todo!(), - _ => todo!(), - } + let args: Vec = env::args().collect(); + let path = args.get(1).expect("enter a file please!"); + let file = fs::File::open(path).expect("couldnt open file"); + let mut reader = io::BufReader::new(file); + let mut values = Vec::new(); + let mut buffer:[u8;2] = [0;2]; + while reader.read_exact(&mut buffer).is_ok() { + let instruction = u16::from_be_bytes(buffer); + values.push(instruction); + } + println!("data: {:?}\n", values); + for data in values{ + println!("hex data: {:#06X}", data); } } diff --git a/src/mem.rs b/src/mem.rs new file mode 100644 index 0000000..e69de29