From 5f4c4db0adf2c583def86d898e65bfe4c32d66fc Mon Sep 17 00:00:00 2001 From: Dan Barber Date: Thu, 10 Dec 2015 14:57:39 +0100 Subject: [PATCH] First commit Started disassembler. --- .gitignore | 19 +++++++++++++++++++ Cargo.lock | 4 ++++ Cargo.toml | 5 +++++ src/main.rs | 32 ++++++++++++++++++++++++++++++++ 4 files changed, 60 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 src/main.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4c61354 --- /dev/null +++ b/.gitignore @@ -0,0 +1,19 @@ +# Compiled files +*.o +*.so +*.rlib +*.dll + +# Executables +*.exe + +# Generated by Cargo +/target/ + +# Remove Cargo.lock from gitignore if creating an executable, leave it for +# libraries +# More information here http://doc.crates.io/guide.html#cargotoml-vs-cargolock +Cargo.lock + +# Ignore the invaders roms +invaders/ diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..a19f743 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,4 @@ +[root] +name = "8080" +version = "0.0.1" + diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..424902b --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,5 @@ +[package] + +name = "8080" +version = "0.0.1" +authors = [ "Dan Barber " ] diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..b151264 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,32 @@ +use std::io::{self, Read}; + +fn main() { + let mut input: Vec = vec![]; + + let mut counter: usize = 0; + + io::stdin() + .read_to_end(&mut input) + .unwrap(); + + // for byte in input.iter() { + // println!("{}", byte); + // }; + + while counter < input.len() { + // get the instruction + let opcode = input[counter]; + match opcode { + 0x00 => println!("NOP"), + 0xc3 => { + counter += 1; + let low = input[counter]; + counter += 1; + let high = input[counter]; + println!("JMP ${:x}{:x}", high, low); + } + _ => println!("{:x}", opcode), + } + counter += 1; + } +}