registers
This commit is contained in:
parent
707a17e0bc
commit
c6ebceccac
97
src/main.rs
97
src/main.rs
@ -1,22 +1,93 @@
|
|||||||
mod mem;
|
mod mem;
|
||||||
|
use core::panic;
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::io::Read;
|
use std::io::Read;
|
||||||
|
use std::u16;
|
||||||
|
|
||||||
fn main() {
|
struct Registers {
|
||||||
let args: Vec<String> = env::args().collect();
|
r0: u16,
|
||||||
let path = args.get(1).expect("enter a file please!");
|
r1: u16,
|
||||||
let file = fs::File::open(path).expect("couldnt open file");
|
r2: u16,
|
||||||
let mut reader = io::BufReader::new(file);
|
r3: u16,
|
||||||
let mut values = Vec::new();
|
r4: u16,
|
||||||
let mut buffer:[u8;2] = [0;2];
|
r5: u16,
|
||||||
while reader.read_exact(&mut buffer).is_ok() {
|
r6: u16,
|
||||||
let instruction = u16::from_be_bytes(buffer);
|
r7: u16,
|
||||||
values.push(instruction);
|
pc: u16,
|
||||||
|
cond: u16,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Registers {
|
||||||
|
fn new() -> Registers {
|
||||||
|
Registers {
|
||||||
|
r0: 0,
|
||||||
|
r1: 0,
|
||||||
|
r2: 0,
|
||||||
|
r3: 0,
|
||||||
|
r4: 0,
|
||||||
|
r5: 0,
|
||||||
|
r6: 0,
|
||||||
|
r7: 0,
|
||||||
|
pc: 0x300,
|
||||||
|
cond: 0,
|
||||||
}
|
}
|
||||||
println!("data: {:?}\n", values);
|
}
|
||||||
for data in values{
|
|
||||||
println!("hex data: {:#06X}", data);
|
// s/o dogeystamp for this cool register return logic
|
||||||
|
// most other vms just updated it with a &mut self
|
||||||
|
|
||||||
|
fn return_register(&mut self, num: u16) -> &mut u16 {
|
||||||
|
match num {
|
||||||
|
0 => &mut self.r0,
|
||||||
|
1 => &mut self.r1,
|
||||||
|
2 => &mut self.r2,
|
||||||
|
3 => &mut self.r3,
|
||||||
|
4 => &mut self.r4,
|
||||||
|
5 => &mut self.r5,
|
||||||
|
6 => &mut self.r6,
|
||||||
|
7 => &mut self.r7,
|
||||||
|
_ => panic!("not a register!"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_register(&mut self, num: u16) -> u16 {
|
||||||
|
*self.return_register(num)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn set_registers(&mut self, num : u16, value: u16) {
|
||||||
|
*self.return_register(num) = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// let args: Vec<String> = 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);
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user