1 package net.mograsim.machine.standard.memory;
3 import java.math.BigInteger;
5 import net.mograsim.logic.core.types.Bit;
6 import net.mograsim.logic.core.types.BitVector;
7 import net.mograsim.machine.BitVectorMemory;
8 import net.mograsim.machine.BitVectorMemoryDefinition;
9 import net.mograsim.machine.GenericMemory;
11 public class StandardBitVectorMemory<D extends BitVectorMemoryDefinition> extends GenericMemory<BitVector, D> implements BitVectorMemory
13 public StandardBitVectorMemory(D definition)
19 public BitVector getCell(long address)
21 BitVector cell = super.getCell(address);
23 setCell(address, cell = getDefaultValue(address));
28 public BigInteger getCellAsBigInteger(long address)
30 return getCell(address).getUnsignedValue();
34 public void setCell(long address, BitVector data)
37 super.setCell(address, data);
41 public void setCellAsBigInteger(long address, BigInteger data)
43 setCell(address, BitVector.from(data, getDefinition().getCellWidth()));
46 protected BitVector getDefaultValue(@SuppressWarnings("unused") /* this method is inteded to be overridden */ long address)
48 return BitVector.of(Bit.U, getDefinition().getCellWidth());