projects
/
Mograsim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Updated Am2900Machine and -Definition; Added MachineContext
[Mograsim.git]
/
net.mograsim.machine
/
src
/
net
/
mograsim
/
machine
/
mi
/
StandardMicroInstructionMemory.java
diff --git
a/net.mograsim.machine/src/net/mograsim/machine/mi/StandardMicroInstructionMemory.java
b/net.mograsim.machine/src/net/mograsim/machine/mi/StandardMicroInstructionMemory.java
index
6ef54bd
..
6d38491
100644
(file)
--- a/
net.mograsim.machine/src/net/mograsim/machine/mi/StandardMicroInstructionMemory.java
+++ b/
net.mograsim.machine/src/net/mograsim/machine/mi/StandardMicroInstructionMemory.java
@@
-2,17
+2,16
@@
package net.mograsim.machine.mi;
import java.util.HashSet;
import java.util.HashSet;
-import net.mograsim.machine.MemoryDefinition;
import net.mograsim.machine.MemoryObserver;
import net.mograsim.machine.standard.memory.MemoryException;
import net.mograsim.machine.MemoryObserver;
import net.mograsim.machine.standard.memory.MemoryException;
-class StandardMicroInstructionMemory implements MicroInstructionMemory
+
public
class StandardMicroInstructionMemory implements MicroInstructionMemory
{
private MicroInstruction[] data;
{
private MicroInstruction[] data;
- private MemoryDefinition definition;
+ private M
icroInstructionM
emoryDefinition definition;
private HashSet<MemoryObserver> observers = new HashSet<>();
private HashSet<MemoryObserver> observers = new HashSet<>();
-
StandardMicroInstructionMemory(
MemoryDefinition definition)
+
public StandardMicroInstructionMemory(MicroInstruction
MemoryDefinition definition)
{
if(definition.size() > Integer.MAX_VALUE)
throw new MemoryException("Size of MicroInstructionMemory must be an int, not a long");
{
if(definition.size() > Integer.MAX_VALUE)
throw new MemoryException("Size of MicroInstructionMemory must be an int, not a long");
@@
-28,7
+27,11
@@
class StandardMicroInstructionMemory implements MicroInstructionMemory
@Override
public MicroInstruction getCell(long address)
{
@Override
public MicroInstruction getCell(long address)
{
- return data[translate(address)];
+ int translatedAddress = translate(address);
+ MicroInstruction actual = data[translatedAddress];
+ if(actual == null)
+ actual = data[translatedAddress] = definition.getMicroInstructionDefinition().createDefaultInstruction();
+ return actual;
}
@Override
}
@Override
@@
-56,7
+59,7
@@
class StandardMicroInstructionMemory implements MicroInstructionMemory
}
@Override
}
@Override
- public MemoryDefinition getDefinition()
+ public M
icroInstructionM
emoryDefinition getDefinition()
{
return definition;
}
{
return definition;
}