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

📄 integer.c

📁 ppc750 system design simulator using system c
💻 C
📖 第 1 页 / 共 5 页
字号:
char *xori_disasm(ppc_inst_t inst, addr_t pc, char *buf) { buf += sprintf(buf, "xori r%u, r%u, %u", RA, RS, IMM); return buf; }char *xoris_disasm(ppc_inst_t inst, addr_t pc, char *buf) { buf += sprintf(buf, "xoris r%u, r%u, %u", RA, RS, IMM); return buf; }char *rlwimix_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "rlwimi");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u, %u, %u, %u", RA, RS, SH, MB, ME);	return buf;}char *rlwinmx_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "rlwinm");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u, %u, %u, %u", RA, RS, SH, MB, ME);	return buf;}char *rlwnmx_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "rlwnm");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u, r%u, %u, %u", RA, RS, RB, MB, ME);	return buf;}char *andx_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "and");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u, r%u", RD, RA, RB);	return buf;}char *andcx_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "andc");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u, r%u", RA, RS, RB);	return buf;}char *cmp_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "cmp");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " cr%u, %u, r%u, r%u", CRFD, L, RA, RB);	return buf;}char *cmpl_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "cmpl");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " cr%u, %u, r%u, r%u", CRFD, L, RA, RB);	return buf;}char *cntlzwx_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "cntlzw");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u", RA, RS);	return buf;}char *eqvx_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "eqv");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u, r%u", RA, RS, RB);	return buf;}char *extsbx_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "extsb");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u", RA, RS);	return buf;}char *extshx_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "extsh");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u", RA, RS);	return buf;}char *nandx_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "nand");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u, r%u", RA, RS, RB);	return buf;}char *norx_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "nor");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u, r%u", RA, RS, RB);	return buf;}char *orx_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "or");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u, r%u", RA, RS, RB);	return buf;}char *orcx_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "orc");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u, r%u", RA, RS, RB);	return buf;}char *slwx_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "slw");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u, r%u", RA, RS, RB);	return buf;}char *srawx_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "sraw");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u, r%u", RA, RS, RB);	return buf;}char *srawix_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "srawi");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u, %u", RA, RS, SH);	return buf;}char *srwx_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "srw");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u, r%u", RA, RS, RB);	return buf;}char *tw_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "tw");	buf += sprintf(buf, " %u, r%u, r%u", TO, RA, RB);	return buf;}char *xorx_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "xor");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u, r%u", RA, RS, RB);	return buf;}char *addx_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "add");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u, r%u", RD, RA, RB);	return buf;}char *addcx_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "addc");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u, r%u", RD, RA, RB);		return buf;}char *addex_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "adde");	if(OE) buf += sprintf(buf, "o");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u, r%u", RD, RA, RB);		return buf;}char *addmex_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "addme");	if(OE) buf += sprintf(buf, "o");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u", RD, RA);			return buf;}char *addzex_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "addze");	if(OE) buf += sprintf(buf, "o");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u", RD, RA);			return buf;}char *divwx_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "divw");	if(OE) buf += sprintf(buf, "o");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u, r%u", RD, RA, RB);		return buf;}char *divwux_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "divwu");	if(OE) buf += sprintf(buf, "o");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u, r%u", RD, RA, RB);		return buf;}char *mulhwx_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "mulhw");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u, r%u", RD, RA, RB);		return buf;}char *mulhwux_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "mulhwu");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u, r%u", RD, RA, RB);		return buf;}char *mullwx_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "mullw");	if(OE) buf += sprintf(buf, "o");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u, r%u", RD, RA, RB);		return buf;}char *negx_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "neg");	if(OE) buf += sprintf(buf, "o");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u", RD, RA);		return buf;}char *subfx_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "subf");	if(OE) buf += sprintf(buf, "o");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u, r%u", RD, RA, RB);		return buf;}char *subfcx_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "subfc");	if(OE) buf += sprintf(buf, "o");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u, r%u", RD, RA, RB);		return buf;}char *subfex_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "subfe");	if(OE) buf += sprintf(buf, "o");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u, r%u", RD, RA, RB);		return buf;}char *subfmex_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "subfme");	if(OE) buf += sprintf(buf, "o");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u, r%u", RD, RA, RB);		return buf;}char *subfzex_disasm(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "subfze");	if(OE) buf += sprintf(buf, "o");	if(Rc) buf += sprintf(buf, ".");	buf += sprintf(buf, " r%u, r%u, r%u", RD, RA, RB);		return buf;}void addi_translate(ppc_inst_t inst, struct DecodedInstruction *di){	di->hasImmed = TRUE;	di->immed = SEXT16(IMM);	di->iclass = ICIntArithmetic;	di->operation.integer.ident = ID_ADDI;	di->operation.integer.nullRA = (RA == 0);	di->io.integer.srcReg[0] = RA ? RA : -1; /* bug */	di->io.integer.srcReg[1] = -1;	di->io.integer.inCarry = FALSE;	di->io.integer.dstReg = RD;	di->io.integer.outCR = FALSE;	di->io.integer.outCarry = FALSE;	di->io.integer.outOverflow = FALSE;}void addic_translate(ppc_inst_t inst, struct DecodedInstruction *di){	di->hasImmed = TRUE;	di->immed = SEXT16(IMM);	di->iclass = ICIntArithmetic;	di->operation.integer.ident = ID_ADDIC;	di->io.integer.srcReg[0] = RA;	di->io.integer.srcReg[1] = -1;	di->io.integer.inCarry = FALSE;	di->io.integer.dstReg = RD;	di->io.integer.outCR = FALSE;	di->io.integer.outCarry = TRUE;	di->io.integer.outOverflow = FALSE;}void addicd_translate(ppc_inst_t inst, struct DecodedInstruction *di){	di->hasImmed = TRUE;	di->immed = SEXT16(IMM);	di->iclass = ICIntArithmetic;	di->operation.integer.ident = ID_ADDICD;	di->io.integer.srcReg[0] = RA;	di->io.integer.srcReg[1] = -1;	di->io.integer.inCarry = FALSE;	di->io.integer.dstReg = RD;	di->io.integer.outCR = TRUE;	di->io.integer.crf = 0;	di->io.integer.outCarry = TRUE;	di->io.integer.outOverflow = FALSE;}void addis_translate(ppc_inst_t inst, struct DecodedInstruction *di){	di->hasImmed = TRUE;	di->immed = SEXT16(IMM);	di->iclass = ICIntArithmetic;	di->operation.integer.ident = ID_ADDIS;	di->operation.integer.nullRA = (RA == 0);	di->io.integer.srcReg[0] = RA ? RA : -1;  /* bug */	di->io.integer.srcReg[1] = -1;	di->io.integer.inCarry = FALSE;	di->io.integer.dstReg = RD;	di->io.integer.outCR = FALSE;	di->io.integer.outCarry = FALSE;	di->io.integer.outOverflow = FALSE;}void andid_translate(ppc_inst_t inst, struct DecodedInstruction *di){	di->hasImmed = TRUE;	di->immed = UIMM;	di->iclass = ICIntLogical;	di->operation.integer.ident = ID_ANDID;	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 = TRUE;	di->io.integer.crf = 0;	di->io.integer.outCarry = FALSE;	di->io.integer.outOverflow = FALSE;}void andisd_translate(ppc_inst_t inst, struct DecodedInstruction *di){	di->hasImmed = TRUE;	di->immed = UIMM;	di->iclass = ICIntLogical;	di->operation.integer.ident = ID_ANDISD;	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 = TRUE;	di->io.integer.crf = 0;	di->io.integer.outCarry = FALSE;	di->io.integer.outOverflow = FALSE;}void cmpi_translate(ppc_inst_t inst, struct DecodedInstruction *di){	di->hasImmed = TRUE;	di->immed = SEXT16(IMM);	di->iclass = ICIntArithmetic;	di->operation.integer.ident = ID_CMPI;	di->operation.integer.extra.compare.crfD = CRFD;	di->io.integer.srcReg[0] = RA;	di->io.integer.srcReg[1] = -1;	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 cmpli_translate(ppc_inst_t inst, struct DecodedInstruction *di){	di->hasImmed = TRUE;	di->immed = UIMM;	di->iclass = ICIntArithmetic;	di->operation.integer.ident = ID_CMPLI;	di->operation.integer.extra.compare.crfD = CRFD;	di->io.integer.srcReg[0] = RA;	di->io.integer.srcReg[1] = -1;	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 mulli_translate(ppc_inst_t inst, struct DecodedInstruction *di){	sword_t _sh;	_sh = SEXT16(IMM);	di->hasImmed = TRUE;	di->immed = _sh;	di->iclass = ICIntMul;	di->operation.integer.ident = ID_MULLI;	di->io.integer.srcReg[0] = RA;	di->io.integer.srcReg[1] = -1;	di->io.integer.inCarry = FALSE;	di->io.integer.dstReg = RD;	di->io.integer.outCR = FALSE;	di->io.integer.outCarry = FALSE;	di->io.integer.outOverflow = FALSE;}void ori_translate(ppc_inst_t inst, struct DecodedInstruction *di){	BOOL nop = RS == RA && UIMM == 0;	di->hasImmed = TRUE;	di->immed = UIMM;	di->iclass = ICIntLogical;	di->operation.integer.ident = ID_ORI;	di->io.integer.srcReg[0] = RS;	di->io.integer.srcReg[1] = -1;	di->io.integer.inCarry = FALSE;	di->io.integer.dstReg = nop ? -1: RA;	di->io.integer.outCR = FALSE;	di->io.integer.outCarry = FALSE;	di->io.integer.outOverflow = FALSE;}void oris_translate(ppc_inst_t inst, struct DecodedInstruction *di){	di->hasImmed = TRUE;	di->immed = UIMM;	di->iclass = ICIntLogical;	di->operation.integer.ident = ID_ORIS;	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 subfic_translate(ppc_inst_t inst, struct DecodedInstruction *di){	di->hasImmed = TRUE;	di->immed = SEXT16(IMM);	di->iclass = ICIntArithmetic;	di->operation.integer.ident = ID_SUBFIC;	di->io.integer.srcReg[0] = RA;	di->io.integer.srcReg[1] = -1;	di->io.integer.inCarry = FALSE;	di->io.integer.dstReg = RD;	di->io.integer.outCR = FALSE;	di->io.integer.outCarry = TRUE;	di->io.integer.outOverflow = FALSE;}void twi_translate(ppc_inst_t inst, struct DecodedInstruction *di) { di->iclass = 0; }void xori_translate(ppc_inst_t inst, struct DecodedInstruction *di){	di->hasImmed = TRUE;	di->immed = UIMM;	di->iclass = ICIntLogical;	di->operation.integer.ident = ID_XORI;	di->io.integer.srcReg[0] = RS;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -