You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
2.4 KiB
97 lines
2.4 KiB
package processor;
|
|
|
|
import processor.memorysystem.MainMemory;
|
|
import processor.pipeline.EX_IF_LatchType;
|
|
import processor.pipeline.EX_MA_LatchType;
|
|
import processor.pipeline.Execute;
|
|
import processor.pipeline.IF_EnableLatchType;
|
|
import processor.pipeline.IF_OF_LatchType;
|
|
import processor.pipeline.InstructionFetch;
|
|
import processor.pipeline.MA_RW_LatchType;
|
|
import processor.pipeline.MemoryAccess;
|
|
import processor.pipeline.OF_EX_LatchType;
|
|
import processor.pipeline.OperandFetch;
|
|
import processor.pipeline.RegisterFile;
|
|
import processor.pipeline.RegisterWrite;
|
|
|
|
public class Processor {
|
|
|
|
RegisterFile registerFile;
|
|
MainMemory mainMemory;
|
|
|
|
IF_EnableLatchType IF_EnableLatch;
|
|
IF_OF_LatchType IF_OF_Latch;
|
|
OF_EX_LatchType OF_EX_Latch;
|
|
EX_MA_LatchType EX_MA_Latch;
|
|
EX_IF_LatchType EX_IF_Latch;
|
|
MA_RW_LatchType MA_RW_Latch;
|
|
|
|
InstructionFetch IFUnit;
|
|
OperandFetch OFUnit;
|
|
Execute EXUnit;
|
|
MemoryAccess MAUnit;
|
|
RegisterWrite RWUnit;
|
|
|
|
public Processor()
|
|
{
|
|
registerFile = new RegisterFile();
|
|
mainMemory = new MainMemory();
|
|
|
|
IF_EnableLatch = new IF_EnableLatchType();
|
|
IF_OF_Latch = new IF_OF_LatchType();
|
|
OF_EX_Latch = new OF_EX_LatchType();
|
|
EX_MA_Latch = new EX_MA_LatchType();
|
|
EX_IF_Latch = new EX_IF_LatchType();
|
|
MA_RW_Latch = new MA_RW_LatchType();
|
|
|
|
IFUnit = new InstructionFetch(this, IF_EnableLatch, IF_OF_Latch, EX_IF_Latch);
|
|
OFUnit = new OperandFetch(this, IF_OF_Latch, OF_EX_Latch);
|
|
EXUnit = new Execute(this, OF_EX_Latch, EX_MA_Latch, EX_IF_Latch);
|
|
MAUnit = new MemoryAccess(this, EX_MA_Latch, MA_RW_Latch);
|
|
RWUnit = new RegisterWrite(this, MA_RW_Latch, IF_EnableLatch);
|
|
}
|
|
|
|
public void printState(int memoryStartingAddress, int memoryEndingAddress)
|
|
{
|
|
System.out.println(registerFile.getContentsAsString());
|
|
|
|
System.out.println(mainMemory.getContentsAsString(memoryStartingAddress, memoryEndingAddress));
|
|
}
|
|
|
|
public RegisterFile getRegisterFile() {
|
|
return registerFile;
|
|
}
|
|
|
|
public void setRegisterFile(RegisterFile registerFile) {
|
|
this.registerFile = registerFile;
|
|
}
|
|
|
|
public MainMemory getMainMemory() {
|
|
return mainMemory;
|
|
}
|
|
|
|
public void setMainMemory(MainMemory mainMemory) {
|
|
this.mainMemory = mainMemory;
|
|
}
|
|
|
|
public InstructionFetch getIFUnit() {
|
|
return IFUnit;
|
|
}
|
|
|
|
public OperandFetch getOFUnit() {
|
|
return OFUnit;
|
|
}
|
|
|
|
public Execute getEXUnit() {
|
|
return EXUnit;
|
|
}
|
|
|
|
public MemoryAccess getMAUnit() {
|
|
return MAUnit;
|
|
}
|
|
|
|
public RegisterWrite getRWUnit() {
|
|
return RWUnit;
|
|
}
|
|
|
|
}
|
|
|