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

📄 rf.c

📁 32cpu的代码
💻 C
📖 第 1 页 / 共 5 页
字号:
					result_regnum_dp=rd;
					write_trace_flag_dp=(instruction_dp == 0)? 0 : 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  2 : //printf(" srl \n");
		            opa_dp=(result_regnum_ep==rt)? result_first_ep : ((result_regnum_mp==rt)? result_first_mp : ((result_regnum_wp==rt)? result_first_wp : GPR[rt]));
					opb_dp=sa;
					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  3 : //printf(" sra \n"); 
		            opa_dp=(result_regnum_ep==rt)? result_first_ep : ((result_regnum_mp==rt)? result_first_mp : ((result_regnum_wp==rt)? result_first_wp : GPR[rt]));
					opb_dp=sa;
					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  4 : //printf(" sllv \n");
		            opa_dp=(result_regnum_ep==rt)? result_first_ep : ((result_regnum_mp==rt)? result_first_mp : ((result_regnum_wp==rt)? result_first_wp : GPR[rt]));
					opb_dp=(result_regnum_ep==rs)? result_first_ep : ((result_regnum_mp==rs)? result_first_mp : ((result_regnum_wp==rs)? result_first_wp : GPR[rs]));
					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  6 : //printf(" srlv \n");
		            opa_dp=(result_regnum_ep==rt)? result_first_ep : ((result_regnum_mp==rt)? result_first_mp : ((result_regnum_wp==rt)? result_first_wp : GPR[rt]));
					opb_dp=(result_regnum_ep==rs)? result_first_ep : ((result_regnum_mp==rs)? result_first_mp : ((result_regnum_wp==rs)? result_first_wp : GPR[rs]));
					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  7 : //printf(" srav \n");
		            opa_dp=(result_regnum_ep==rt)? result_first_ep : ((result_regnum_mp==rt)? result_first_mp : ((result_regnum_wp==rt)? result_first_wp : GPR[rt]));
					opb_dp=(result_regnum_ep==rs)? result_first_ep : ((result_regnum_mp==rs)? result_first_mp : ((result_regnum_wp==rs)? result_first_wp : GPR[rs]));
					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  8 : //printf(" jr \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=1;
					branch_address_offset_dp=0;
					jump_address=opa_dp; //GPR[rs];
					load_store_flag_dp=0;
					load_store_byte_select_dp=0x0000;
			        break;
		  case  9 : //printf(" jalr \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=rd;
					write_trace_flag_dp=1; 
					jump_flag=1;
					branch_address_offset_dp=0;
					jump_address=opa_dp; //GPR[rs];	
					load_store_flag_dp=0;	
					load_store_byte_select_dp=0x000f;	       
			        break;
		  case  10 : //printf(" movz \n");
		            opa_dp=(result_regnum_ep==rt)? result_first_ep : ((result_regnum_mp==rt)? result_first_mp : ((result_regnum_wp==rt)? result_first_wp : GPR[rt]));
					opb_dp=(result_regnum_ep==rs)? result_first_ep : ((result_regnum_mp==rs)? result_first_mp : ((result_regnum_wp==rs)? result_first_wp : GPR[rs]));
					result_regnum_dp=(opa_dp == 0)? rd : -1;      //if -1 change to 0 ,may lead to bypass a value not zero to GPR[0]
					write_trace_flag_dp=(opa_dp == 0)? 1 : 0; 
					jump_flag=0;
					branch_address_offset_dp=0;
					jump_address=0;	
					load_store_flag_dp=0;
					load_store_byte_select_dp=0x000f;
					#ifdef DEBUG
					printf("opa_dp=%08x,opb_ep=%08x,write_trace_flag_dp=%08x \n",opa_dp,opb_dp,write_trace_flag_dp);
			                #endif
			         break; 
		  case  11 : //printf(" movn \n");
		            opa_dp=(result_regnum_ep==rt)? result_first_ep : ((result_regnum_mp==rt)? result_first_mp : ((result_regnum_wp==rt)? result_first_wp : GPR[rt]));
					opb_dp=(result_regnum_ep==rs)? result_first_ep : ((result_regnum_mp==rs)? result_first_mp : ((result_regnum_wp==rs)? result_first_wp : GPR[rs]));
					result_regnum_dp=(opa_dp == 0)? -1 : rd;        //if -1 change to 0 ,may lead to bypass a value not zero to GPR[0]
					write_trace_flag_dp=(opa_dp == 0)? 0 : 1; 
					jump_flag=0;
					branch_address_offset_dp=0;
					jump_address=0;	
					load_store_flag_dp=0;
					load_store_byte_select_dp=0x000f;
					#ifdef DEBUG
					printf("opa_dp=%08x,opb_ep=%08x,write_trace_flag_dp=%08x \n",opa_dp,opb_dp,write_trace_flag_dp);
			                #endif
			         break;
		  case  12 : //printf(" syscall \n");
		            opa_dp=0;
					opb_dp=0;
					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  13 : //printf(" break \n");
		            opa_dp=0;
					opb_dp=0;
					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  15 : //printf(" sync \n");
		             opa_dp=0;
					opb_dp=0;
				        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(" mfhi \n");
		  opa_dp=((result_regnum_ep==100)||(result_regnum_ep==300))? result_first_ep : (((result_regnum_mp==100)||(result_regnum_mp==300))? result_first_mp : (((result_regnum_wp==100)||(result_regnum_wp==300))? result_first_wp : HI));
					opb_dp=0;
					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  17 : //printf(" mthi \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=100;
					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  18 : //printf(" mflo \n");
		  opa_dp=((result_regnum_ep==200)||(result_regnum_ep==300))? ((result_regnum_ep==200)? result_first_ep : result_second_ep) : (((result_regnum_mp==200)||(result_regnum_mp==300))? ((result_regnum_mp==200)? result_first_mp : result_second_mp) : (((result_regnum_wp==200)||(result_regnum_wp==300))? ((result_regnum_wp==200)? result_first_wp : result_second_wp) : LO));
					opb_dp=0;
					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  19 : //printf(" mtlo \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=200;
					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  24 : //printf(" mult \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=300;
					 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;
					 ip_stop=1;
					 dp_stop=1;
			         break;
		  case  25 : //printf(" multu \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=300;
					 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;
					 ip_stop=1;
					 dp_stop=1;
			         break;
		  case  26 : //printf(" div \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=300;
					 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;
					 ip_stop=32;
					 dp_stop=32;	
			         break;
		  case  27 : //printf(" divu \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=300;
					 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;
					 ip_stop=32;
					 dp_stop=32;	
			         break;
		  case  32 : //printf(" add \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  33 : //printf(" addu \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  34 : //printf(" sub \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  35 : //printf(" subu \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  36 : //printf(" and \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;

⌨️ 快捷键说明

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