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