53 lines
1.0 KiB
Java
53 lines
1.0 KiB
Java
|
package processor.pipeline;
|
||
|
|
||
|
public class RegisterFile {
|
||
|
int[] registerFile;
|
||
|
int programCounter;
|
||
|
|
||
|
public RegisterFile()
|
||
|
{
|
||
|
registerFile = new int[32];
|
||
|
registerFile[0]=0; //%xo is always 0 [RISC V]
|
||
|
}
|
||
|
|
||
|
public int getValue(int registerNumber)
|
||
|
{
|
||
|
return registerFile[registerNumber];
|
||
|
}
|
||
|
|
||
|
public void setValue(int registerNumber, int value)
|
||
|
{
|
||
|
registerFile[registerNumber] = value;
|
||
|
}
|
||
|
|
||
|
public int getProgramCounter()
|
||
|
{
|
||
|
return programCounter;
|
||
|
}
|
||
|
|
||
|
public void setProgramCounter(int programCounter)
|
||
|
{
|
||
|
this.programCounter = programCounter;
|
||
|
}
|
||
|
|
||
|
public void incrementProgramCounter()
|
||
|
{
|
||
|
this.programCounter++;
|
||
|
}
|
||
|
|
||
|
public String getContentsAsString()
|
||
|
{
|
||
|
StringBuilder sb = new StringBuilder();
|
||
|
sb.append("\nRegister File Contents:\n\n");
|
||
|
sb.append("PC" + "\t: " + programCounter + "\n\n");
|
||
|
|
||
|
sb.append("x" + 0 + "\t: " + registerFile[0]+ "\n"); //%xo is always 0 [RISC V]
|
||
|
for(int i = 1; i < 32; i++)
|
||
|
{
|
||
|
sb.append("x" + i + "\t: " + registerFile[i] + "\n");
|
||
|
}
|
||
|
sb.append("\n");
|
||
|
return sb.toString();
|
||
|
}
|
||
|
}
|