1 package net.mograsim.machine;
5 import net.mograsim.machine.mi.MicroInstructionMemoryDefinition;
6 import net.mograsim.machine.registers.Register;
7 import net.mograsim.machine.registers.RegisterGroup;
9 public interface MachineDefinition
12 * This returns the MachineDefinitions ID. This must be consistent and coherent with the id in the extension point (Eclipse plugin xml)
13 * providing the definition.
15 * @return a human readable, unique id representing the specified machine.
16 * @author Christian Femers
21 * Returns a human-readable description of the machine definition.
23 * @author Daniel Kirschten
25 String getDescription();
28 * Creates a new instance of the machine
30 * @return a new object of an {@link Machine} implementation.
31 * @author Christian Femers
36 * Returns the schema that all possible ISAs (Instruction Set Architecture) must be based on.
38 * @return an {@link ISASchema} implementation fitting the machine
39 * @author Christian Femers
41 ISASchema getISASchema();
44 * Returns a set of all {@link Register}s present in the machine that are not part of a register group.
46 * @return all registers present in the machine.
47 * @author Christian Femers
49 List<Register> getUnsortedRegisters();
52 * Returns a set of all RegisterGroups that the machine contains
54 * @return all register groups present in the machine.
55 * @author Christian Femers
57 List<RegisterGroup> getRegisterGroups();
60 * 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
61 * possibly different one used by the bus system.
63 * @return the number of bits used by the CPU
64 * @see MainMemoryDefinition#getMemoryAddressBits()
65 * @author Christian Femers
70 * Returns the definition of the machines main memory.
72 * @return the {@link MainMemoryDefinition} that defines the main memory.
73 * @author Christian Femers
75 MainMemoryDefinition getMainMemoryDefinition();
78 * Returns the definition of the machines instruction memory.
80 * @return the {@link InstructionMemoryDefinition} that defines the instruction memory.
82 MicroInstructionMemoryDefinition getMicroInstructionMemoryDefinition();