1 package net.mograsim.machine;
5 import net.mograsim.machine.mi.MPROMDefinition;
6 import net.mograsim.machine.mi.MicroInstructionMemoryDefinition;
7 import net.mograsim.machine.registers.Register;
8 import net.mograsim.machine.registers.RegisterGroup;
10 public interface MachineDefinition
13 * This returns the MachineDefinitions ID. This must be consistent and coherent with the id in the extension point (Eclipse plugin xml)
14 * providing the definition.
16 * @return a human readable, unique id representing the specified machine.
17 * @author Christian Femers
22 * Returns a human-readable description of the machine definition.
24 * @author Daniel Kirschten
26 String getDescription();
29 * Creates a new instance of the machine
31 * @return a new object of an {@link Machine} implementation.
32 * @author Christian Femers
37 * Returns the schema that all possible ISAs (Instruction Set Architecture) must be based on.
39 * @return an {@link ISASchema} implementation fitting the machine
40 * @author Christian Femers
42 ISASchema getISASchema();
45 * Returns a set of all {@link Register}s present in the machine that are not part of a register group.
47 * @return all registers present in the machine.
48 * @author Christian Femers
50 List<Register> getUnsortedRegisters();
53 * Returns a set of all RegisterGroups that the machine contains
55 * @return all register groups present in the machine.
56 * @author Christian Femers
58 List<RegisterGroup> getRegisterGroups();
61 * The number of bits used by the machine to address main memory. Note that this should be the number of bits used in the CPU, not a
62 * possibly different one used by the bus system.
64 * @return the number of bits used by the CPU
65 * @see MainMemoryDefinition#getMemoryAddressBits()
66 * @author Christian Femers
71 * Returns the definition of the machines main memory.
73 * @return the {@link MainMemoryDefinition} that defines the main memory.
74 * @author Christian Femers
76 MainMemoryDefinition getMainMemoryDefinition();
79 * Returns the definition of the machines instruction memory.
81 * @return the {@link InstructionMemoryDefinition} that defines the instruction memory.
83 MicroInstructionMemoryDefinition getMicroInstructionMemoryDefinition();
86 * Returns the definition of the machines instruction memory.
88 * @return the {@link InstructionMemoryDefinition} that defines the instruction memory.
90 * @author Daniel Kirschten
92 MPROMDefinition getMPROMDefinition();