📄 rf.c
字号:
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 + -