[ram] Normalize memory access across memory devices

This commit is contained in:
2024-02-18 09:44:49 +05:30
parent 2f0e0b4730
commit 0221eeedaf
4 changed files with 8 additions and 6 deletions

View File

@@ -1,5 +1,5 @@
use crate::emu::iomem::MemoryMappedIO;
use crate::emu::mem::RamMemory;
use crate::emu::ram::RamMemory;
use crate::misc::emulator_error::DeviceType::MMU;
use crate::misc::emulator_error::EmulatorError::UnreachableMemory;
@@ -42,7 +42,8 @@ impl Memory for MappedMemory {
self.memory_mapped_io.try_get_byte(address)
}
RAM_MEM_START..=RAM_MEM_END => {
self.ram_memory.try_get_byte(address)
let memory_index = address - RAM_MEM_START;
self.ram_memory.try_get_byte(memory_index)
}
_ => { Err(UnreachableMemory(MMU, address)) }
}?;

View File

@@ -1,4 +1,4 @@
pub mod cpu;
pub mod mmu;
pub mod mem;
pub mod ram;
pub mod iomem;

View File

@@ -4,7 +4,8 @@ use crate::misc::emulator_error::DeviceType::RAM;
use crate::misc::emulator_error::EmulatorError;
use crate::misc::result::EmulatorResult;
const MEM_LENGTH: usize = 2 << 24;
const MAPPED_MEMORY_NOT_REQUIRED: u8 = 8;
const MEM_LENGTH: usize = (2 << 24) - (MAPPED_MEMORY_NOT_REQUIRED as usize);
#[derive(Clone, Debug)]
pub struct RamMemory {
@@ -45,7 +46,7 @@ impl Memory for RamMemory {
#[cfg(test)]
mod tests{
use crate::emu::mem::RamMemory;
use crate::emu::ram::RamMemory;
use crate::emu::mmu::Memory;
const EXAMPLE_ADDRESS:u32=0x24;