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