57 Memory(start, end, MAUSize, littleEndian),
58 start_(start), end_(end), MAUSize_(MAUSize),
59 MAUSize3_(MAUSize_ * 3), MAUSize2_(MAUSize_ * 2) {
65 if (
MAUSize_ >=
static_cast<Word
>(std::numeric_limits<Word>::digits)) {
160 const Word index = address -
start_;
175 const Word index = address -
start_;
190 const Word index = address -
start_;
207 const Word index = address -
start_;
237 const Word index = address -
start_;
252 const Word index = address -
start_;
267 const Word index = address -
start_;
284 const Word index = address -
start_;
Memory::MAU read(ULongWord address) override
void fastRead4MAUsBE(ULongWord address, ULongWord &data)
void writeBE(ULongWord address, int count, ULongWord data) override
DirectAccessMemory(ULongWord start, ULongWord end, Word MAUSize, bool littleEndian)
Word MAUSize_
Size of the minimum adressable unit.
void fastWrite2MAUsBE(ULongWord address, ULongWord data)
void fastWrite4MAUsBE(ULongWord address, ULongWord data)
void fastWriteMAU(ULongWord address, ULongWord data)
void fastRead2MAUsLE(ULongWord address, ULongWord &data)
Word start_
Starting point of the address space.
virtual void fillWithZeros()
virtual ~DirectAccessMemory()
Word end_
End point of the address space.
Word mask_
Mask bit pattern for unpacking IntWord to MAUs.
Word MAUSize2_
precalculated MAUSize_ * 2
void fastRead2MAUsBE(ULongWord address, ULongWord &data)
void fastWrite4MAUsLE(ULongWord address, ULongWord data)
void fastReadMAU(ULongWord address, ULongWord &data)
void fastRead4MAUsLE(ULongWord address, ULongWord &data)
void write(ULongWord address, Memory::MAU data) override
void fastWrite2MAUsLE(ULongWord address, ULongWord data)
MemoryContents * data_
Contains MAUs of the memory model, that is, the actual data of the memory.
Word MAUSize3_
precalculated MAUSize_ * 3
virtual void advanceClock()
virtual void writeBE(ULongWord address, int size, ULongWord data)
MinimumAddressableUnit MAU
ValueType readData(IndexType index)
void writeData(IndexType index, const ValueType &data)