From 227ee1a959846cdf3b22f7d357dde5769af62024 Mon Sep 17 00:00:00 2001 From: Benjamin Kyd Date: Thu, 25 May 2023 18:46:28 +0100 Subject: [PATCH] da program counter --- src/main.rs | 18 +++++------------- src/ram.rs | 4 +++- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/src/main.rs b/src/main.rs index 67ca155..0bf5848 100644 --- a/src/main.rs +++ b/src/main.rs @@ -65,24 +65,16 @@ impl VMRV32I { } fn fetch(&mut self) -> inst::Instruction { - inst::Instruction { inst: 0xFFFFFFFF } + inst::Instruction { inst: self.bus.load_32(self.pc) } } fn exec(&mut self) { - let val: u8 = self.bus.memory.read_8(0x80000000); - println!("VM > BYTE at 0x80000000: 0x{:02x}", val); - let val = self.bus.memory.read_16(0x80000000); - println!("VM > HWORD at 0x80000000: 0x{:04x}", val); - let val = self.bus.memory.read_32(0x80000000); - println!("VM > WORD at 0x80000000: 0x{:08x}", val); - let val = self.bus.memory.read_64(0x80000000); - println!("VM > DWORD at 0x80000000: 0x{:016x}", val); - - let val = self.bus.load_8(0x7FFFFFFF); - println!("VM > BYTE at 0x80000000: 0x{:02x}", val); - while self.pc > self.bus.memory.len() as u32 { let inst = self.fetch(); + println!("VM > Fetched 0x{:08x}: 0x{:08x}", self.pc, unsafe {inst.inst}); + + self.pc = self.pc + rv32::WORD as u32; + self.x[0] = 0x00000000; } } } diff --git a/src/ram.rs b/src/ram.rs index d1f9ef9..f6cec79 100644 --- a/src/ram.rs +++ b/src/ram.rs @@ -1,7 +1,9 @@ use crate::bus; use crate::rv32; -pub const DRAM_SIZE: u32 = 1 * 1024 * 1024 * 1024; // 1GB +//pub const DRAM_SIZE: u32 = 1 * 1024 * 1024 * 1024; // 1GB +//pub const DRAM_SIZE: u32 = 1 * 1024; // 1KB +pub const DRAM_SIZE: u32 = 16; pub struct RAM(pub Vec);