1 package net.mograsim.machine;
5 import net.mograsim.machine.mi.MicroInstructionMemoryDefinition;
7 public interface MachineDefinition
10 * This returns the MachineDefinitions ID. This must be consistent and coherent with the id in the extension point (Eclipse plugin xml)
11 * providing the definition.
13 * @return a human readable, unique id representing the specified machine.
14 * @author Christian Femers
19 * Creates a new instance of the machine
21 * @return a new object of an {@link Machine} implementation.
22 * @author Christian Femers
27 * Returns the schema that all possible ISAs (Instruction Set Architecture) must be based on.
29 * @return an {@link ISASchema} implementation fitting the machine
30 * @author Christian Femers
32 ISASchema getISASchema();
35 * Returns a set of all {@link Register}s present in the machine.
37 * @return all registers present in the machine.
38 * @author Christian Femers
40 Set<Register> getRegisters();
43 * Returns a set of all RegisterGroups that the machine contains
45 * @return all register groups present in the machine.
46 * @author Christian Femers
48 Set<RegisterGroup> getRegisterGroups();
51 * 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
52 * possibly different one used by the bus system.
54 * @return the number of bits used by the CPU
55 * @see MainMemoryDefinition#getMemoryAddressBits()
56 * @author Christian Femers
61 * Returns the definition of the machines main memory.
63 * @return the {@link MainMemoryDefinition} that defines the main memory.
64 * @author Christian Femers
66 MainMemoryDefinition getMainMemoryDefinition();
69 * Returns the definition of the machines instruction memory.
71 * @return the {@link InstructionMemoryDefinition} that defines the instruction memory.
73 MicroInstructionMemoryDefinition getMicroInstructionMemoryDefinition();