memory getter/setter
This commit is contained in:
parent
c8dfa736fd
commit
b6dfabe09a
43
src/main.rs
43
src/main.rs
@ -40,7 +40,7 @@ enum OpCodes {
|
|||||||
// registers
|
// registers
|
||||||
////////////////
|
////////////////
|
||||||
|
|
||||||
//
|
//
|
||||||
// condition flags
|
// condition flags
|
||||||
//
|
//
|
||||||
|
|
||||||
@ -130,16 +130,49 @@ impl Registers {
|
|||||||
}
|
}
|
||||||
|
|
||||||
////////////////
|
////////////////
|
||||||
// VM interface
|
// memory
|
||||||
////////////////
|
////////////////
|
||||||
|
|
||||||
|
|
||||||
const MEM_SIZE: usize = 1 << 16;
|
const MEM_SIZE: usize = 1 << 16;
|
||||||
|
|
||||||
struct VM {
|
struct Memory {
|
||||||
mem: [u16; MEM_SIZE]
|
data: [u16; MEM_SIZE],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Memory {
|
||||||
|
fn new() -> Memory {
|
||||||
|
Memory {
|
||||||
|
data: [0; MEM_SIZE],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn set_mem(&mut self, addr: u16, val: u16) {
|
||||||
|
self.data[addr as usize] = val;
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_mem(&self, addr: u16) -> u16 {
|
||||||
|
return self.data[addr as usize];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////
|
||||||
|
// VM interface
|
||||||
|
////////////////
|
||||||
|
|
||||||
|
struct VM {
|
||||||
|
mem: Memory,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl VM {
|
||||||
|
fn new() -> VM {
|
||||||
|
VM { mem: Memory::new() }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////
|
||||||
|
// driver code
|
||||||
|
////////////////
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
println!("Hello, world!");
|
println!("Hello, world!");
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user