⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 integer.c

📁 ppc750 system design simulator using system c
💻 C
📖 第 1 页 / 共 5 页
字号:
	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 + -