|
Simple Machine | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjava.util.Observable
Util.AbstractDataModel
ISA.Memory
public class Memory
From the ISA perspective, memory consists of a set of code or data regions. Regions are data models available for gui. Memory observes the PC register and fires a cursor-change event on regions as PC moves though code. As data models, regions can be updated by the gui and they fire change events when they change. Regions can be extended after creation and if a region extends into another the two are coallesced. Regions themselves are views of memory and register as observers on memory so they can reflect memory changes to region observers. The translation between InstructionRegions and Memory is tricky, because (a) it requires assembly/disassembly and (b) InstructionRegions contain line comments and labels that are not sorted in memory, but that are nevertheless retained.
Nested Class Summary | |
---|---|
static class |
Memory.FileTypeException
Exception for errors in put file type. |
class |
Memory.InputFileSyntaxException
Exception for syntax errors in asm and mac input files. |
class |
Memory.LabelMap
|
static class |
Memory.LabelMapEventType
|
static interface |
Memory.LengthChangedListener
Interface for classes that listen for length change events. |
static interface |
Memory.StateChangedListener
|
Constructor Summary | |
---|---|
Memory(AbstractISA anISA,
DataModel aMainMemory,
DataModel aPC)
|
Method Summary | |
---|---|
void |
add(MemoryCell cell)
Add cell to appropriate region; creating or extending the region, possibly coallescing two regions. |
void |
addLabelOnly(MemoryCell cell)
Add cell's label to symbol table without adding cell to memory. |
void |
addLengthChangedListener(Memory.LengthChangedListener l)
|
void |
addObserver(java.util.Observer anObserver)
|
void |
addStatedChangeListener(Memory.StateChangedListener l)
|
protected void |
addUndo(javax.swing.undo.UndoableEdit e)
|
void |
addUndoableEditListener(javax.swing.event.UndoableEditListener l)
|
void |
checkpointData(boolean changesMemory)
Checkpoint Data |
void |
clear()
Clear all regions |
void |
fireDeleted(int address,
int length,
int lastAddress)
|
void |
fireInserted(int address,
int length,
int lastAddress)
|
java.lang.Class |
getColumnClass(int columnIndex)
|
int |
getColumnCount()
|
java.lang.String |
getColumnName(int columnIndex)
|
java.lang.String |
getIsaName()
|
Memory.LabelMap |
getLabelMap()
|
java.lang.String |
getLoadedFilename()
|
java.util.List<Region> |
getRegions()
Get a list of all memory regions. |
int |
getRowCount()
|
java.lang.Object |
getValueAt(int rowIndex,
int columnIndex)
|
boolean |
hasLoadedFile()
|
boolean |
hasUnsavedChanges()
|
boolean |
isCellEditable(int rowIndex,
int columnIndex)
|
void |
loadFile(java.lang.String filename)
Load a file into memory where type of file is determined by it's extension (i.e., *.s for assembly langauge and *.gold for machine code). |
void |
restoreDataFromCheckpoint()
Restore from checkpoint |
void |
saveToFile(java.lang.String filename)
Save to file |
void |
setChanged(boolean isChanged)
|
void |
setValueAt(java.lang.Object[] aValue,
int rowIndex,
int columnIndex)
|
void |
setValueAt(java.lang.Object aValue,
int rowIndex,
int columnIndex)
|
void |
setValueAtByUser(java.lang.Object[] aValue,
int rowIndex,
int columnIndex)
|
void |
setValueAtByUser(java.lang.Object aValue,
int rowIndex,
int columnIndex)
|
void |
update(java.util.Observable o,
java.lang.Object arg)
Called when the PC or memory that backs a region changes. |
Methods inherited from class Util.AbstractDataModel |
---|
canDeleteRow, canInsertRow, deleteRow, insertRow, tellObservers, tellObservers |
Methods inherited from class java.util.Observable |
---|
clearChanged, countObservers, deleteObserver, deleteObservers, hasChanged, notifyObservers, notifyObservers, setChanged |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public Memory(AbstractISA anISA, DataModel aMainMemory, DataModel aPC)
Method Detail |
---|
public Memory.LabelMap getLabelMap()
public boolean hasLoadedFile()
public java.lang.String getLoadedFilename()
public boolean hasUnsavedChanges()
public void setChanged(boolean isChanged)
public void addStatedChangeListener(Memory.StateChangedListener l)
public void addLengthChangedListener(Memory.LengthChangedListener l)
public void fireInserted(int address, int length, int lastAddress)
public void fireDeleted(int address, int length, int lastAddress)
public java.util.List<Region> getRegions()
public void addLabelOnly(MemoryCell cell)
public void add(MemoryCell cell)
public void clear()
public void update(java.util.Observable o, java.lang.Object arg)
update
in interface java.util.Observer
public java.lang.String getIsaName()
public void checkpointData(boolean changesMemory)
public void restoreDataFromCheckpoint()
public void saveToFile(java.lang.String filename) throws java.io.FileNotFoundException
java.io.FileNotFoundException
public void loadFile(java.lang.String filename) throws Memory.InputFileSyntaxException, java.io.FileNotFoundException, java.io.IOException, Memory.FileTypeException
Memory.FileTypeException
- indicates unknown file type
Memory.InputFileSyntaxException
java.io.FileNotFoundException
java.io.IOException
public void addUndoableEditListener(javax.swing.event.UndoableEditListener l)
addUndoableEditListener
in interface DataModel
addUndoableEditListener
in class AbstractDataModel
protected void addUndo(javax.swing.undo.UndoableEdit e)
public void addObserver(java.util.Observer anObserver)
addObserver
in interface DataModel
addObserver
in class java.util.Observable
public java.lang.Class getColumnClass(int columnIndex)
getColumnClass
in interface DataModel
getColumnClass
in class AbstractDataModel
public int getColumnCount()
getColumnCount
in interface DataModel
getColumnCount
in class AbstractDataModel
public java.lang.String getColumnName(int columnIndex)
getColumnName
in interface DataModel
getColumnName
in class AbstractDataModel
public int getRowCount()
getRowCount
in interface DataModel
getRowCount
in class AbstractDataModel
public java.lang.Object getValueAt(int rowIndex, int columnIndex)
getValueAt
in interface DataModel
getValueAt
in class AbstractDataModel
public boolean isCellEditable(int rowIndex, int columnIndex)
isCellEditable
in interface DataModel
isCellEditable
in class AbstractDataModel
public void setValueAt(java.lang.Object[] aValue, int rowIndex, int columnIndex)
setValueAt
in interface DataModel
setValueAt
in class AbstractDataModel
public void setValueAt(java.lang.Object aValue, int rowIndex, int columnIndex)
setValueAt
in interface DataModel
setValueAt
in class AbstractDataModel
public void setValueAtByUser(java.lang.Object aValue, int rowIndex, int columnIndex)
setValueAtByUser
in interface DataModel
setValueAtByUser
in class AbstractDataModel
public void setValueAtByUser(java.lang.Object[] aValue, int rowIndex, int columnIndex)
setValueAtByUser
in interface DataModel
setValueAtByUser
in class AbstractDataModel
|
Simple Machine | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |