|
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.Observerpublic 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.IOExceptionpublic void addUndoableEditListener(javax.swing.event.UndoableEditListener l)
addUndoableEditListener in interface DataModeladdUndoableEditListener in class AbstractDataModelprotected void addUndo(javax.swing.undo.UndoableEdit e)
public void addObserver(java.util.Observer anObserver)
addObserver in interface DataModeladdObserver in class java.util.Observablepublic java.lang.Class getColumnClass(int columnIndex)
getColumnClass in interface DataModelgetColumnClass in class AbstractDataModelpublic int getColumnCount()
getColumnCount in interface DataModelgetColumnCount in class AbstractDataModelpublic java.lang.String getColumnName(int columnIndex)
getColumnName in interface DataModelgetColumnName in class AbstractDataModelpublic int getRowCount()
getRowCount in interface DataModelgetRowCount in class AbstractDataModel
public java.lang.Object getValueAt(int rowIndex,
int columnIndex)
getValueAt in interface DataModelgetValueAt in class AbstractDataModel
public boolean isCellEditable(int rowIndex,
int columnIndex)
isCellEditable in interface DataModelisCellEditable in class AbstractDataModel
public void setValueAt(java.lang.Object[] aValue,
int rowIndex,
int columnIndex)
setValueAt in interface DataModelsetValueAt in class AbstractDataModel
public void setValueAt(java.lang.Object aValue,
int rowIndex,
int columnIndex)
setValueAt in interface DataModelsetValueAt in class AbstractDataModel
public void setValueAtByUser(java.lang.Object aValue,
int rowIndex,
int columnIndex)
setValueAtByUser in interface DataModelsetValueAtByUser in class AbstractDataModel
public void setValueAtByUser(java.lang.Object[] aValue,
int rowIndex,
int columnIndex)
setValueAtByUser in interface DataModelsetValueAtByUser in class AbstractDataModel
|
Simple Machine | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||