floatingpoint.c
来自「ppc750 system design simulator using sys」· C语言 代码 · 共 1,640 行 · 第 1/3 页
C
1,640 行
di->io.floatingPoint.srcReg[1] = FB; di->io.floatingPoint.srcReg[2] = -1; di->io.floatingPoint.dstReg = FD; if(Rc) { di->io.floatingPoint.outCR = TRUE; di->io.floatingPoint.crf = 1; } else { di->io.floatingPoint.outCR = FALSE; }}void fnabsx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICFloatArithmetic; di->operation.floatingPoint.ident = Rc ? ID_FNABSD : ID_FNABS; di->io.floatingPoint.inFPSCR = FALSE; di->io.floatingPoint.srcReg[0] = -1; di->io.floatingPoint.srcReg[1] = FB; di->io.floatingPoint.srcReg[2] = -1; di->io.floatingPoint.dstReg = FD; if(Rc) { di->io.floatingPoint.outCR = TRUE; di->io.floatingPoint.crf = 1; } else { di->io.floatingPoint.outCR = FALSE; }}void fnegx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICFloatDiv; di->operation.floatingPoint.ident = Rc ? ID_FNEG : ID_FNEGD; di->io.floatingPoint.inFPSCR = FALSE; di->io.floatingPoint.srcReg[0] = FA; di->io.floatingPoint.srcReg[1] = FB; di->io.floatingPoint.srcReg[2] = -1; di->io.floatingPoint.dstReg = FD; if(Rc) { di->io.floatingPoint.outCR = TRUE; di->io.floatingPoint.crf = 1; } else { di->io.floatingPoint.outCR = FALSE; }}void frspx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICFloatConversion; di->operation.floatingPoint.ident = Rc ? ID_FRSPD : ID_FRSP; di->io.floatingPoint.inFPSCR = FALSE; di->io.floatingPoint.srcReg[0] = -1; di->io.floatingPoint.srcReg[1] = FB; di->io.floatingPoint.srcReg[2] = -1; di->io.floatingPoint.dstReg = FD; if(Rc) { di->io.floatingPoint.outCR = TRUE; di->io.floatingPoint.crf = 1; } else { di->io.floatingPoint.outCR = FALSE; }}void faddx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICFloatArithmetic; di->operation.floatingPoint.ident = Rc ? ID_FADDD : ID_FADD; di->io.floatingPoint.inFPSCR = FALSE; di->io.floatingPoint.srcReg[0] = FA; di->io.floatingPoint.srcReg[1] = FB; di->io.floatingPoint.srcReg[2] = -1; di->io.floatingPoint.dstReg = FD; if(Rc) { di->io.floatingPoint.outCR = TRUE; di->io.floatingPoint.crf = 1; } else { di->io.floatingPoint.outCR = FALSE; }}void fdivx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICFloatDiv; di->operation.floatingPoint.ident = Rc ? ID_FDIVD : ID_FDIV; di->io.floatingPoint.inFPSCR = FALSE; di->io.floatingPoint.srcReg[0] = FA; di->io.floatingPoint.srcReg[1] = FB; di->io.floatingPoint.srcReg[2] = -1; di->io.floatingPoint.dstReg = FD; if(Rc) { di->io.floatingPoint.outCR = TRUE; di->io.floatingPoint.crf = 1; } else { di->io.floatingPoint.outCR = FALSE; }}void fmaddx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICFloatMulAdd; di->operation.floatingPoint.ident = Rc ? ID_FMADDD : ID_FMADD; di->io.floatingPoint.inFPSCR = FALSE; di->io.floatingPoint.srcReg[0] = FA; di->io.floatingPoint.srcReg[1] = FB; di->io.floatingPoint.srcReg[2] = FC; di->io.floatingPoint.dstReg = FD; if(Rc) { di->io.floatingPoint.outCR = TRUE; di->io.floatingPoint.crf = 1; } else { di->io.floatingPoint.outCR = FALSE; }}void fmsubx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICFloatMulAdd; di->operation.floatingPoint.ident = Rc ? ID_FMSUBD : ID_FMSUB; di->io.floatingPoint.inFPSCR = FALSE; di->io.floatingPoint.srcReg[0] = FA; di->io.floatingPoint.srcReg[1] = FB; di->io.floatingPoint.srcReg[2] = FC; di->io.floatingPoint.dstReg = FD; di->io.floatingPoint.outCR = FALSE; if(Rc) { di->io.floatingPoint.outCR = TRUE; di->io.floatingPoint.crf = 1; } else { di->io.floatingPoint.outCR = FALSE; }}void fmulx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICFloatMul; di->operation.floatingPoint.ident = Rc ? ID_FMULD : ID_FMUL; di->io.floatingPoint.inFPSCR = FALSE; di->io.floatingPoint.srcReg[0] = FA; di->io.floatingPoint.srcReg[1] = -1; di->io.floatingPoint.srcReg[2] = FC; di->io.floatingPoint.dstReg = FD; if(Rc) { di->io.floatingPoint.outCR = TRUE; di->io.floatingPoint.crf = 1; } else { di->io.floatingPoint.outCR = FALSE; }}void fnmaddx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICFloatMulAdd; di->operation.floatingPoint.ident = Rc ? ID_FNMADDD : ID_FNMADD; di->io.floatingPoint.inFPSCR = FALSE; di->io.floatingPoint.srcReg[0] = FA; di->io.floatingPoint.srcReg[1] = FB; di->io.floatingPoint.srcReg[2] = FC; di->io.floatingPoint.dstReg = FD; if(Rc) { di->io.floatingPoint.outCR = TRUE; di->io.floatingPoint.crf = 1; } else { di->io.floatingPoint.outCR = FALSE; }}void fnmsubx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICFloatMulAdd; di->operation.floatingPoint.ident = Rc ? ID_FNMSUBD : ID_FNMSUB; di->io.floatingPoint.inFPSCR = FALSE; di->io.floatingPoint.srcReg[0] = FA; di->io.floatingPoint.srcReg[1] = FB; di->io.floatingPoint.srcReg[2] = FC; di->io.floatingPoint.dstReg = FD; if(Rc) { di->io.floatingPoint.outCR = TRUE; di->io.floatingPoint.crf = 1; } else { di->io.floatingPoint.outCR = FALSE; }}void frsqrtex_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICFloatArithmetic; di->operation.floatingPoint.ident = Rc ? ID_FRSQRTED : ID_FRSQRTE; di->io.floatingPoint.inFPSCR = FALSE; di->io.floatingPoint.srcReg[0] = -1; di->io.floatingPoint.srcReg[1] = FB; di->io.floatingPoint.srcReg[2] = -1; di->io.floatingPoint.dstReg = FD; if(Rc) { di->io.floatingPoint.outCR = TRUE; di->io.floatingPoint.crf = 1; } else { di->io.floatingPoint.outCR = FALSE; }}void fselx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICFloatArithmetic; di->operation.floatingPoint.ident = Rc ? ID_FSELD : ID_FSEL; di->io.floatingPoint.inFPSCR = FALSE; di->io.floatingPoint.srcReg[0] = FA; di->io.floatingPoint.srcReg[1] = FB; di->io.floatingPoint.srcReg[2] = FC; di->io.floatingPoint.dstReg = FD; if(Rc) { di->io.floatingPoint.outCR = TRUE; di->io.floatingPoint.crf = 1; } else { di->io.floatingPoint.outCR = FALSE; }}void fsqrtx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICFloatArithmetic; di->operation.floatingPoint.ident = Rc ? ID_FSQRTD : ID_FSQRT; di->io.floatingPoint.inFPSCR = FALSE; di->io.floatingPoint.srcReg[0] = -1; di->io.floatingPoint.srcReg[1] = FB; di->io.floatingPoint.srcReg[2] = -1; di->io.floatingPoint.dstReg = FD; di->io.floatingPoint.outCR = FALSE; if(Rc) { di->io.floatingPoint.outCR = TRUE; di->io.floatingPoint.crf = 1; } else { di->io.floatingPoint.outCR = FALSE; }}void fsubx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICFloatArithmetic; di->operation.floatingPoint.ident = Rc ? ID_FSUBD : ID_FSUB; di->io.floatingPoint.inFPSCR = FALSE; di->io.floatingPoint.srcReg[0] = FA; di->io.floatingPoint.srcReg[1] = FB; di->io.floatingPoint.srcReg[2] = -1; di->io.floatingPoint.dstReg = FD; if(Rc) { di->io.floatingPoint.outCR = TRUE; di->io.floatingPoint.crf = 1; } else { di->io.floatingPoint.outCR = FALSE; }}void faddsx_xml(ppc_inst_t inst, addr_t pc, char *buf){ if(Rc) xmlf(buf, pc, "fadds.", 4, XML_DSTFPR, FD, XML_DSTCRF, 1, XML_SRCFPR, FA, XML_SRCFPR, FB); else xmlf(buf, pc, "fadds", 3, XML_DSTFPR, FD, XML_SRCFPR, FA, XML_SRCFPR, FB);}void fdivsx_xml(ppc_inst_t inst, addr_t pc, char *buf){ if(Rc) xmlf(buf, pc, "fdivs.", 4, XML_DSTFPR, FD, XML_DSTCRF, 1, XML_SRCFPR, FA, XML_SRCFPR, FB); else xmlf(buf, pc, "fdivs", 3, XML_DSTFPR, FD, XML_SRCFPR, FA, XML_SRCFPR, FB);}void fmaddsx_xml(ppc_inst_t inst, addr_t pc, char *buf){ if(Rc) xmlf(buf, pc, "fmadds.", 5, XML_DSTFPR, FD, XML_DSTCRF, 1, XML_SRCFPR, FA, XML_SRCFPR, FC, XML_SRCFPR, FB); else xmlf(buf, pc, "fmadds", 4, XML_DSTFPR, FD, XML_SRCFPR, FA, XML_SRCFPR, FC, XML_SRCFPR, FB);}void fmsubsx_xml(ppc_inst_t inst, addr_t pc, char *buf){ if(Rc) xmlf(buf, pc, "fmsubs.", 5, XML_DSTFPR, FD, XML_DSTCRF, 1, XML_SRCFPR, FA, XML_SRCFPR, FC, XML_SRCFPR, FA); else xmlf(buf, pc, "fmsubs", 4, XML_DSTFPR, FD, XML_SRCFPR, FA, XML_SRCFPR, FC, XML_SRCFPR, FA);} void fmulsx_xml(ppc_inst_t inst, addr_t pc, char *buf){ if(Rc) xmlf(buf, pc, "fmuls.", 4, XML_DSTFPR, FD, XML_DSTCRF, 1, XML_SRCFPR, FA, XML_SRCFPR, FC); else xmlf(buf, pc, "fmuls", 3, XML_DSTFPR, FD, XML_SRCFPR, FA, XML_SRCFPR, FC);}void fnmaddsx_xml(ppc_inst_t inst, addr_t pc, char *buf){ if(Rc) xmlf(buf, pc, "fnmadds.", 4, XML_DSTFPR, FD, XML_DSTCRF, 1, XML_SRCFPR, FA, XML_SRCFPR, FC, XML_SRCFPR, FB); else xmlf(buf, pc, "fnmadds", 3, XML_DSTFPR, FD, XML_SRCFPR, FA, XML_SRCFPR, FC, XML_SRCFPR, FB);} void fnmsubsx_xml(ppc_inst_t inst, addr_t pc, char *buf){ if(Rc) xmlf(buf, pc, "fnmsubs.", 4, XML_DSTFPR, FD, XML_DSTCRF, 1, XML_SRCFPR, FA, XML_SRCFPR, FC, XML_SRCFPR, FB); else xmlf(buf, pc, "fnmsubs", 3, XML_DSTFPR, FD, XML_SRCFPR, FA, XML_SRCFPR, FC, XML_SRCFPR, FB);}void fresx_xml(ppc_inst_t inst, addr_t pc, char *buf){ if(Rc) xmlf(buf, pc, "fres.", 3, XML_DSTFPR, FD, XML_DSTCRF, 1, XML_SRCFPR, FB); else xmlf(buf, pc, "fres", 2, XML_DSTFPR, FD, XML_SRCFPR, FB);} void fsqrtsx_xml(ppc_inst_t inst, addr_t pc, char *buf){ if(Rc) xmlf(buf, pc, "fsqrt.", 3, XML_DSTFPR, FD, XML_DSTCRF, 1, XML_SRCFPR, FB); else xmlf(buf, pc, "fsqrt", 2, XML_DSTFPR, FD, XML_SRCFPR, FB);}void fsubsx_xml(ppc_inst_t inst, addr_t pc, char *buf){ if(Rc) xmlf(buf, pc, "fsubs.", 4, XML_DSTFPR, FD, XML_DSTCRF, 1, XML_SRCFPR, FA, XML_SRCFPR, FB); else xmlf(buf, pc, "fsubs", 3, XML_DSTFPR, FD, XML_SRCFPR, FA, XML_SRCFPR, FB);}void fabsx_xml(ppc_inst_t inst, addr_t pc, char *buf){ if(Rc) xmlf(buf, pc, "fabs.", 3, XML_DSTFPR, FD, XML_DSTCRF, 1, XML_SRCFPR, FB); else xmlf(buf, pc, "fabs", 2, XML_DSTFPR, FD, XML_SRCFPR, FB);}void fcmpo_xml(ppc_inst_t inst, addr_t pc, char *buf) { xmlf(buf, pc, "fcmpo", 3, XML_DSTCRF, CRFD, XML_SRCFPR, FA, XML_SRCFPR, FB); }void fcmpu_xml(ppc_inst_t inst, addr_t pc, char *buf) { xmlf(buf, pc, "fcmpu", 3, XML_DSTCRF, CRFD, XML_SRCFPR, FA, XML_SRCFPR, FB); }void fctiwx_xml(ppc_inst_t inst, addr_t pc, char *buf){ if(Rc) xmlf(buf, pc, "fctiw.", 3, XML_DSTCRF, 1, XML_DSTFPR, FD, XML_SRCFPR, FB); else xmlf(buf, pc, "fctiw", 2, XML_DSTFPR, FD, XML_SRCFPR, FB);}void fctiwzx_xml(ppc_inst_t inst, addr_t pc, char *buf){ if(Rc) xmlf(buf, pc, "fctiwz.", 3, XML_DSTCRF, 1, XML_DSTFPR, FD, XML_SRCFPR, FB); else xmlf(buf, pc, "fctiwz", 2, XML_DSTFPR, FD, XML_SRCFPR, FB);}void fmrx_xml(ppc_inst_t inst, addr_t pc, char *buf){ if(Rc) xmlf(buf, pc, "fmr.", 3, XML_DSTCRF, 1, XML_DSTFPR, FD, XML_SRCFPR, FB); else xmlf(buf, pc, "fmr", 2, XML_DSTFPR, FD, XML_SRCFPR, FB);}void fnabsx_xml(ppc_inst_t inst, addr_t pc, char *buf){ if(Rc) xmlf(buf, pc, "fnabs.", 3, XML_DSTCRF, 1, XML_DSTFPR, FD, XML_SRCFPR, FB); else xmlf(buf, pc, "fnabs", 2, XML_DSTFPR, FD, XML_SRCFPR, FB);}void fnegx_xml(ppc_inst_t inst, addr_t pc, char *buf){ if(Rc) xmlf(buf, pc, "fneg.", 3, XML_DSTCRF, 1, XML_DSTFPR, FD, XML_SRCFPR, FB); else xmlf(buf, pc, "fneg", 2, XML_DSTFPR, FD, XML_SRCFPR, FB);}void frspx_xml(ppc_inst_t inst, addr_t pc, char *buf){ if(Rc) xmlf(buf, pc, "frsp.", 3, XML_DSTCRF, 1, XML_DSTFPR, FD, XML_SRCFPR, FB); else xmlf(buf, pc, "frsp", 2, XML_DSTFPR, FD, XML_SRCFPR, FB);}void faddx_xml(ppc_inst_t inst, addr_t pc, char *buf){ if(Rc) xmlf(buf, pc, "fadd.", 4, XML_DSTCRF, 1, XML_DSTFPR, FD, XML_SRCFPR, FA, XML_SRCFPR, FB); else xmlf(buf, pc, "fadd", 3, XML_DSTFPR, FD, XML_SRCFPR, FA, XML_SRCFPR, FB);}void fdivx_xml(ppc_inst_t inst, addr_t pc, char *buf){ if(Rc) xmlf(buf, pc, "fdiv.", 4, XML_DSTCRF, 1, XML_DSTFPR, FD, XML_SRCFPR, FA, XML_SRCFPR, FB); else xmlf(buf, pc, "fdiv", 3, XML_DSTFPR, FD, XML_SRCFPR, FA, XML_SRCFPR, FB);}void fmaddx_xml(ppc_inst_t inst, addr_t pc, char *buf){ if(Rc) xmlf(buf, pc, "fmadd.", 5, XML_DSTCRF, 1, XML_DSTFPR, FD, XML_SRCFPR, FA, XML_SRCFPR, FC, XML_SRCFPR, FB); else xmlf(buf, pc, "fmadd", 4, XML_DSTFPR, FD, XML_SRCFPR, FA, XML_SRCFPR, FC, XML_SRCFPR, FB);}void fmsubx_xml(ppc_inst_t inst, addr_t pc, char *buf){ if(Rc) xmlf(buf, pc, "fmsub.", 5, XML_DSTCRF, 1, XML_DSTFPR, FD, XML_SRCFPR, FA, XML_SRCFPR, FC, XML_SRCFPR, FB); else xmlf(buf, pc, "fmsub", 4, XML_DSTFPR, FD, XML_SRCFPR, FA, XML_SRCFPR, FC, XML_SRCFPR, FB);}void fmulx_xml(ppc_inst_t inst, addr_t pc, char *buf){ if(Rc) xmlf(buf, pc, "fmul.", 4, XML_DSTCRF, 1, XML_DSTFPR, FD, XML_SRCFPR, FA, XML_SRCFPR, FC); else xmlf(buf, pc, "fmul", 3, XML_DSTFPR, FD, XML_SRCFPR, FA, XML_SRCFPR, FC);}void fnmaddx_xml(ppc_inst_t inst, addr_t pc, char *buf){ if(Rc) xmlf(buf, pc, "fnmadd.", 5, XML_DSTCRF, 1, XML_DSTFPR, FD, XML_SRCFPR, FA, XML_SRCFPR, FC, XML_SRCFPR, FB); else xmlf(buf, pc, "fnmadd", 4, XML_DSTFPR, FD, XML_SRCFPR, FA, XML_SRCFPR, FC, XML_SRCFPR, FB);}void fnmsubx_xml(ppc_inst_t inst, addr_t pc, char *buf){ if(Rc) xmlf(buf, pc, "fnmsub.", 5, XML_DSTCRF, 1, XML_DSTFPR, FD, XML_SRCFPR, FA, XML_SRCFPR, FC, XML_SRCFPR, FB); else xmlf(buf, pc, "fnmsub", 4, XML_DSTFPR, FD, XML_SRCFPR, FA, XML_SRCFPR, FC, XML_SRCFPR, FB);}void frsqrtex_xml(ppc_inst_t inst, addr_t pc, char *buf){ if(Rc) xmlf(buf, pc, "frsqrte.", 3, XML_DSTCRF, 1, XML_DSTFPR, FD, XML_SRCFPR, FB); else xmlf(buf, pc, "frsqrte", 2, XML_DSTFPR, FD, XML_SRCFPR, FB);}void fselx_xml(ppc_inst_t inst, addr_t pc, char *buf){ if(Rc) xmlf(buf, pc, "fselx.", 5, XML_DSTCRF, 1, XML_DSTFPR, FD, XML_SRCFPR, FA, XML_SRCFPR, FC, XML_SRCFPR, FB); else xmlf(buf, pc, "fselx", 4, XML_DSTFPR, FD, XML_SRCFPR, FA, XML_SRCFPR, FC, XML_SRCFPR, FB);}void fsqrtx_xml(ppc_inst_t inst, addr_t pc, char *buf){ if(Rc) xmlf(buf, pc, "frsqrt.", 3, XML_DSTCRF, 1, XML_DSTFPR, FD, XML_SRCFPR, FB); else xmlf(buf, pc, "frsqrt", 2, XML_DSTFPR, FD, XML_SRCFPR, FB);}void fsubx_xml(ppc_inst_t inst, addr_t pc, char *buf){ if(Rc) xmlf(buf, pc, "fsub.", 4, XML_DSTCRF, 1, XML_DSTFPR, FD, XML_SRCFPR, FA, XML_SRCFPR, FB); else xmlf(buf, pc, "fsub", 3, XML_DSTFPR, FD, XML_SRCFPR, FA, XML_SRCFPR, FB);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?