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

📄 rf.c

📁 32cpu的代码
💻 C
📖 第 1 页 / 共 5 页
字号:
					 branch_address_offset_dp=offset;
					 jump_address=0;
					 load_store_flag_dp=0;
					 load_store_byte_select_dp=0x0000;
					 #ifdef DEBUG
					 printf("result_first_ep=,%08x,result_first_mp=,%08x,result_first_wp=,%08x,GPR[rs]=%08x",result_first_ep,result_first_mp,result_first_wp,GPR[rs]);
			                 printf("result_regnum_ep=,%08x,result_regnum_mp=,%08x,result_regnum_wp=,%08x,GPR[rt]=%08x",result_regnum_ep,result_regnum_mp,result_regnum_wp,GPR[rt]);
			                 #endif
			        break;
		  case  6 : //printf(" blez  \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=0;
					 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  7 : //printf(" bgtz  \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=0;
					 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(" addi  \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=rt;
					 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  9 : //printf(" addiu  \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=rt;
					 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  10 : //printf(" slti  \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=rt;
					 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  11 : //printf(" sltiu  \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=rt;
					 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  12 : //printf(" andi  \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=rt;
					 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  13 : //printf(" ori  \n");
			 // opa_dp=(result_regnum_ep==rs)? result_first_ep : GPR[rs];
		      //   //printf("\n\n%d,%d,%d,%d\n\n",result_regnum_dp,result_regnum_ep,result_regnum_mp,rs);  
			//	 //printf("\n\n%d,%d,%d,%d\n\n",result_first_ep,result_first_mp,result_first_wp,GPR[rs]); 
			         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=rt;
					 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  14 : //printf(" xori  \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=rt;
					 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  15 : //printf(" lui  \n");
		             opa_dp=immediate;
					 opb_dp=0;
					 result_regnum_dp=rt;
					 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  20 : //printf(" beql  \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=offset;
					 jump_address=0;
					 load_store_flag_dp=0;
					 load_store_byte_select_dp=0x0000;
			         break;
		  case  21 : //printf(" bnel  \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=offset;
					 jump_address=0;
					 load_store_flag_dp=0;
					 load_store_byte_select_dp=0x0000;
			         break;
		  case  22 : //printf(" blezl  \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=0;
					 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  23 : //printf(" bgtzl  \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=0;
					 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  32 : //printf(" lb  \n");
		                 opa_dp=((result_regnum_ep==base)? result_first_ep : ((result_regnum_mp==base)? result_first_mp : ((result_regnum_wp==base)? result_first_wp : GPR[base]))) + offset;
		                         opb_dp=0;
					 result_regnum_dp=rt;
					 write_trace_flag_dp=1; 
					 jump_flag=0;
					 branch_address_offset_dp=0;
					 jump_address=0;
					 load_store_flag_dp=1;
					 load_store_byte_select_dp=0x000f;
					// ip_stop=5;
					// dp_stop=5;
		                 break;
		  case  33 : //printf(" lh  \n");
		                 opa_dp=((result_regnum_ep==base)? result_first_ep : ((result_regnum_mp==base)? result_first_mp : ((result_regnum_wp==base)? result_first_wp : GPR[base]))) + offset;
		                         opb_dp=0;
					 result_regnum_dp=rt;
					 write_trace_flag_dp=1; 
					 jump_flag=0;
					 branch_address_offset_dp=0;
					 jump_address=0;
					 load_store_flag_dp=1;
					 load_store_byte_select_dp=0x000f;
					// ip_stop=4;
					// dp_stop=4;
		                 break;
		  case  34 : //printf(" lwl  \n");
		                 opa_dp=((result_regnum_ep==base)? result_first_ep : ((result_regnum_mp==base)? result_first_mp : ((result_regnum_wp==base)? result_first_wp : GPR[base]))) + offset;
		                         opb_dp=0;
					 result_regnum_dp=rt;
					 write_trace_flag_dp=1; 
					 jump_flag=0;
					 branch_address_offset_dp=0;
					 jump_address=0;
					 load_store_flag_dp=1;
					 switch(opa_dp&(0x00000003)){
					 	case 0: load_store_byte_select_dp=0x0008;
					 	         break;
					 	case 1: load_store_byte_select_dp=0x000c;
					 	         break;
					 	case 2: load_store_byte_select_dp=0x000e;
					 	         break;
					 	case 3: load_store_byte_select_dp=0x000f;
					 	         break;
					 	default: printf("lwl instruction in decode setp error!\n");
					 	}
					 
					// ip_stop=5;
					// dp_stop=5;
		                 break;
		  case  35 : //printf(" lw  \n");
		                 opa_dp=((result_regnum_ep==base)? result_first_ep : ((result_regnum_mp==base)? result_first_mp : ((result_regnum_wp==base)? result_first_wp : GPR[base]))) + offset;
		                         opb_dp=0;
					 result_regnum_dp=rt;
					 write_trace_flag_dp=1; 
					 jump_flag=0;
					 branch_address_offset_dp=0;
					 jump_address=0;
					 load_store_flag_dp=1;
					 load_store_byte_select_dp=0x000f;
					// ip_stop=4;
					// dp_stop=4;
		                 break;
		  case  36 : //printf(" lbu  \n");
		                 opa_dp=((result_regnum_ep==base)? result_first_ep : ((result_regnum_mp==base)? result_first_mp : ((result_regnum_wp==base)? result_first_wp : GPR[base]))) + offset;
		                         opb_dp=0;
					 result_regnum_dp=rt;
					 write_trace_flag_dp=1; 
					 jump_flag=0;
					 branch_address_offset_dp=0;
					 jump_address=0;
					 load_store_flag_dp=1;
					 load_store_byte_select_dp=0x000f;
					// ip_stop=5;
					// dp_stop=5;
		                 break;
		  case  37 : //printf(" lhu  \n");
		                 opa_dp=((result_regnum_ep==base)? result_first_ep : ((result_regnum_mp==base)? result_first_mp : ((result_regnum_wp==base)? result_first_wp : GPR[base]))) + offset;
		                         opb_dp=0;
					 result_regnum_dp=rt;
					 write_trace_flag_dp=1; 
					 jump_flag=0;
					 branch_address_offset_dp=0;
					 jump_address=0;
					 load_store_flag_dp=1;
					 load_store_byte_select_dp=0x000f;
					// ip_stop=5;
					// dp_stop=5;
		                 break;
		  case  38 : //printf(" lwr  \n");
		                 opa_dp=((result_regnum_ep==base)? result_first_ep : ((result_regnum_mp==base)? result_first_mp : ((result_regnum_wp==base)? result_first_wp : GPR[base]))) + offset;
		                         opb_dp=0;
					 result_regnum_dp=rt;
					 write_trace_flag_dp=1; 
					 jump_flag=0;
					 branch_address_offset_dp=0;
					 jump_address=0;
					 load_store_flag_dp=1;
					 switch(opa_dp&(0x00000003)){
					 	case 0: load_store_byte_select_dp=0x000f;
					 	         break;
					 	case 1: load_store_byte_select_dp=0x0007;
					 	         break;
					 	case 2: load_store_byte_select_dp=0x0003;
					 	         break;
					 	case 3: load_store_byte_select_dp=0x0001;
					 	         break;
					 	default: printf("lwl instruction in decode setp error!\n");
					 	}
					// ip_stop=5;
					// dp_stop=5;
		                 break;
		  case  40 : //printf(" sb  \n");
		                 opa_dp=((result_regnum_ep==base)? result_first_ep : ((result_regnum_mp==base)? result_first_mp : ((result_regnum_wp==base)? result_first_wp : GPR[base]))) + offset;
		                         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=1;
					 load_store_byte_select_dp=0x000f;
		                 break;
		  case  41 : //printf(" sh  \n");
		                 opa_dp=((result_regnum_ep==base)? result_first_ep : ((result_regnum_mp==base)? result_first_mp : ((result_regnum_wp==base)

⌨️ 快捷键说明

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