⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rf.c

📁 32cpu的代码
💻 C
📖 第 1 页 / 共 5 页
字号:
					branch_address_offset_dp=0;
					jump_address=0;	
					load_store_flag_dp=0;
					load_store_byte_select_dp=0x000f;
			         break;
		  case  37 : //printf(" or \n");
		             opa_dp=(result_regnum_ep==rs)? result_first_ep : ((result_regnum_mp==rs)? result_first_mp : ((result_regnum_wp==rs)? result_first_wp : GPR[rs]));
					 opb_dp=(result_regnum_ep==rt)? result_first_ep : ((result_regnum_mp==rt)? result_first_mp : ((result_regnum_wp==rt)? result_first_wp : GPR[rt]));
					 result_regnum_dp=rd;
					 write_trace_flag_dp=1; 
					 jump_flag=0;
					branch_address_offset_dp=0;
					jump_address=0;	
					load_store_flag_dp=0;
					load_store_byte_select_dp=0x000f;
			         break;
		  case  38 : //printf(" xor \n");
		             opa_dp=(result_regnum_ep==rs)? result_first_ep : ((result_regnum_mp==rs)? result_first_mp : ((result_regnum_wp==rs)? result_first_wp : GPR[rs]));
					 opb_dp=(result_regnum_ep==rt)? result_first_ep : ((result_regnum_mp==rt)? result_first_mp : ((result_regnum_wp==rt)? result_first_wp : GPR[rt]));
					 result_regnum_dp=rd;
					 write_trace_flag_dp=1; 
					 jump_flag=0;
					branch_address_offset_dp=0;
					jump_address=0;
					load_store_flag_dp=0;	
					load_store_byte_select_dp=0x000f;
			         break;
		  case  39 : //printf(" nor \n");
		             opa_dp=(result_regnum_ep==rs)? result_first_ep : ((result_regnum_mp==rs)? result_first_mp : ((result_regnum_wp==rs)? result_first_wp : GPR[rs]));
					 opb_dp=(result_regnum_ep==rt)? result_first_ep : ((result_regnum_mp==rt)? result_first_mp : ((result_regnum_wp==rt)? result_first_wp : GPR[rt]));
					 result_regnum_dp=rd;
					 write_trace_flag_dp=1; 
					 jump_flag=0;
					branch_address_offset_dp=0;
					jump_address=0;	
					load_store_flag_dp=0;
					load_store_byte_select_dp=0x000f;
			         break;
		  case  42 : //printf(" slt \n");
		             opa_dp=(result_regnum_ep==rs)? result_first_ep : ((result_regnum_mp==rs)? result_first_mp : ((result_regnum_wp==rs)? result_first_wp : GPR[rs]));
					 opb_dp=(result_regnum_ep==rt)? result_first_ep : ((result_regnum_mp==rt)? result_first_mp : ((result_regnum_wp==rt)? result_first_wp : GPR[rt]));
					 result_regnum_dp=rd;
					 write_trace_flag_dp=1; 
					 jump_flag=0;
					branch_address_offset_dp=0;
					jump_address=0;	
					load_store_flag_dp=0;
					load_store_byte_select_dp=0x000f;
			         break;
		  case  43 : //printf(" sltu \n");
		             opa_dp=(result_regnum_ep==rs)? result_first_ep : ((result_regnum_mp==rs)? result_first_mp : ((result_regnum_wp==rs)? result_first_wp : GPR[rs]));
					 opb_dp=(result_regnum_ep==rt)? result_first_ep : ((result_regnum_mp==rt)? result_first_mp : ((result_regnum_wp==rt)? result_first_wp : GPR[rt]));
					 result_regnum_dp=rd;
					 write_trace_flag_dp=1; 
					 jump_flag=0;
					branch_address_offset_dp=0;
					jump_address=0;	
					load_store_flag_dp=0;
					load_store_byte_select_dp=0x000f;
			         break;
		  case  48 : //printf(" tge \n");
		             opa_dp=(result_regnum_ep==rs)? result_first_ep : ((result_regnum_mp==rs)? result_first_mp : ((result_regnum_wp==rs)? result_first_wp : GPR[rs]));
					 opb_dp=(result_regnum_ep==rt)? result_first_ep : ((result_regnum_mp==rt)? result_first_mp : ((result_regnum_wp==rt)? result_first_wp : GPR[rt]));
					 result_regnum_dp=0;
					 write_trace_flag_dp=0; 
					 jump_flag=0;
					branch_address_offset_dp=0;
					jump_address=0;	
					load_store_flag_dp=0;
					load_store_byte_select_dp=0x0000;
			         break;
		  case  49 : //printf(" tgeu \n");
		             opa_dp=(result_regnum_ep==rs)? result_first_ep : ((result_regnum_mp==rs)? result_first_mp : ((result_regnum_wp==rs)? result_first_wp : GPR[rs]));
					 opb_dp=(result_regnum_ep==rt)? result_first_ep : ((result_regnum_mp==rt)? result_first_mp : ((result_regnum_wp==rt)? result_first_wp : GPR[rt]));
					 result_regnum_dp=0;
					 write_trace_flag_dp=0; 
					 jump_flag=0;
					 branch_address_offset_dp=0;
					 jump_address=0;
					 load_store_flag_dp=0;	
					 load_store_byte_select_dp=0x0000;
			         break;
		  case  50 : //printf(" tlt \n");
		             opa_dp=(result_regnum_ep==rs)? result_first_ep : ((result_regnum_mp==rs)? result_first_mp : ((result_regnum_wp==rs)? result_first_wp : GPR[rs]));
					 opb_dp=(result_regnum_ep==rt)? result_first_ep : ((result_regnum_mp==rt)? result_first_mp : ((result_regnum_wp==rt)? result_first_wp : GPR[rt]));
					 result_regnum_dp=0;
					 write_trace_flag_dp=0; 
					 jump_flag=0;
					branch_address_offset_dp=0;
					jump_address=0;	
					load_store_flag_dp=0;
					load_store_byte_select_dp=0x0000;
			         break;
		  case  51 : //printf(" tltu \n");
		             opa_dp=(result_regnum_ep==rs)? result_first_ep : ((result_regnum_mp==rs)? result_first_mp : ((result_regnum_wp==rs)? result_first_wp : GPR[rs]));
					 opb_dp=(result_regnum_ep==rt)? result_first_ep : ((result_regnum_mp==rt)? result_first_mp : ((result_regnum_wp==rt)? result_first_wp : GPR[rt]));
					 result_regnum_dp=0;
					 write_trace_flag_dp=0; 
					 jump_flag=0;
					branch_address_offset_dp=0;
					jump_address=0;	
					load_store_flag_dp=0;
					load_store_byte_select_dp=0x0000;
			         break;
		  case  52 : //printf(" teq \n");
		             opa_dp=(result_regnum_ep==rs)? result_first_ep : ((result_regnum_mp==rs)? result_first_mp : ((result_regnum_wp==rs)? result_first_wp : GPR[rs]));
					 opb_dp=(result_regnum_ep==rt)? result_first_ep : ((result_regnum_mp==rt)? result_first_mp : ((result_regnum_wp==rt)? result_first_wp : GPR[rt]));
					 result_regnum_dp=0;
					 write_trace_flag_dp=0; 
					 jump_flag=0;
					branch_address_offset_dp=0;
					jump_address=0;	
					load_store_flag_dp=0;
			         break;
		  case  54 : //printf(" tne \n");
		             opa_dp=(result_regnum_ep==rs)? result_first_ep : ((result_regnum_mp==rs)? result_first_mp : ((result_regnum_wp==rs)? result_first_wp : GPR[rs]));
					 opb_dp=(result_regnum_ep==rt)? result_first_ep : ((result_regnum_mp==rt)? result_first_mp : ((result_regnum_wp==rt)? result_first_wp : GPR[rt]));
					 result_regnum_dp=0;
					 write_trace_flag_dp=0; 
					 jump_flag=0;
					branch_address_offset_dp=0;
					jump_address=0;	
					load_store_flag_dp=0;
					load_store_byte_select_dp=0x0000;
			        break;
		  default : printf("special instruction error!\n");
		            exception_flag_dp=18;
		            ErrorEPC=pc_address_dp;
		            EPC=pc_address_dp;
		            CPR[30]=pc_address_dp;
		            CPR[14]=pc_address_dp;
		 }
	}else if(instruction_type_dp==1){
//	regimm instrction
	    //printf("regimm instrction\n");
				 switch(regimm_instr_num_dp)
		 {case  0 : //printf(" bltz \n");
		             opa_dp=(result_regnum_ep==rs)? result_first_ep : ((result_regnum_mp==rs)? result_first_mp : ((result_regnum_wp==rs)? result_first_wp : GPR[rs]));
					 opb_dp=offset;
					 result_regnum_dp=0;
					 write_trace_flag_dp=0; 
					 jump_flag=0;
					 branch_address_offset_dp=offset;
					 jump_address=0;
					 load_store_flag_dp=0;	
					 load_store_byte_select_dp=0x0000;
				    break;
		  case  1 : //printf(" bgez \n");
		             opa_dp=(result_regnum_ep==rs)? result_first_ep : ((result_regnum_mp==rs)? result_first_mp : ((result_regnum_wp==rs)? result_first_wp : GPR[rs]));
					 opb_dp=offset;
					 result_regnum_dp=0;
					 write_trace_flag_dp=0; 
					 jump_flag=0;
					 branch_address_offset_dp=offset;
					 jump_address=0;
					 load_store_flag_dp=0;
					 load_store_byte_select_dp=0x0000;
			        break;
		  case  2 : //printf(" bltzl \n");
		             opa_dp=(result_regnum_ep==rs)? result_first_ep : ((result_regnum_mp==rs)? result_first_mp : ((result_regnum_wp==rs)? result_first_wp : GPR[rs]));
					 opb_dp=offset;
					 result_regnum_dp=0;
					 write_trace_flag_dp=0; 
					 jump_flag=0;
					 branch_address_offset_dp=offset;
					 jump_address=0;
					 load_store_flag_dp=0;
					 load_store_byte_select_dp=0x0000;
			        break;
		  case  3 : //printf(" bgezl \n");
		             opa_dp=(result_regnum_ep==rs)? result_first_ep : ((result_regnum_mp==rs)? result_first_mp : ((result_regnum_wp==rs)? result_first_wp : GPR[rs]));
					 opb_dp=offset;
					 result_regnum_dp=0;
					 write_trace_flag_dp=0; 
					 jump_flag=0;
					 branch_address_offset_dp=offset;
					 jump_address=0;
					 load_store_flag_dp=0;
					 load_store_byte_select_dp=0x0000;
			        break;
		  case  8 : //printf(" tgei \n");
		             opa_dp=(result_regnum_ep==rs)? result_first_ep : ((result_regnum_mp==rs)? result_first_mp : ((result_regnum_wp==rs)? result_first_wp : GPR[rs]));
					 opb_dp=immediate;
					 result_regnum_dp=0;
					 write_trace_flag_dp=0; 
					 jump_flag=0;
					 branch_address_offset_dp=0;
					 jump_address=0;
					 load_store_flag_dp=0;
					 load_store_byte_select_dp=0x0000;
			        break;
		  case  9 : //printf(" tgeiu \n");
		             opa_dp=(result_regnum_ep==rs)? result_first_ep : ((result_regnum_mp==rs)? result_first_mp : ((result_regnum_wp==rs)? result_first_wp : GPR[rs]));
					 opb_dp=immediate;
					 result_regnum_dp=0;
					 write_trace_flag_dp=0; 
					 jump_flag=0;
					 branch_address_offset_dp=0;
					 jump_address=0;
					 load_store_flag_dp=0;
					 load_store_byte_select_dp=0x0000;
			         break;
		  case  10 : //printf(" tlti \n");
		             opa_dp=(result_regnum_ep==rs)? result_first_ep : ((result_regnum_mp==rs)? result_first_mp : ((result_regnum_wp==rs)? result_first_wp : GPR[rs]));
					 opb_dp=immediate;
					 result_regnum_dp=0;
					 write_trace_flag_dp=0; 
					 jump_flag=0;
					 branch_address_offset_dp=0;
					 jump_address=0;
					 load_store_flag_dp=0;
					 load_store_byte_select_dp=0x0000;
			         break;
		  case  11 : //printf(" tltiu \n");
		             opa_dp=(result_regnum_ep==rs)? result_first_ep : ((result_regnum_mp==rs)? result_first_mp : ((result_regnum_wp==rs)? result_first_wp : GPR[rs]));
					 opb_dp=immediate;
					 result_regnum_dp=0;
					 write_trace_flag_dp=0; 
					 jump_flag=0;
					 branch_address_offset_dp=0;
					 jump_address=0;
					 load_store_flag_dp=0;
					 load_store_byte_select_dp=0x0000;
			         break;
		  case  12 : //printf(" teqi \n");
		             opa_dp=(result_regnum_ep==rs)? result_first_ep : ((result_regnum_mp==rs)? result_first_mp : ((result_regnum_wp==rs)? result_first_wp : GPR[rs]));
					 opb_dp=immediate;
					 result_regnum_dp=0;
					 write_trace_flag_dp=0; 
					 jump_flag=0;
					 branch_address_offset_dp=0;
					 jump_address=0;
					 load_store_flag_dp=0;
					 load_store_byte_select_dp=0x0000;
			         break;
		  case  14 : //printf(" tnei \n");
		             opa_dp=(result_regnum_ep==rs)? result_first_ep : ((result_regnum_mp==rs)? result_first_mp : ((result_regnum_wp==rs)? result_first_wp : GPR[rs]));
					 opb_dp=immediate;
					 result_regnum_dp=0;
					 write_trace_flag_dp=0; 
					 jump_flag=0;
					 branch_address_offset_dp=0;
					 jump_address=0;
					 load_store_flag_dp=0;
					 load_store_byte_select_dp=0x0000;
			         break;
		  case  16 : //printf(" bltzal \n");
		             opa_dp=(result_regnum_ep==rs)? result_first_ep : ((result_regnum_mp==rs)? result_first_mp : ((result_regnum_wp==rs)? result_first_wp : GPR[rs]));
					 opb_dp=offset;
					 result_regnum_dp=31;
					 write_trace_flag_dp=1; 
					 jump_flag=0;
					 branch_address_offset_dp=offset;
					 jump_address=0;
					 load_store_flag_dp=0;
					 load_store_byte_select_dp=0x000f;
			         break;
		  case  17 : //printf(" bgezal \n");
		             opa_dp=(result_regnum_ep==rs)? result_first_ep : ((result_regnum_mp==rs)? result_first_mp : ((result_regnum_wp==rs)? result_first_wp : GPR[rs]));
					 opb_dp=offset;
					 result_regnum_dp=31;
					 write_trace_flag_dp=1; 
					 jump_flag=0;
					 branch_address_offset_dp=offset;
					 jump_address=0;
					 load_store_flag_dp=0;
					 load_store_byte_select_dp=0x000f;
			         break;
		  case  18 : //printf(" bltzall \n");
		             opa_dp=(result_regnum_ep==rs)? result_first_ep : ((result_regnum_mp==rs)? result_first_mp : ((result_regnum_wp==rs)? result_first_wp : GPR[rs]));
					 opb_dp=offset;
					 result_regnum_dp=31;
					 write_trace_flag_dp=1; 
					 jump_flag=0;
					 branch_address_offset_dp=offset;
					 jump_address=0;
					 load_store_flag_dp=0;
					 load_store_byte_select_dp=0x000f;
			         break;
		  case  19 : //printf(" bgezall \n");
		             opa_dp=(result_regnum_ep==rs)? result_first_ep : ((result_regnum_mp==rs)? result_first_mp : ((result_regnum_wp==rs)? result_first_wp : GPR[rs]));
					 opb_dp=offset;
					 result_regnum_dp=31;
					 write_trace_flag_dp=1; 
					 jump_flag=0;
					 branch_address_offset_dp=offset;
					 jump_address=0;
					 load_store_flag_dp=0;
					 load_store_byte_select_dp=0x000f;
			        break;
		  default : printf("regimm instruction error!\n");
		            exception_flag_dp=18;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -