📄 integer.c
字号:
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 + -