From 2fe86b9ccd64afbe485b8290db9f11b93d9943bf Mon Sep 17 00:00:00 2001 From: Fabian Stemmler Date: Thu, 5 Sep 2019 17:53:29 +0200 Subject: [PATCH] Refactored MicroprogramMemory to MicroInstructionMemory --- .../machine/mi/MicroInstructionMemory.java | 12 ++++++ .../MicroInstructionMemoryParseException.java | 28 +++++++++++++ ...java => MicroInstructionMemoryParser.java} | 39 ++++--------------- .../machine/mi/MicroprogramMemory.java | 12 ------ .../mi/MicroprogramMemoryParseException.java | 28 ------------- ...va => StandardMicroInstructionMemory.java} | 6 +-- .../mi/InstructionTableContentProvider.java | 6 +-- .../plugin/tables/mi/InstructionView.java | 16 ++++---- 8 files changed, 62 insertions(+), 85 deletions(-) create mode 100644 net.mograsim.machine/src/net/mograsim/machine/mi/MicroInstructionMemory.java create mode 100644 net.mograsim.machine/src/net/mograsim/machine/mi/MicroInstructionMemoryParseException.java rename net.mograsim.machine/src/net/mograsim/machine/mi/{MicroprogramMemoryParser.java => MicroInstructionMemoryParser.java} (65%) delete mode 100644 net.mograsim.machine/src/net/mograsim/machine/mi/MicroprogramMemory.java delete mode 100644 net.mograsim.machine/src/net/mograsim/machine/mi/MicroprogramMemoryParseException.java rename net.mograsim.machine/src/net/mograsim/machine/mi/{StandardMicroprogramMemory.java => StandardMicroInstructionMemory.java} (84%) diff --git a/net.mograsim.machine/src/net/mograsim/machine/mi/MicroInstructionMemory.java b/net.mograsim.machine/src/net/mograsim/machine/mi/MicroInstructionMemory.java new file mode 100644 index 00000000..6d02f7be --- /dev/null +++ b/net.mograsim.machine/src/net/mograsim/machine/mi/MicroInstructionMemory.java @@ -0,0 +1,12 @@ +package net.mograsim.machine.mi; + +import net.mograsim.machine.Memory; +import net.mograsim.machine.MemoryDefinition; + +public interface MicroInstructionMemory extends Memory +{ + public static MicroInstructionMemory create(MemoryDefinition def) + { + return new StandardMicroInstructionMemory(def); + } +} diff --git a/net.mograsim.machine/src/net/mograsim/machine/mi/MicroInstructionMemoryParseException.java b/net.mograsim.machine/src/net/mograsim/machine/mi/MicroInstructionMemoryParseException.java new file mode 100644 index 00000000..674e4185 --- /dev/null +++ b/net.mograsim.machine/src/net/mograsim/machine/mi/MicroInstructionMemoryParseException.java @@ -0,0 +1,28 @@ +package net.mograsim.machine.mi; + +import net.mograsim.machine.MachineException; + +public class MicroInstructionMemoryParseException extends MachineException +{ + + /** + * + */ + private static final long serialVersionUID = 6820101808901789906L; + + public MicroInstructionMemoryParseException() + { + super(); + } + + public MicroInstructionMemoryParseException(String message) + { + super(message); + } + + public MicroInstructionMemoryParseException(Throwable cause) + { + super(cause); + } + +} diff --git a/net.mograsim.machine/src/net/mograsim/machine/mi/MicroprogramMemoryParser.java b/net.mograsim.machine/src/net/mograsim/machine/mi/MicroInstructionMemoryParser.java similarity index 65% rename from net.mograsim.machine/src/net/mograsim/machine/mi/MicroprogramMemoryParser.java rename to net.mograsim.machine/src/net/mograsim/machine/mi/MicroInstructionMemoryParser.java index da3e1e08..44d00981 100644 --- a/net.mograsim.machine/src/net/mograsim/machine/mi/MicroprogramMemoryParser.java +++ b/net.mograsim.machine/src/net/mograsim/machine/mi/MicroInstructionMemoryParser.java @@ -20,9 +20,9 @@ import net.mograsim.machine.mi.parameters.MnemonicFamily; import net.mograsim.machine.mi.parameters.MnemonicFamily.MnemonicPair; import net.mograsim.machine.mi.parameters.ParameterClassification; -public class MicroprogramMemoryParser +public class MicroInstructionMemoryParser { - public static MicroprogramMemory parseMemory(MicroInstructionDefinition definition, String input) throws IOException + public static MicroInstructionMemory parseMemory(MicroInstructionDefinition definition, String input) throws IOException { try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(input)))) { @@ -30,7 +30,7 @@ public class MicroprogramMemoryParser } } - public static MicroprogramMemory parseMemory(MicroInstructionDefinition definition, BufferedReader input) + public static MicroInstructionMemory parseMemory(MicroInstructionDefinition definition, BufferedReader input) { List instructions = new ArrayList<>(); try @@ -44,7 +44,7 @@ public class MicroprogramMemoryParser } int maxAddress = instructions.size() - 1; - MicroprogramMemory memory = MicroprogramMemory + MicroInstructionMemory memory = MicroInstructionMemory .create(MemoryDefinition.create((int) Math.ceil(Math.log(maxAddress)), 0, maxAddress)); int i = 0; for (MicroInstruction inst : instructions) @@ -57,7 +57,7 @@ public class MicroprogramMemoryParser int size = definition.size(); String[] strings = toParse.split(","); if (size != strings.length) - throw new MicroprogramMemoryParseException( + throw new MicroInstructionMemoryParseException( "String does not match definition! The number of parameters does not match."); MicroInstructionParameter[] params = new MicroInstructionParameter[size]; ParameterClassification[] classes = definition.getParameterClassifications(); @@ -70,11 +70,11 @@ public class MicroprogramMemoryParser return new StandardMicroInstruction(params); } catch (Exception e) { - throw new MicroprogramMemoryParseException(e.getCause()); + throw new MicroInstructionMemoryParseException(e.getCause()); } } - public static void write(MicroprogramMemory memory, String output) throws IOException + public static void write(MicroInstructionMemory memory, String output) throws IOException { try (OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(output))) { @@ -82,7 +82,7 @@ public class MicroprogramMemoryParser } } - public static void write(MicroprogramMemory memory, OutputStreamWriter output) throws IOException + public static void write(MicroInstructionMemory memory, OutputStreamWriter output) throws IOException { MemoryDefinition def = memory.getDefinition(); long min = def.getMinimalAddress(), max = def.getMaximalAddress() + 1; @@ -104,27 +104,4 @@ public class MicroprogramMemoryParser sb.append(inst.getParameter(max).toString()); return sb.toString(); } - - public static void main(String[] args) - { - MnemonicFamily family = new MnemonicFamily(new MnemonicPair("ZERO", BitVector.SINGLE_0), - new MnemonicPair("ONE", BitVector.SINGLE_1)); - BooleanClassification boolClass = new BooleanClassification("H", "L"); - MicroInstructionDefinition def = MicroInstructionDefinition.create(boolClass, - new IntegerClassification(8), family); - MicroprogramMemory memory = new StandardMicroprogramMemory(MemoryDefinition.create(4, 0, 16)); - for (int i = 0; i < 17; i++) - memory.setCell(i, new StandardMicroInstruction(boolClass.get(false), - new IntegerImmediate(BigInteger.valueOf(i), 8), family.get(i % 2))); - try - { - write(memory, "test.txt"); - MicroprogramMemory newMemory = parseMemory(def, "test.txt"); - write(newMemory, "test2.txt"); - } catch (IOException e) - { - e.printStackTrace(); - } - - } } diff --git a/net.mograsim.machine/src/net/mograsim/machine/mi/MicroprogramMemory.java b/net.mograsim.machine/src/net/mograsim/machine/mi/MicroprogramMemory.java deleted file mode 100644 index e31ce771..00000000 --- a/net.mograsim.machine/src/net/mograsim/machine/mi/MicroprogramMemory.java +++ /dev/null @@ -1,12 +0,0 @@ -package net.mograsim.machine.mi; - -import net.mograsim.machine.Memory; -import net.mograsim.machine.MemoryDefinition; - -public interface MicroprogramMemory extends Memory -{ - public static MicroprogramMemory create(MemoryDefinition def) - { - return new StandardMicroprogramMemory(def); - } -} diff --git a/net.mograsim.machine/src/net/mograsim/machine/mi/MicroprogramMemoryParseException.java b/net.mograsim.machine/src/net/mograsim/machine/mi/MicroprogramMemoryParseException.java deleted file mode 100644 index eea81af6..00000000 --- a/net.mograsim.machine/src/net/mograsim/machine/mi/MicroprogramMemoryParseException.java +++ /dev/null @@ -1,28 +0,0 @@ -package net.mograsim.machine.mi; - -import net.mograsim.machine.MachineException; - -public class MicroprogramMemoryParseException extends MachineException -{ - - /** - * - */ - private static final long serialVersionUID = 6820101808901789906L; - - public MicroprogramMemoryParseException() - { - super(); - } - - public MicroprogramMemoryParseException(String message) - { - super(message); - } - - public MicroprogramMemoryParseException(Throwable cause) - { - super(cause); - } - -} diff --git a/net.mograsim.machine/src/net/mograsim/machine/mi/StandardMicroprogramMemory.java b/net.mograsim.machine/src/net/mograsim/machine/mi/StandardMicroInstructionMemory.java similarity index 84% rename from net.mograsim.machine/src/net/mograsim/machine/mi/StandardMicroprogramMemory.java rename to net.mograsim.machine/src/net/mograsim/machine/mi/StandardMicroInstructionMemory.java index e06a94da..6ef54bdb 100644 --- a/net.mograsim.machine/src/net/mograsim/machine/mi/StandardMicroprogramMemory.java +++ b/net.mograsim.machine/src/net/mograsim/machine/mi/StandardMicroInstructionMemory.java @@ -6,16 +6,16 @@ import net.mograsim.machine.MemoryDefinition; import net.mograsim.machine.MemoryObserver; import net.mograsim.machine.standard.memory.MemoryException; -class StandardMicroprogramMemory implements MicroprogramMemory +class StandardMicroInstructionMemory implements MicroInstructionMemory { private MicroInstruction[] data; private MemoryDefinition definition; private HashSet observers = new HashSet<>(); - StandardMicroprogramMemory(MemoryDefinition definition) + StandardMicroInstructionMemory(MemoryDefinition definition) { if(definition.size() > Integer.MAX_VALUE) - throw new MemoryException("Size of MicroprogramMemory must be an int, not a long"); + throw new MemoryException("Size of MicroInstructionMemory must be an int, not a long"); this.definition = definition; data = new MicroInstruction[(int) definition.size()]; } diff --git a/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/InstructionTableContentProvider.java b/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/InstructionTableContentProvider.java index 00a6f196..605e26d4 100644 --- a/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/InstructionTableContentProvider.java +++ b/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/InstructionTableContentProvider.java @@ -4,12 +4,12 @@ import org.eclipse.jface.viewers.ILazyContentProvider; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.Viewer; -import net.mograsim.machine.mi.MicroprogramMemory; +import net.mograsim.machine.mi.MicroInstructionMemory; public class InstructionTableContentProvider implements ILazyContentProvider { private TableViewer viewer; - private MicroprogramMemory memory; + private MicroInstructionMemory memory; @Override public void updateElement(int index) @@ -21,7 +21,7 @@ public class InstructionTableContentProvider implements ILazyContentProvider public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { this.viewer = (TableViewer) viewer; - this.memory = (MicroprogramMemory) newInput; + this.memory = (MicroInstructionMemory) newInput; if (this.memory != null) this.viewer.setItemCount((int) memory.size()); } diff --git a/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/InstructionView.java b/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/InstructionView.java index ee1f5da0..167a6276 100644 --- a/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/InstructionView.java +++ b/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/InstructionView.java @@ -17,9 +17,9 @@ import org.eclipse.swt.widgets.TableColumn; import org.eclipse.ui.part.ViewPart; import net.mograsim.machine.mi.MicroInstructionDefinition; -import net.mograsim.machine.mi.MicroprogramMemory; -import net.mograsim.machine.mi.MicroprogramMemoryParseException; -import net.mograsim.machine.mi.MicroprogramMemoryParser; +import net.mograsim.machine.mi.MicroInstructionMemory; +import net.mograsim.machine.mi.MicroInstructionMemoryParseException; +import net.mograsim.machine.mi.MicroInstructionMemoryParser; import net.mograsim.machine.mi.parameters.ParameterClassification; import net.mograsim.plugin.asm.AsmNumberUtil.NumberType; import net.mograsim.plugin.tables.DisplaySettings; @@ -33,7 +33,7 @@ public class InstructionView extends ViewPart private TableViewer viewer; private TableViewerColumn[] columns = new TableViewerColumn[0]; private MicroInstructionDefinition miDef; - private MicroprogramMemory memory; + private MicroInstructionMemory memory; private DisplaySettings displaySettings; @SuppressWarnings("unused") @@ -97,7 +97,7 @@ public class InstructionView extends ViewPart saveLoc = d.getFilterPath() + File.separator + filename; } - public void bindMicroprogramMemory(MicroprogramMemory memory) + public void bindMicroprogramMemory(MicroInstructionMemory memory) { this.memory = memory; viewer.setInput(memory); @@ -178,11 +178,11 @@ public class InstructionView extends ViewPart } try { - MicroprogramMemory newMemory = MicroprogramMemoryParser.parseMemory(miDef, file); + MicroInstructionMemory newMemory = MicroInstructionMemoryParser.parseMemory(miDef, file); bindMicroprogramMemory(newMemory); saveLoc = file; } - catch (IOException | MicroprogramMemoryParseException e) + catch (IOException | MicroInstructionMemoryParseException e) { e.printStackTrace(); } @@ -198,7 +198,7 @@ public class InstructionView extends ViewPart { try { - MicroprogramMemoryParser.write(memory, file); + MicroInstructionMemoryParser.write(memory, file); } catch (IOException e) { -- 2.17.1