diff options
-rw-r--r-- | src/lib.rs | 11 | ||||
-rw-r--r-- | src/memory.rs | 8 | ||||
-rw-r--r-- | src/simulator.rs | 2 |
3 files changed, 12 insertions, 9 deletions
@@ -34,19 +34,16 @@ fn it_works() { #[cfg(test)] mod tests { - use super::*; - #[test] fn cache_address_parsing() { - let dm_cache_word = memory::Cache::new(4, 1, 1); - let dm_cache_doubleword = memory::Cache::new(4, 1, 2); - let fa_cache_doubleword = memory::Cache::new(1, 4, 2); + use memory::*; + + let dm_cache_word = DirectMappedCache::new(4, 1, Memory::new(1)); + let dm_cache_doubleword = DirectMappedCache::new(4, 2, Memory::new(1)); assert_eq!(dm_cache_word.parse_address(0xFFFFFFFD), (0xFFFFFFF, 3, 1)); assert_eq!(dm_cache_doubleword.parse_address(0xFFFFFFFD), (0x7FFFFFF, 3, 5)); - assert_eq!(fa_cache_doubleword.parse_address(0xFFFFFFFD), - (0x1FFFFFFF, 0, 5)); } } diff --git a/src/memory.rs b/src/memory.rs index c3cc60a..d321711 100644 --- a/src/memory.rs +++ b/src/memory.rs @@ -75,7 +75,13 @@ pub struct DirectMappedCache<T: MemoryInterface> { } impl Memory { - pub fn new(size: isa::Address, binary: Binary) -> Memory { + pub fn new(size: isa::Address) -> Memory { + Memory { + memory: vec![0; size as usize], + } + } + + pub fn new_from_binary(size: isa::Address, binary: Binary) -> Memory { let mut memory = binary.words.clone(); let size = size as usize; if size > memory.len() { diff --git a/src/simulator.rs b/src/simulator.rs index 2e7ddbd..55b2b41 100644 --- a/src/simulator.rs +++ b/src/simulator.rs @@ -75,7 +75,7 @@ impl RegisterFile { impl Simulator { pub fn new(num_cores: usize, binary: Binary) -> Simulator { - let memory = Memory::new(0x2000, binary); + let memory = Memory::new_from_binary(0x2000, binary); // TODO: initialize GP, registers (GP is in headers) Simulator { num_cores: num_cores, |