#include<stdio.h> intRegDst,ALUSrc,MemtoReg,RegWrite,MemRead,MemWrite,Branch,ALU
ID: 3617247 • Letter: #
Question
#include<stdio.h>
intRegDst,ALUSrc,MemtoReg,RegWrite,MemRead,MemWrite,Branch,ALUOp1,ALUOp0;
int sub,c1,c0;
int inst[32];
main (){
int i;
printf("hmwrk5: ");
scanf("%d %d %d %d%d %d",
&inst[31],&inst[30],&inst[29],&inst[28],&inst[27],&inst[26]);
for(i=31;i>=26;i--)
printf("%d",inst[i]);
printf("function field: ");
scanf("%d %d %d %d%d %d",
&inst[5],&inst[4],&inst[3],&inst[2],&inst[1],&inst[0]);
return0;
}
/* The main controlunit for the MIPS single-cycle. */
voidcontrol()
{
RegDst =
(!inst[31] && !inst[30] && !inst[29] &&!inst[28] && !inst[27] && !inst[26]);
ALUSrc =
(inst[31] && !inst[30] && !inst[28]&& inst[27] && inst[26]);
MemtoReg=
(inst[31] && !inst[30] && !inst[29] &&!inst[28] && inst[27] && inst[26]);
RegWrite =(!inst[30] && !inst[29] && !inst[28]);
MemRead=
(inst[31] && !inst[30] && !inst[29] &&!inst[28] && inst[27] && inst[26]);
MemWrite=
(inst[31] && !inst[30] && inst[29] &&!inst[28] && inst[27] && inst[26]);
Branch =
(!inst[31] && !inst[30] && !inst[29] &&inst[28] && !inst[27] && !inst[26]);
ALUOp1 =
(!inst[31] && !inst[30] && !inst[29] &&!inst[28] && !inst[27] && !inst[26]);
ALUOp0 =
(!inst[31] && !inst[30] && !inst[29]&& inst[28] && !inst[27] &&!inst[26]);
}
/* ALU control as definedon page 302 of Hennesy and Patterson. */
intalu_control()
{
sub = ALUOp0 ||(ALUOp1 && !inst[3] && !inst[2] && inst[1]&& !inst[0])
||(ALUOp1 && inst[3] && !inst[2] && inst[1]&& !inst[0]);
c1 = !((ALUOp1&& !inst[3] && inst[2] && !inst[1]&& !inst[0])
|| (ALUOp1&& !inst[3] && inst[2] && !inst[1]&& inst[0]));
c0 = (ALUOp1&& !inst[3] && inst[2] && !inst[1]&& inst[0])
||(ALUOp1 && inst[3] && !inst[2] && inst[1]&& !inst[0]);
return0;
}