floatingpoint.c
来自「ppc750 system design simulator using sys」· C语言 代码 · 共 1,640 行 · 第 1/3 页
C
1,640 行
char *faddsx_disasm(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "fadds"); if(Rc) buf += sprintf(buf, "."); buf += sprintf(buf, " f%u, f%u, f%u", FD, FA, FB); return buf;}char *fdivsx_disasm(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "fdivs"); if(Rc) buf += sprintf(buf, "."); buf += sprintf(buf, " f%u, f%u, f%u", FD, FA, FB); return buf;}char *fmaddsx_disasm(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "fmadds"); if(Rc) buf += sprintf(buf, "."); buf += sprintf(buf, " f%u, f%u, f%u, f%u", FD, FA, FC, FB); return buf;}char *fmsubsx_disasm(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "fmsubs"); if(Rc) buf += sprintf(buf, "."); buf += sprintf(buf, " f%u, f%u, f%u, f%u", FD, FA, FC, FB); return buf;}char *fmulsx_disasm(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "fmuls"); if(Rc) buf += sprintf(buf, "."); buf += sprintf(buf, " f%u, f%u, f%u", FD, FA, FC); return buf;}char *fnmaddsx_disasm(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "fnmadds"); if(Rc) buf += sprintf(buf, "."); buf += sprintf(buf, " f%u, f%u, f%u, f%u", FD, FA, FC, FB); return buf;}char *fnmsubsx_disasm(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "fnmsubs"); if(Rc) buf += sprintf(buf, "."); buf += sprintf(buf, " f%u, f%u, f%u, f%u", FD, FA, FC, FB); return buf;}char *fresx_disasm(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "fres"); if(Rc) buf += sprintf(buf, "."); buf += sprintf(buf, " f%u, f%u", FD, FB); return buf;}char *fsqrtsx_disasm(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "fsqrts"); if(Rc) buf += sprintf(buf, "."); buf += sprintf(buf, " f%u, f%u", FD, FB); return buf;}char *fsubsx_disasm(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "fsubs"); if(Rc) buf += sprintf(buf, "."); buf += sprintf(buf, " f%u, f%u, f%u", FD, FA, FB); return buf;}char *fabsx_disasm(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "fabs"); if(Rc) buf += sprintf(buf, "."); buf += sprintf(buf, " f%u, f%u", FD, FB); return buf;}char *fcmpo_disasm(ppc_inst_t inst, addr_t pc, char *buf) { buf += sprintf(buf, "fcmpo cr%u, f%u, f%u", CRFD, FA, FB); return buf; }char *fcmpu_disasm(ppc_inst_t inst, addr_t pc, char *buf) { buf += sprintf(buf, "fcmpu cr%u, f%u, f%u", CRFD, FA, FB); return buf; }char *fctiwx_disasm(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "fctiw"); if(Rc) buf += sprintf(buf, "."); buf += sprintf(buf, " f%u, f%u", FD, FB); return buf;}char *fctiwzx_disasm(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "fctiwz"); if(Rc) buf += sprintf(buf, "."); buf += sprintf(buf, " f%u, f%u", FD, FB); return buf;}char *fmrx_disasm(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "fmr"); if(Rc) buf += sprintf(buf, "."); buf += sprintf(buf, " f%u, f%u", FD, FB); return buf;}char *fnabsx_disasm(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "fnabs"); if(Rc) buf += sprintf(buf, "."); buf += sprintf(buf, " f%u, f%u", FD, FB); return buf;}char *fnegx_disasm(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "fneg"); if(Rc) buf += sprintf(buf, "."); buf += sprintf(buf, " f%u, f%u", FD, FB); return buf;}char *frspx_disasm(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "frsp"); if(Rc) buf += sprintf(buf, "."); buf += sprintf(buf, " f%u, f%u", FD, FB); return buf;}char *faddx_disasm(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "fadd"); if(Rc) buf += sprintf(buf, "."); buf += sprintf(buf, " f%u, f%u, f%u", FD, FA, FB); return buf;}char *fdivx_disasm(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "fdiv"); if(Rc) buf += sprintf(buf, "."); buf += sprintf(buf, " f%u, f%u, f%u", FD, FA, FB); return buf;}char *fmaddx_disasm(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "fmadd"); if(Rc) buf += sprintf(buf, "."); buf += sprintf(buf, " f%u, f%u, f%u, f%u", FD, FA, FC, FB); return buf;}char *fmsubx_disasm(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "fmsub"); if(Rc) buf += sprintf(buf, "."); buf += sprintf(buf, " f%u, f%u, f%u, f%u", FD, FA, FC, FB); return buf;}char *fmulx_disasm(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "fmul"); if(Rc) buf += sprintf(buf, "."); buf += sprintf(buf, " f%u, f%u, f%u", FD, FA, FC); return buf;}char *fnmaddx_disasm(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "fnmadd"); if(Rc) buf += sprintf(buf, "."); buf += sprintf(buf, " f%u, f%u, f%u, f%u", FD, FA, FC, FB); return buf;}char *fnmsubx_disasm(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "fnmsub"); if(Rc) buf += sprintf(buf, "."); buf += sprintf(buf, " f%u, f%u, f%u, f%u", FD, FA, FC, FB); return buf;}char *frsqrtex_disasm(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "frsqrte"); if(Rc) buf += sprintf(buf, "."); buf += sprintf(buf, " f%u, f%u", FD, FB); return buf;}char *fselx_disasm(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "fsel"); if(Rc) buf += sprintf(buf, "."); buf += sprintf(buf, " f%u, f%u, f%u, f%u", FD, FA, FC, FB); return buf;}char *fsqrtx_disasm(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "fsqrt"); if(Rc) buf += sprintf(buf, "."); buf += sprintf(buf, " f%u, f%u", FD, FB); return buf;}char *fsubx_disasm(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "fsub"); if(Rc) buf += sprintf(buf, "."); buf += sprintf(buf, " f%u, f%u, f%u", FD, FA, FB); return buf;}void faddsx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICFloatArithmetic; di->operation.floatingPoint.ident = Rc ? ID_FADDSD : ID_FADDS; 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 fdivsx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICFloatDiv; di->operation.floatingPoint.ident = ID_FDIVS; 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 fmaddsx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICFloatMulAdd; di->operation.floatingPoint.ident = Rc ? ID_FMADDSD : ID_FMADDS; 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 fmsubsx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICFloatMulAdd; di->operation.floatingPoint.ident = Rc ? ID_FMSUBSD : ID_FMSUBS; 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 fmulsx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICFloatMul; di->operation.floatingPoint.ident = Rc ? ID_FMULSD : ID_FMULS; 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 fnmaddsx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICFloatMulAdd; di->operation.floatingPoint.ident = Rc ? ID_FNMADDSD : ID_FNMADDS; 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 fnmsubsx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICFloatMulAdd; di->operation.floatingPoint.ident = Rc ? ID_FNMSUBSD : ID_FNMSUBS; 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 fresx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICFloatConversion; di->operation.floatingPoint.ident = Rc ? ID_FRESD : ID_FRES; 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 fsqrtsx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICFloatArithmetic; di->operation.floatingPoint.ident = Rc ? ID_FSQRTSD : ID_FSQRTS; 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 fsubsx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICFloatArithmetic; di->operation.floatingPoint.ident = Rc ? ID_FSUBSD : ID_FSUBS; 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 fabsx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICFloatArithmetic; di->operation.floatingPoint.ident = Rc ? ID_FABSD : ID_FABS; 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 fcmpo_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICFloatMulAdd; di->operation.floatingPoint.ident = ID_FCMPO; 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 = -1; di->io.floatingPoint.outCR = TRUE; di->io.floatingPoint.crf = CRFD;}void fcmpu_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICFloatArithmetic; di->operation.floatingPoint.ident = ID_FCMPU; 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 = -1; di->io.floatingPoint.outCR = TRUE; di->io.floatingPoint.crf = CRFD;}void fctiwx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICFloatConversion; di->operation.floatingPoint.ident = Rc ? ID_FCTIWD : ID_FCTIW; 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 fctiwzx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICFloatConversion; di->operation.floatingPoint.ident = Rc ? ID_FCTIWZD : ID_FCTIWZ; 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 fmrx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICFloatMove; di->operation.floatingPoint.ident = Rc ? ID_FMRD : ID_FMR; di->io.floatingPoint.inFPSCR = FALSE; di->io.floatingPoint.srcReg[0] = -1;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?