assignment completed
Co-authored-by: SriRam Mudragada <iam-msr@users.noreply.github.com>
This commit is contained in:
parent
e59b707dae
commit
f87bdb7500
|
@ -9,7 +9,7 @@
|
||||||
"name": "Launch Current File",
|
"name": "Launch Current File",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"mainClass": "${file}",
|
"mainClass": "${file}",
|
||||||
"args": ["assignment-4/src/configuration/config.xml", "assignment-4/src/hello.txt", "assignment-4/supporting_files/test_cases/evenorodd.out"]
|
"args": ["assignment-4/src/configuration/config.xml", "assignment-4/src/hello.txt", "assignment-4/supporting_files/test_cases/descending.out"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "java",
|
"type": "java",
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
Number of instructions executed = 277
|
||||||
|
Number of cycles taken = 277
|
|
@ -1,2 +1,2 @@
|
||||||
Number of instructions executed = 10
|
Number of instructions executed = 16
|
||||||
Number of cycles taken = 10
|
Number of cycles taken = 16
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
Number of instructions executed = 11
|
Number of instructions executed = 55
|
||||||
Number of cycles taken = 11
|
Number of cycles taken = 55
|
||||||
|
|
|
@ -100,8 +100,9 @@ public class Execute {
|
||||||
alu_result = cur_pc + imm ;
|
alu_result = cur_pc + imm ;
|
||||||
EX_IF_Latch.setIF_enable(true);
|
EX_IF_Latch.setIF_enable(true);
|
||||||
|
|
||||||
EX_IF_Latch.setPC(alu_result);
|
EX_IF_Latch.setPC(alu_result-1);
|
||||||
noma = true;
|
noma = true;
|
||||||
|
containingProcessor.getOFUnit().setProceed(false);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case beq:
|
case beq:
|
||||||
|
@ -110,7 +111,7 @@ public class Execute {
|
||||||
{
|
{
|
||||||
EX_IF_Latch.setIF_enable(true);
|
EX_IF_Latch.setIF_enable(true);
|
||||||
alu_result = cur_pc + imm;
|
alu_result = cur_pc + imm;
|
||||||
EX_IF_Latch.setPC(alu_result);
|
EX_IF_Latch.setPC(alu_result-1);
|
||||||
noma = true;
|
noma = true;
|
||||||
containingProcessor.getOFUnit().setProceed(false);
|
containingProcessor.getOFUnit().setProceed(false);
|
||||||
}
|
}
|
||||||
|
@ -122,7 +123,7 @@ public class Execute {
|
||||||
{
|
{
|
||||||
alu_result = cur_pc + imm;
|
alu_result = cur_pc + imm;
|
||||||
EX_IF_Latch.setIF_enable(true);
|
EX_IF_Latch.setIF_enable(true);
|
||||||
EX_IF_Latch.setPC(alu_result);
|
EX_IF_Latch.setPC(alu_result-1);
|
||||||
noma = true;
|
noma = true;
|
||||||
containingProcessor.getOFUnit().setProceed(false);
|
containingProcessor.getOFUnit().setProceed(false);
|
||||||
}
|
}
|
||||||
|
@ -135,7 +136,7 @@ public class Execute {
|
||||||
{
|
{
|
||||||
alu_result = cur_pc + imm;
|
alu_result = cur_pc + imm;
|
||||||
EX_IF_Latch.setIF_enable(true);
|
EX_IF_Latch.setIF_enable(true);
|
||||||
EX_IF_Latch.setPC(alu_result);
|
EX_IF_Latch.setPC(alu_result-1);
|
||||||
noma = true;
|
noma = true;
|
||||||
containingProcessor.getOFUnit().setProceed(false);
|
containingProcessor.getOFUnit().setProceed(false);
|
||||||
// System.out.println("hello world");
|
// System.out.println("hello world");
|
||||||
|
@ -149,7 +150,7 @@ public class Execute {
|
||||||
{
|
{
|
||||||
alu_result = cur_pc + imm;
|
alu_result = cur_pc + imm;
|
||||||
EX_IF_Latch.setIF_enable(true);
|
EX_IF_Latch.setIF_enable(true);
|
||||||
EX_IF_Latch.setPC(alu_result);
|
EX_IF_Latch.setPC(alu_result-1);
|
||||||
noma = true;
|
noma = true;
|
||||||
containingProcessor.getOFUnit().setProceed(false);
|
containingProcessor.getOFUnit().setProceed(false);
|
||||||
}
|
}
|
||||||
|
@ -157,7 +158,8 @@ public class Execute {
|
||||||
break;
|
break;
|
||||||
case end:
|
case end:
|
||||||
{
|
{
|
||||||
|
containingProcessor.getRegisterFile().setProgramCounter(containingProcessor.getRegisterFile().getProgramCounter()-1);
|
||||||
|
containingProcessor.getOFUnit().setisEnd(true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -20,11 +20,13 @@ public class InstructionFetch {
|
||||||
public void performIF()
|
public void performIF()
|
||||||
{ if(!IF_EnableLatch.isFreeze()){
|
{ if(!IF_EnableLatch.isFreeze()){
|
||||||
if(EX_IF_Latch.isIF_enable()){
|
if(EX_IF_Latch.isIF_enable()){
|
||||||
containingProcessor.getRegisterFile().setProgramCounter(EX_IF_Latch.getPC());
|
containingProcessor.getRegisterFile().setProgramCounter(EX_IF_Latch.getPC()-1);
|
||||||
EX_IF_Latch.setIF_enable(false);
|
EX_IF_Latch.setIF_enable(false);
|
||||||
|
IF_OF_Latch.setOF_enable(false);
|
||||||
System.out.println("IF: PC set to " + EX_IF_Latch.getPC());
|
System.out.println("IF: PC set to " + EX_IF_Latch.getPC());
|
||||||
|
|
||||||
} // if EX_IF_Latch is enabled, set PC to EX_IF_Latch's PC and wait for next cycle (1 nop)
|
} // if EX_IF_Latch is enabled, set PC to EX_IF_Latch's PC and wait for next cycle (1 nop)
|
||||||
else if(IF_EnableLatch.isIF_enable())
|
else if(IF_EnableLatch.isIF_enable() || EX_IF_Latch.isIF_enable())
|
||||||
{
|
{
|
||||||
int currentPC = containingProcessor.getRegisterFile().getProgramCounter();
|
int currentPC = containingProcessor.getRegisterFile().getProgramCounter();
|
||||||
int newInstruction = containingProcessor.getMainMemory().getWord(currentPC);
|
int newInstruction = containingProcessor.getMainMemory().getWord(currentPC);
|
||||||
|
|
|
@ -152,9 +152,6 @@ public class OperandFetch {
|
||||||
instr.setDestinationOperand(rd);
|
instr.setDestinationOperand(rd);
|
||||||
instr.setSourceOperand1(rs1);
|
instr.setSourceOperand1(rs1);
|
||||||
}
|
}
|
||||||
if(opcode == 22){
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (Arrays.stream(R1I_type_operators).anyMatch(x -> x == opcode)) {
|
else if (Arrays.stream(R1I_type_operators).anyMatch(x -> x == opcode)) {
|
||||||
if(opcode != 24){
|
if(opcode != 24){
|
||||||
|
@ -172,10 +169,10 @@ public class OperandFetch {
|
||||||
// if (checkdatahazard(new int[] { rd.getValue() })) {
|
// if (checkdatahazard(new int[] { rd.getValue() })) {
|
||||||
// noDataHazard = false;
|
// noDataHazard = false;
|
||||||
// }else{
|
// }else{
|
||||||
containingProcessor.getRegisterFile().setProgramCounter(containingProcessor.getRegisterFile().getProgramCounter()-1);
|
// containingProcessor.getRegisterFile().setProgramCounter(containingProcessor.getRegisterFile().getProgramCounter()-1);
|
||||||
OF_EX_Latch.setInstruction(instr);
|
OF_EX_Latch.setInstruction(instr);
|
||||||
OF_EX_Latch.setImm(imm);
|
// OF_EX_Latch.setImm(imm);
|
||||||
isEnd = true;
|
// isEnd = true;
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
else{ // opcode == 24 jmp
|
else{ // opcode == 24 jmp
|
||||||
|
@ -217,6 +214,10 @@ public class OperandFetch {
|
||||||
updateQueue(addtoqueue);
|
updateQueue(addtoqueue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setisEnd(boolean isEnd) {
|
||||||
|
this.isEnd = isEnd;
|
||||||
|
}
|
||||||
|
|
||||||
public void setProceed(boolean proceed) {
|
public void setProceed(boolean proceed) {
|
||||||
Proceed = proceed;
|
Proceed = proceed;
|
||||||
if (!Proceed) {
|
if (!Proceed) {
|
||||||
|
|
Loading…
Reference in New Issue