Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

#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;

}

Explanation / Answer

please rate - thanks I'm really not enjoying this and I don't have to do it, I onlystarted it since you asked, but it should give you an idea. to get the controls and ALU you have to pack, the way Iunpacked good luck #include intRegDst,ALUSrc,MemtoReg,RegWrite,MemRead,MemWrite,Branch,ALUOp1,ALUOp0; int sub,c1,c0; inst[32]={0}; unsigned int of,ff,cont,alu; void control(); void alu_control(); void unpackop(); void unpackff(); main (){ int i;    printf("hmwrk5: "); printf("op field: "); scanf ("%x",&of); unpackop(); printf("function field: "); scanf("%x",&ff); unpackff(); control(); printf("control signals: %9x ",cont); printf("alu control: %3x ",alu); getch(); return 0; } void unpackop() {unsigned int mask=0x100000; int i; for(i=31;i>=26;i--)       {if((of&mask)==mask)           inst[i]=1;        mask=mask>>4;        } for(i=31;i>=26;i--)        printf("%d ",inst[i]); printf(" "); } void unpackff() {unsigned int mask=1; int i; for(i=0;i