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

📄 integer.c

📁 ppc750 system design simulator using system c
💻 C
📖 第 1 页 / 共 5 页
字号:
char *nandx_bin2c(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "\tword_t result = ~(GPR(%u) & GPR(%u));\n", RS, RB);	buf += sprintf(buf, "\tGPR(%u) = result;\n", RA);	if(Rc) buf += sprintf(buf, "\tCOMPUTE_CR0(result);\n");	return buf;}char *norx_bin2c(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "\tword_t result = ~(GPR(%u) | GPR(%u));\n", RS, RB);	buf += sprintf(buf, "\tGPR(%u) = result;\n", RA);	if(Rc) buf += sprintf(buf, "\tCOMPUTE_CR0(result);\n");	return buf;}char *orx_bin2c(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "\tword_t result = GPR(%u) | GPR(%u);\n", RS, RB);	buf += sprintf(buf, "\tGPR(%u) = result;\n", RA);	if(Rc) buf += sprintf(buf, "\tCOMPUTE_CR0(result);\n");	return buf;}char *orcx_bin2c(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "\tword_t result = GPR(%u) | (~GPR(%u));\n", RS, RB);	buf += sprintf(buf, "\tGPR(%u) = result;\n", RA);	if(Rc) buf += sprintf(buf, "\tCOMPUTE_CR0(result);\n");	return buf;}char *slwx_bin2c(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "\tword_t n = GPR(%u);\n", RB);	buf += sprintf(buf, "\tword_t result;\n");	buf += sprintf(buf, "\tif(n & 0x20)\n");	buf += sprintf(buf, "\t\tresult = 0;\n");	buf += sprintf(buf, "\telse\n");	buf += sprintf(buf, "\tresult = GPR(%u) << (n & 0x1f);\n", RS);	buf += sprintf(buf, "\tGPR(%u) = result;\n", RA);	if(Rc) buf += sprintf(buf, "\tCOMPUTE_CR0(result);\n");	return buf;}char *srawx_bin2c(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "\tword_t n = GPR(%u);\n", RB);	buf += sprintf(buf, "\tsword_t result;\n");	buf += sprintf(buf, "\tsword_t src = GPR(%u);\n", RS);	buf += sprintf(buf, "\tif(n == 0)\n");	buf += sprintf(buf, "\t{\n");	buf += sprintf(buf, "\t\tresult = src;\n");	buf += sprintf(buf, "\t\tRESET_XER_CA;\n");	buf += sprintf(buf, "\t}\n");	buf += sprintf(buf, "\telse if(n & 0x20)\n");	buf += sprintf(buf, "\t{\n");	buf += sprintf(buf, "\t\tif(src < 0)\n");	buf += sprintf(buf, "\t\t{\n");	buf += sprintf(buf, "\t\t\tresult = 0xffffffff;\n");	buf += sprintf(buf, "\t\t\tif(src & 0x7fffffff) SET_XER_CA; else RESET_XER_CA;\n");	buf += sprintf(buf, "\t\t}\n");	buf += sprintf(buf, "\t\telse\n");	buf += sprintf(buf, "\t\t{\n");	buf += sprintf(buf, "\t\t\tresult = 0;\n");	buf += sprintf(buf, "\t\t\tRESET_XER_CA;\n");	buf += sprintf(buf, "\t\t}\n");	buf += sprintf(buf, "\t}\n");	buf += sprintf(buf, "\telse\n");	buf += sprintf(buf, "\t{\n");	buf += sprintf(buf, "\t\tn = n & 0x1f;\n");	buf += sprintf(buf, "\t\tresult = (sword_t) src >> n;\n");	buf += sprintf(buf, "\t\tif(src < 0 && (src << (32 - n)) != 0) SET_XER_CA; else RESET_XER_CA;\n");	buf += sprintf(buf, "\t}\n");	buf += sprintf(buf, "\tGPR(%u) = result;\n", RA);	if(Rc) buf += sprintf(buf, "\tCOMPUTE_CR0(result);\n");	return buf;}char *srawix_bin2c(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "\tword_t n = %u;\n", SH);	buf += sprintf(buf, "\tsword_t result;\n");	buf += sprintf(buf, "\tsword_t src = GPR(%u);\n", RS);	buf += sprintf(buf, "\tif(n == 0)\n");	buf += sprintf(buf, "\t{\n");	buf += sprintf(buf, "\t\tresult = src;\n");	buf += sprintf(buf, "\t\tRESET_XER_CA;\n");	buf += sprintf(buf, "\t}\n");	buf += sprintf(buf, "\telse\n");	buf += sprintf(buf, "\t{\n");	buf += sprintf(buf, "\t\tresult = src >> n;\n");	buf += sprintf(buf, "\t\tif(src < 0 && (src << (32 - n)) != 0) SET_XER_CA; else RESET_XER_CA;\n");	buf += sprintf(buf, "\t}\n");	buf += sprintf(buf, "\tGPR(%u) = result;\n", RA);	if(Rc) buf += sprintf(buf, "\tCOMPUTE_CR0(result);\n");	return buf;}char *srwx_bin2c(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "\tword_t result = GPR(%u) >> (GPR(%u) & 0x1f);\n", RS, RB);	buf += sprintf(buf, "\tGPR(%u) = result;\n", RA);	if(Rc) buf += sprintf(buf, "\tCOMPUTE_CR0(result);\n");	return buf;}char *tw_bin2c(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "\tabort();\n");	return buf;	}char *xorx_bin2c(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "\tword_t result = GPR(%u) ^ GPR(%u);\n", RS, RB);	buf += sprintf(buf, "\tGPR(%u) = result;\n", RA);	if(Rc) buf += sprintf(buf, "\tCOMPUTE_CR0(result);\n");	return buf;}char *addx_bin2c(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "\tword_t a = GPR(%u);\n", RA);	buf += sprintf(buf, "\tword_t b = GPR(%u);\n", RB);	buf += sprintf(buf, "\tword_t result = a + b;\n");	buf += sprintf(buf, "\tGPR(%u) = result;\n", RD);	if(OE)	{		buf += sprintf(buf, "\tif(Overflow(a, b))\n");		buf += sprintf(buf, "\t{\n");		buf += sprintf(buf, "\t\tSET_XER_OV;\n");		buf += sprintf(buf, "\t\tSET_XER_SO;\n");		buf += sprintf(buf, "\t}\n");		buf += sprintf(buf, "\telse RESET_XER_OV;\n");	}	if(Rc) buf += sprintf(buf, "\tCOMPUTE_CR0(result);\n");	return buf;}char *addcx_bin2c(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "\tword_t a = GPR(%u);\n", RA);	buf += sprintf(buf, "\tword_t b = GPR(%u);\n", RB);	buf += sprintf(buf, "\tword_t result = a + b;\n");	buf += sprintf(buf, "\tGPR(%u) = result;\n", RD);	buf += sprintf(buf, "\tif(Carry(a, b)) SET_XER_CA; else RESET_XER_CA;\n");	if(OE)	{		buf += sprintf(buf, "\tif(Overflow(a, b))\n");		buf += sprintf(buf, "\t{\n");		buf += sprintf(buf, "\t\tSET_XER_OV;\n");		buf += sprintf(buf, "\t\tSET_XER_SO;\n");		buf += sprintf(buf, "\t}\n");		buf += sprintf(buf, "\telse RESET_XER_OV;\n");	}	if(Rc) buf += sprintf(buf, "\tCOMPUTE_CR0(result);\n");	return buf;}char *addex_bin2c(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "\tword_t a = GPR(%u);\n", RA);	buf += sprintf(buf, "\tword_t b = GPR(%u);\n", RB);	buf += sprintf(buf, "\tword_t c = XER_CA;\n");	buf += sprintf(buf, "\tword_t result = a + b + c;\n");	buf += sprintf(buf, "\tGPR(%u) = result;\n", RD);	buf += sprintf(buf, "\tif(Carry(a, b) || (c != 0 && Carry(a + b, c))) SET_XER_CA; else RESET_XER_CA;\n");		if(OE)	{		buf += sprintf(buf, "\tif(Overflow(a, b) || Overflow(a + b, c))\n");		buf += sprintf(buf, "\t{\n");		buf += sprintf(buf, "\t\tSET_XER_OV;\n");		buf += sprintf(buf, "\t\tSET_XER_SO;\n");		buf += sprintf(buf, "\t}\n");		buf += sprintf(buf, "\telse\n");		buf += sprintf(buf, "\t{\n");		buf += sprintf(buf, "\t\tRESET_XER_OV;\n");		buf += sprintf(buf, "\t}\n");	}	if(Rc) buf += sprintf(buf, "\tCOMPUTE_CR0(result);\n");	return buf;}char *addmex_bin2c(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "\tword_t a = GPR(%u);\n", RA);	buf += sprintf(buf, "\tword_t c = XER_CA;\n");	buf += sprintf(buf, "\tword_t result = a + c - 1;\n");	buf += sprintf(buf, "\tGPR(%u) = result;\n", RD);	buf += sprintf(buf, "\tif(Carry(a, c - 1)) SET_XER_CA; else RESET_XER_CA;\n");		if(OE)	{		buf += sprintf(buf, "\tif(Overflow(a, c - 1))\n");		buf += sprintf(buf, "\t{\n");		buf += sprintf(buf, "\t\tSET_XER_OV;\n");		buf += sprintf(buf, "\t\tSET_XER_SO;\n");		buf += sprintf(buf, "\t}\n");		buf += sprintf(buf, "\telse\n");		buf += sprintf(buf, "\t{\n");		buf += sprintf(buf, "\t\tRESET_XER_OV;\n");		buf += sprintf(buf, "\t}\n");	}	if(Rc) buf += sprintf(buf, "\tCOMPUTE_CR0(result);\n");	return buf;}char *addzex_bin2c(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "\tword_t a = GPR(%u);\n", RA);	buf += sprintf(buf, "\tword_t c = XER_CA;\n");	buf += sprintf(buf, "\tword_t result = a + c;\n");	buf += sprintf(buf, "\tGPR(%u) = result;\n", RD);	buf += sprintf(buf, "\tif(Carry(a, c)) SET_XER_CA; else RESET_XER_CA;\n");		if(OE)	{		buf += sprintf(buf, "\tif(Overflow(a, c))\n");		buf += sprintf(buf, "\t{\n");		buf += sprintf(buf, "\t\tSET_XER_OV;\n");		buf += sprintf(buf, "\t\tSET_XER_SO;\n");		buf += sprintf(buf, "\t}\n");		buf += sprintf(buf, "\telse\n");		buf += sprintf(buf, "\t{\n");		buf += sprintf(buf, "\t\tRESET_XER_OV;\n");		buf += sprintf(buf, "\t}\n");	}	if(Rc) buf += sprintf(buf, "\tCOMPUTE_CR0(result);\n");	return buf;}char *divwx_bin2c(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "\tsword_t a = GPR(%u);\n", RA);	buf += sprintf(buf, "\tsword_t b = GPR(%u);\n", RB);	buf += sprintf(buf, "\tif(b == 0)\n");	buf += sprintf(buf, "\t{\n");	if(OE)	{		buf += sprintf(buf, "\t\tSET_XER_OV;\n");		buf += sprintf(buf, "\t\tSET_XER_SO;\n");	}	buf += sprintf(buf, "\t}\n");	buf += sprintf(buf, "\telse\n");	buf += sprintf(buf, "\t{\n");	buf += sprintf(buf, "\t\tif(a == 0x80000000 && b == 0xffffffff)\n");	buf += sprintf(buf, "\t\t{\n");	if(OE)	{		buf += sprintf(buf, "\t\t\tSET_XER_OV;\n");		buf += sprintf(buf, "\t\t\tSET_XER_SO;\n");	}	buf += sprintf(buf, "\t\t}\n");	buf += sprintf(buf, "\t\telse\n");	buf += sprintf(buf, "\t\t{\n");	buf += sprintf(buf, "\t\t\tsword_t result = a / b;\n");	buf += sprintf(buf, "\t\t\tGPR(%u) = result;\n", RD);	if(OE) buf += sprintf(buf, "\t\t\tRESET_XER_OV;\n");	if(Rc) buf += sprintf(buf, "\t\t\tCOMPUTE_CR0(result);\n");	buf += sprintf(buf, "\t\t}\n");	buf += sprintf(buf, "\t}\n");		return buf;}char *divwux_bin2c(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "\tword_t a = GPR(%u);\n", RA);	buf += sprintf(buf, "\tword_t b = GPR(%u);\n", RB);	buf += sprintf(buf, "\tif(b == 0)\n");	buf += sprintf(buf, "\t{\n");	if(OE)	{		buf += sprintf(buf, "\tSET_XER_OV;\n");		buf += sprintf(buf, "\tSET_XER_SO;\n");	}	buf += sprintf(buf, "\t}\n");	buf += sprintf(buf, "\telse\n");	buf += sprintf(buf, "\t{\n");	buf += sprintf(buf, "\t\tword_t result = a / b;\n");	buf += sprintf(buf, "\t\tGPR(%u) = result;\n", RD);	if(OE) buf += sprintf(buf, "\t\tRESET_XER_OV;\n");	if(Rc) buf += sprintf(buf, "\t\tCOMPUTE_CR0(result);\n");	buf += sprintf(buf, "\t}\n");	return buf;}char *mulhwx_bin2c(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "\tsdword_t a = (sword_t) GPR(%u);\n", RA);	buf += sprintf(buf, "\tsdword_t b = (sword_t) GPR(%u);\n", RB);	buf += sprintf(buf, "\tsdword_t result = a * b;\n");	buf += sprintf(buf, "\tresult = (result >> 32);\n");	buf += sprintf(buf, "\tGPR(%u) = (sword_t) result;\n", RD);	if(Rc) buf += sprintf(buf, "\tCOMPUTE_CR0(result);\n");	return buf;}char *mulhwux_bin2c(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "\tdword_t a = GPR(%u);\n", RA);	buf += sprintf(buf, "\tdword_t b = GPR(%u);\n", RB);	buf += sprintf(buf, "\tdword_t result = a * b;\n");	buf += sprintf(buf, "\tresult = (result >> 32);\n");	buf += sprintf(buf, "\tGPR(%u) = (word_t) result;\n", RD);	if(Rc) buf += sprintf(buf, "\tCOMPUTE_CR0(result);\n");	return buf;}char *mullwx_bin2c(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "\tsword_t a = GPR(%u);\n", RA);	buf += sprintf(buf, "\tsword_t b = GPR(%u);\n", RB);	buf += sprintf(buf, "\tsdword_t result = a * b;\n");	buf += sprintf(buf, "\tGPR(%u) = (sword_t)(result & 0x00000000ffffffff);\n", RD);	if(OE)	{		buf += sprintf(buf, "\tif(result & 0xffffffff00000000)\n");		buf += sprintf(buf, "\t{\n");		buf += sprintf(buf, "\t\tSET_XER_OV;\n");		buf += sprintf(buf, "\t\tSET_XER_SO;\n");		buf += sprintf(buf, "\t}\n");		buf += sprintf(buf, "\telse\n");		buf += sprintf(buf, "\t{\n");		buf += sprintf(buf, "\t\tRESET_XER_SO;\n");		buf += sprintf(buf, "\t}\n");	}	if(Rc) buf += sprintf(buf, "\tCOMPUTE_CR0(result);\n");	return buf;}char *negx_bin2c(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "\tword_t result = -GPR(%u);\n", RA);	buf += sprintf(buf, "\tGPR(%u) = result;\n", RD);	if(OE)	{		buf += sprintf(buf, "\tif(GPR(%u) == 0x80000000)\n", RA);		buf += sprintf(buf, "\t{\n");		buf += sprintf(buf, "\t\tSET_XER_OV;\n");		buf += sprintf(buf, "\t\tSET_XER_SO;\n");		buf += sprintf(buf, "\t}\n");		buf += sprintf(buf, "\telse\n");		buf += sprintf(buf, "\t{\n");		buf += sprintf(buf, "\t\tRESET_XER_OV;\n");		buf += sprintf(buf, "\t}\n");	}		if(Rc) buf += sprintf(buf, "\tCOMPUTE_CR0(result);\n");	return buf;}char *subfx_bin2c(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "\tword_t a = GPR(%u);\n", RA);	buf += sprintf(buf, "\tword_t b = GPR(%u);\n", RB);	buf += sprintf(buf, "\tword_t result = b - a;\n");		buf += sprintf(buf, "\tGPR(%u) = result;\n", RD);			if(OE)	{		buf += sprintf(buf, "\tif(Underflow(b, a))\n");		buf += sprintf(buf, "\t{\n");		buf += sprintf(buf, "\t\tSET_XER_OV;\n");		buf += sprintf(buf, "\t\tSET_XER_SO;\n");		buf += sprintf(buf, "\t}\n");		buf += sprintf(buf, "\telse\n");		buf += sprintf(buf, "\t{\n");		buf += sprintf(buf, "\t\tRESET_XER_OV;\n");		buf += sprintf(buf, "\t}\n");	}			if(Rc) buf += sprintf(buf, "\tCOMPUTE_CR0(result);\n");	return buf;}char *subfcx_bin2c(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "\tword_t a = GPR(%u);\n", RA);	buf += sprintf(buf, "\tword_t b = GPR(%u);\n", RB);	buf += sprintf(buf, "\tword_t result = b - a;\n");		buf += sprintf(buf, "\tGPR(%u) = result;\n", RD);		buf += sprintf(buf, "\tif(a == 0 || Carry(b, -a)) SET_XER_CA; else RESET_XER_CA;\n");			if(OE)	{		buf += sprintf(buf, "\tif(Underflow(b, a))\n");		buf += sprintf(buf, "\t{\n");		buf += sprintf(buf, "\t\tSET_XER_OV;\n");		buf += sprintf(buf, "\t\tSET_XER_SO;\n");		buf += sprintf(buf, "\t}\n");		buf += sprintf(buf, "\telse\n");		buf += sprintf(buf, "\t\n");		buf += sprintf(buf, "\t\tRESET_XER_OV;\n");		buf += sprintf(buf, "\t}\n");	}			if(Rc) buf += sprintf(buf, "\tCOMPUTE_CR0(result);\n");	return buf;}char *subfex_bin2c(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "\tword_t a = ~GPR(%u);\n", RA);	buf += sprintf(buf, "\tword_t b = GPR(%u);\n", RB);	buf += sprintf(buf, "\tword_t c = XER_CA;\n");	buf += sprintf(buf, "\tword_t result = a + b + c;\n");		buf += sprintf(buf, "\tGPR(%u) = result;\n", RD);		buf += sprintf(buf, "\tif(Carry(a, b) || Carry(a + b, c)) SET_XER_CA; else RESET_XER_CA;\n");			if(OE)	{		buf += sprintf(buf, "\tif(Overflow(b, a) || Overflow(b + a, c))\n");		buf += sprintf(buf, "\t{\n");		buf += sprintf(buf, "\t\tSET_XER_OV;\n");		buf += sprintf(buf, "\t\tSET_XER_SO;\n");		buf += sprintf(buf, "\t}\n");		buf += sprintf(buf, "\telse\n");		buf += sprintf(buf, "\t{\n");		buf += sprintf(buf, "\t\tRESET_XER_OV;\n");		buf += sprintf(buf, "\t}\n");	}			if(Rc) buf += sprintf(buf, "\tCOMPUTE_CR0(result);\n");	return buf;}char *subfmex_bin2c(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "\tword_t a = ~GPR(%u);\n", RA);	buf += sprintf(buf, "\tword_t c = XER_CA;\n");	buf += sprintf(buf, "\tword_t result = a + c - 1;\n");		buf += sprintf(buf, "\tGPR(%u) = result;\n", RD);		buf += sprintf(buf, "\tif(Carry(a, c - 1)) SET_XER_CA; else RESET_XER_CA;\n");			if(OE)	{		buf += sprintf(buf, "\tif(Overflow(a, c - 1))\n");		buf += sprintf(buf, "\t{\n");		buf += sprintf(buf, "\t\tSET_XER_OV;\n");		buf += sprintf(buf, "\t\tSET_XER_SO;\n");		buf += sprintf(buf, "\t}\n");		buf += sprintf(buf, "\telse\n");		buf += sprintf(buf, "\t{\n");		buf += sprintf(buf, "\t\tRESET_XER_OV;\n");		buf += sprintf(buf, "\t}\n");	}			if(Rc) buf += sprintf(buf, "\tCOMPUTE_CR0(result);\n");	return buf;}char *subfzex_bin2c(ppc_inst_t inst, addr_t pc, char *buf){	buf += sprintf(buf, "\tword_t a = ~GPR(%u);\n", RA);	buf += sprintf(buf, "\tword_t c = XER_CA;\n");	buf += sprintf(buf, "\tword_t result = a + c;\n");		buf += sprintf(buf, "\tGPR(%u) = result;\n", RD);		buf += sprintf(buf, "\tif(Carry(a, c)) SET_XER_CA; else RESET_XER_CA;\n");			if(OE)	{		buf += sprintf(buf, "\tif(Overflow(a, c))\n");		buf += sprintf(buf, "\t{\n");		buf += sprintf(buf, "\t\tSET_XER_OV;\n");		buf += sprintf(buf, "\t\tSET_XER_SO;\n");		buf += sprintf(buf, "\t}\n");		buf += sprintf(buf, "\telse\n");		buf += sprintf(buf, "\t{\n");		buf += sprintf(buf, "\t\tRESET_XER_OV;\n");		buf += sprintf(buf, "\t}\n");	}			if(Rc) buf += sprintf(buf, "\tCOMPUTE_CR0(result);\n");	return buf;}char *addi_disasm(ppc_inst_t inst, addr_t pc, char *buf) {	buf += sprintf(buf, "addi r%u, r%u, %d", RD, RA, SEXT16(IMM)); return buf; }char *addic_disasm(ppc_inst_t inst, addr_t pc, char *buf) {	buf += sprintf(buf, "addic r%u, r%u, %d", RD, RA, SEXT16(IMM)); return buf; }char *addicd_disasm(ppc_inst_t inst, addr_t pc, char *buf) { buf += sprintf(buf, "addic. r%u, r%u, %d", RD, RA, SEXT16(IMM)); return buf; }char *addis_disasm(ppc_inst_t inst, addr_t pc, char *buf) {	 buf += sprintf(buf, "addis r%u, r%u, %d", RD, RA, SEXT16(IMM)); return buf; }char *andid_disasm(ppc_inst_t inst, addr_t pc, char *buf) {	 buf += sprintf(buf, "andi. r%u, r%u, %u", RA, RS, IMM); return buf; }char *andisd_disasm(ppc_inst_t inst, addr_t pc, char *buf) { buf += sprintf(buf, "andis. r%u, r%u, %u", RA, RS, IMM); return buf; }char *cmpi_disasm(ppc_inst_t inst, addr_t pc, char *buf) { buf += sprintf(buf, "cmpi cr%u, %u, r%u, %d", CRFD, L, RA, SEXT16(IMM)); return buf; }char *cmpli_disasm(ppc_inst_t inst, addr_t pc, char *buf) { buf += sprintf(buf, "cmpli cr%u, %u, r%u, %u", CRFD, L, RA, IMM); return buf; }char *mulli_disasm(ppc_inst_t inst, addr_t pc, char *buf) { buf += sprintf(buf, "mulli r%u, r%u, %d", RD, RA, SEXT16(IMM)); return buf; }char *ori_disasm(ppc_inst_t inst, addr_t pc, char *buf) { buf += sprintf(buf, "ori r%u, r%u, %d", RA, RS, SEXT16(IMM)); return buf; }char *oris_disasm(ppc_inst_t inst, addr_t pc, char *buf) { buf += sprintf(buf, "oris r%u, r%u, %u", RA, RS, IMM); return buf; }char *subfic_disasm(ppc_inst_t inst, addr_t pc, char *buf) { buf += sprintf(buf, "subfic r%u, r%u, %d", RD, RA, SEXT16(IMM)); return buf; }char *twi_disasm(ppc_inst_t inst, addr_t pc, char *buf) { buf += sprintf(buf, "twi %u, r%u, %d", TO, RA, SEXT16(IMM)); return buf; }

⌨️ 快捷键说明

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