📄 integer.c
字号:
di->io.integer.srcReg[1] = -1; di->io.integer.inCarry = FALSE; di->io.integer.dstReg = RA; di->io.integer.outCR = FALSE; di->io.integer.outCarry = FALSE; di->io.integer.outOverflow = FALSE;}void xoris_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = TRUE; di->immed = UIMM; di->iclass = ICIntLogical; di->operation.integer.ident = ID_XORIS; di->io.integer.srcReg[0] = RS; di->io.integer.srcReg[1] = -1; di->io.integer.inCarry = FALSE; di->io.integer.dstReg = RA; di->io.integer.outCR = FALSE; di->io.integer.outCarry = FALSE; di->io.integer.outOverflow = FALSE;}void rlwimix_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICIntRotate; di->operation.integer.ident = Rc ? ID_RLWIMID : ID_RLWIMI; di->operation.integer.extra.rotate.sh = SH; di->operation.integer.extra.rotate.mb = MB; di->operation.integer.extra.rotate.me = ME; di->io.integer.srcReg[0] = RS; di->io.integer.srcReg[1] = RA; di->io.integer.inCarry = FALSE; di->io.integer.dstReg = RA; if(Rc) { di->io.integer.outCR = TRUE; di->io.integer.crf = 0; } else { di->io.integer.outCR = FALSE; } di->io.integer.outCarry = FALSE; di->io.integer.outOverflow = FALSE;}void rlwinmx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICIntRotate; di->operation.integer.ident = Rc ? ID_RLWINMD : ID_RLWINM; di->operation.integer.extra.rotate.sh = SH; di->operation.integer.extra.rotate.mb = MB; di->operation.integer.extra.rotate.me = ME; di->io.integer.srcReg[0] = RS; di->io.integer.srcReg[1] = -1; di->io.integer.inCarry = FALSE; di->io.integer.dstReg = RA; if(Rc) { di->io.integer.outCR = TRUE; di->io.integer.crf = 0; } else { di->io.integer.outCR = FALSE; } di->io.integer.outCarry = FALSE; di->io.integer.outOverflow = FALSE;}void rlwnmx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICIntRotate; di->operation.integer.ident = Rc ? ID_RLWNMD : ID_RLWNM; di->operation.integer.extra.rotate.mb = MB; di->operation.integer.extra.rotate.me = ME; di->io.integer.srcReg[0] = RS; di->io.integer.srcReg[1] = RB; di->io.integer.inCarry = FALSE; di->io.integer.dstReg = RA; if(Rc) { di->io.integer.outCR = TRUE; di->io.integer.crf = 0; } else { di->io.integer.outCR = FALSE; } di->io.integer.outCarry = FALSE; di->io.integer.outOverflow = FALSE;}void andx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICIntLogical; di->operation.integer.ident = Rc ? ID_ANDD : ID_AND; di->io.integer.srcReg[0] = RS; di->io.integer.srcReg[1] = RB; di->io.integer.inCarry = FALSE; di->io.integer.dstReg = RA; if(Rc) { di->io.integer.outCR = TRUE; di->io.integer.crf = 0; } else { di->io.integer.outCR = FALSE; } di->io.integer.outCarry = FALSE; di->io.integer.outOverflow = FALSE;}void andcx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICIntLogical; di->operation.integer.ident = Rc ? ID_ANDCD : ID_ANDC; di->io.integer.srcReg[0] = RS; di->io.integer.srcReg[1] = RB; di->io.integer.inCarry = FALSE; di->io.integer.dstReg = RA; if(Rc) { di->io.integer.outCR = TRUE; di->io.integer.crf = 0; } else { di->io.integer.outCR = FALSE; } di->io.integer.outCarry = FALSE; di->io.integer.outOverflow = FALSE;}void cmp_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICIntArithmetic; di->operation.integer.ident = ID_CMP; di->operation.integer.extra.compare.crfD = CRFD; di->io.integer.srcReg[0] = RA; di->io.integer.srcReg[1] = RB; di->io.integer.inCarry = FALSE; di->io.integer.dstReg = -1; di->io.integer.outCR = TRUE; di->io.integer.crf = CRFD; di->io.integer.outCarry = FALSE; di->io.integer.outOverflow = FALSE;}void cmpl_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICIntArithmetic; di->operation.integer.ident = ID_CMPL; di->io.integer.srcReg[0] = RA; di->io.integer.srcReg[1] = RB; di->io.integer.inCarry = FALSE; di->io.integer.dstReg = -1; di->io.integer.outCR = TRUE; di->io.integer.crf = CRFD; di->io.integer.outCarry = FALSE; di->io.integer.outOverflow = FALSE;}void cntlzwx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICIntArithmetic; di->operation.integer.ident = Rc ? ID_CNTLZWD : ID_CNTLZW; di->io.integer.srcReg[0] = RS; di->io.integer.srcReg[1] = -1; di->io.integer.inCarry = FALSE; di->io.integer.dstReg = RA; if(Rc) { di->io.integer.outCR = TRUE; di->io.integer.crf = 0; } else { di->io.integer.outCR = FALSE; } di->io.integer.outCarry = FALSE; di->io.integer.outOverflow = FALSE;}void eqvx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICIntArithmetic; di->operation.integer.ident = Rc ? ID_EQVD : ID_EQV; di->io.integer.srcReg[0] = RS; di->io.integer.srcReg[1] = RB; di->io.integer.inCarry = FALSE; di->io.integer.dstReg = RA; if(Rc) { di->io.integer.outCR = TRUE; di->io.integer.crf = 0; } else { di->io.integer.outCR = FALSE; } di->io.integer.outCarry = FALSE; di->io.integer.outOverflow = FALSE;}void extsbx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICIntArithmetic; di->operation.integer.ident = Rc ? ID_EXTSBD : ID_EXTSB; di->io.integer.srcReg[0] = RS; di->io.integer.srcReg[1] = -1; di->io.integer.inCarry = FALSE; di->io.integer.dstReg = RA; if(Rc) { di->io.integer.outCR = TRUE; di->io.integer.crf = 0; } else { di->io.integer.outCR = FALSE; } di->io.integer.outCarry = FALSE; di->io.integer.outOverflow = FALSE;}void extshx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICIntArithmetic; di->operation.integer.ident = Rc ? ID_EXTSHD : ID_EXTSH; di->io.integer.srcReg[0] = RS; di->io.integer.srcReg[1] = -1; di->io.integer.inCarry = FALSE; di->io.integer.dstReg = RA; if(Rc) { di->io.integer.outCR = TRUE; di->io.integer.crf = 0; } else { di->io.integer.outCR = FALSE; } di->io.integer.outCarry = FALSE; di->io.integer.outOverflow = FALSE;}void nandx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICIntLogical; di->operation.integer.ident = Rc ? ID_NANDD : ID_NAND; di->io.integer.srcReg[0] = RS; di->io.integer.srcReg[1] = RB; di->io.integer.inCarry = FALSE; di->io.integer.dstReg = RA; if(Rc) { di->io.integer.outCR = TRUE; di->io.integer.crf = 0; } else { di->io.integer.outCR = FALSE; } di->io.integer.outCarry = FALSE; di->io.integer.outOverflow = FALSE;}void norx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICIntLogical; di->operation.integer.ident = Rc ? ID_NORD : ID_NOR; di->io.integer.srcReg[0] = RS; di->io.integer.srcReg[1] = RB; di->io.integer.inCarry = FALSE; di->io.integer.dstReg = RA; if(Rc) { di->io.integer.outCR = TRUE; di->io.integer.crf = 0; } else { di->io.integer.outCR = FALSE; } di->io.integer.outCarry = FALSE; di->io.integer.outOverflow = FALSE;}void orx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICIntLogical; di->operation.integer.ident = Rc ? ID_ORD : ID_OR; di->io.integer.srcReg[0] = RS; di->io.integer.srcReg[1] = RB; di->io.integer.inCarry = FALSE; di->io.integer.dstReg = RA; if(Rc) { di->io.integer.outCR = TRUE; di->io.integer.crf = 0; } else { di->io.integer.outCR = FALSE; } di->io.integer.outCarry = FALSE; di->io.integer.outOverflow = FALSE;}void orcx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICIntLogical; di->operation.integer.ident = Rc ? ID_ORCD : ID_ORC; di->io.integer.srcReg[0] = RS; di->io.integer.srcReg[1] = RB; di->io.integer.inCarry = FALSE; di->io.integer.dstReg = RA; if(Rc) { di->io.integer.outCR = TRUE; di->io.integer.crf = 0; } else { di->io.integer.outCR = FALSE; } di->io.integer.outCarry = FALSE; di->io.integer.outOverflow = FALSE;}void slwx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICIntShift; di->operation.integer.ident = Rc ? ID_SLWD : ID_SLW; di->operation.integer.extra.shift.sh = RB; di->io.integer.srcReg[0] = RS; di->io.integer.srcReg[1] = RB; di->io.integer.inCarry = FALSE; di->io.integer.dstReg = RA; if(Rc) { di->io.integer.outCR = TRUE; di->io.integer.crf = 0; } else { di->io.integer.outCR = FALSE; } di->io.integer.outCarry = FALSE; di->io.integer.outOverflow = FALSE;}void srawx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICIntShift; di->operation.integer.ident = Rc ? ID_SRAWD : ID_SRAW; di->io.integer.srcReg[0] = RS; di->io.integer.srcReg[1] = RB; di->io.integer.inCarry = FALSE; di->io.integer.dstReg = RA; if(Rc) { di->io.integer.outCR = TRUE; di->io.integer.crf = 0; } else { di->io.integer.outCR = FALSE; } di->io.integer.outCarry = TRUE; di->io.integer.outOverflow = FALSE;}void srawix_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICIntShift; di->operation.integer.ident = Rc ? ID_SRAWID : ID_SRAWI; di->operation.integer.extra.shift.sh = SH; di->io.integer.srcReg[0] = RS; di->io.integer.srcReg[1] = -1; di->io.integer.inCarry = FALSE; di->io.integer.dstReg = RA; if(Rc) { di->io.integer.outCR = TRUE; di->io.integer.crf = 0; } else { di->io.integer.outCR = FALSE; } di->io.integer.outCarry = TRUE; di->io.integer.outOverflow = FALSE;}void srwx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICIntShift; di->operation.integer.ident = Rc ? ID_SRWD : ID_SRW; di->io.integer.srcReg[0] = RS; di->io.integer.srcReg[1] = RB; di->io.integer.inCarry = FALSE; di->io.integer.dstReg = RA; if(Rc) { di->io.integer.outCR = TRUE; di->io.integer.crf = 0; } else { di->io.integer.outCR = FALSE; } di->io.integer.outCarry = FALSE; di->io.integer.outOverflow = FALSE;}void tw_translate(ppc_inst_t inst, struct DecodedInstruction *di) { di->iclass = 0; }void xorx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICIntLogical; di->operation.integer.ident = Rc ? ID_XORD : ID_XOR; di->io.integer.srcReg[0] = RS; di->io.integer.srcReg[1] = RB; di->io.integer.inCarry = FALSE; di->io.integer.dstReg = RA; if(Rc) { di->io.integer.outCR = TRUE; di->io.integer.crf = 0; } else { di->io.integer.outCR = FALSE; } di->io.integer.outCarry = FALSE; di->io.integer.outOverflow = FALSE;}void addx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICIntArithmetic; di->operation.integer.ident = Rc ? (OE ? ID_ADDOD : ID_ADDD) : (OE ? ID_ADDO : ID_ADD); di->io.integer.srcReg[0] = RA; di->io.integer.srcReg[1] = RB; di->io.integer.inCarry = FALSE; di->io.integer.dstReg = RD; if(Rc) { di->io.integer.outCR = TRUE; di->io.integer.crf = 0; } else { di->io.integer.outCR = FALSE; } di->io.integer.outCarry = FALSE; di->io.integer.outOverflow = OE ? TRUE : FALSE;}void addcx_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICIntArithmetic; di->operation.integer.ident = Rc ? (OE ? ID_ADDCOD : ID_ADDCD) : (OE ? ID_ADDCO : ID_ADDC); di->io.integer.srcReg[0] = RA; di->io.integer.srcReg[1] = RB; di->io.integer.inCarry = FALSE; di->io.integer.dstReg = RD; if(Rc) { di->io.integer.outCR = TRUE; di->io.integer.crf = 0; } else { di->io.integer.outCR = FALSE; } di->io.integer.outCarry = TRUE; di->io.integer.outOverflow = OE ? TRUE : FALSE;}void addex_translate(ppc_inst_t inst, struct DecodedInstruction *di){ di->hasImmed = FALSE; di->iclass = ICIntArithmetic; di->operation.integer.ident = Rc ? (OE ? ID_ADDEOD : ID_ADDED) : (OE ? ID_ADDEO : ID_ADDE); di->io.integer.srcReg[0] = RA; di->io.integer.srcReg[1] = RB; di->io.integer.inCarry = TRUE; di->io.integer.dstReg = RD; if(Rc) { di->io.in
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -