class RPicSim::CompositeMemory
This class wraps two or more memory objects and provides an interface that is also like {RPicSim::Memory}. Any reads or writes from the composite memory will go to the first component memory for which the address is valid.
@api private
Public Class Methods
new(memories)
click to toggle source
Creates a new instance. The memory objects given must support the following methods:
-
read_byte
-
write_byte
-
read_word
-
write_word
-
valid_address?
@param memories [Array]
# File lib/rpicsim/composite_memory.rb, line 20 def initialize(memories) @memories = memories end
Public Instance Methods
read_byte(address)
click to toggle source
# File lib/rpicsim/composite_memory.rb, line 24 def read_byte(address) memory(address).read_byte(address) end
read_word(address)
click to toggle source
# File lib/rpicsim/composite_memory.rb, line 32 def read_word(address) memory(address).read_word(address) end
valid_address?(address)
click to toggle source
# File lib/rpicsim/composite_memory.rb, line 40 def valid_address?(address) !find_memory(address).nil? end
write_byte(address, value)
click to toggle source
# File lib/rpicsim/composite_memory.rb, line 28 def write_byte(address, value) memory(address).write_byte(address, value) end
write_word(address, value)
click to toggle source
# File lib/rpicsim/composite_memory.rb, line 36 def write_word(address, value) memory(address).write_word(address, value) end
Private Instance Methods
find_memory(address)
click to toggle source
# File lib/rpicsim/composite_memory.rb, line 46 def find_memory(address) @memories.find do |memory| memory.valid_address?(address) end end
memory(address)
click to toggle source
# File lib/rpicsim/composite_memory.rb, line 52 def memory(address) find_memory(address) or raise 'Invalid memory address %#x.' % address end