loadstore.c
来自「ppc750 system design simulator using sys」· C语言 代码 · 共 1,959 行 · 第 1/5 页
C
1,959 行
{ addr_t ea = EA_X; MEM_WRITE_WORD_BYTE_REVERSE(ea, GPR(RS));}void stwcxd_impl(ppc_inst_t inst) { abort(); }void stwux_impl(ppc_inst_t inst){ addr_t ea = EA_UX; MEM_WRITE_WORD(ea, GPR(RS)); GPR(RA) = ea;}void stwx_impl(ppc_inst_t inst){ addr_t ea = EA_X; MEM_WRITE_WORD(ea, GPR(RS));}void tlbia_impl(ppc_inst_t inst) { abort(); }void tlbie_impl(ppc_inst_t inst) { abort(); }void tlbsync_impl(ppc_inst_t inst) { abort(); }char *lbz_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ if(RA) buf += sprintf(buf, "\taddr_t ea = GPR(%u) + (%d);\n", RA, SEXT16(OFS)); else buf += sprintf(buf, "\taddr_t ea = %d;\n", SEXT16(OFS)); buf += sprintf(buf, "\tbyte_t result = MEM_READ_BYTE(ea);\n"); buf += sprintf(buf, "\tGPR(%u) = (word_t) result;\n", RD); return buf;} char *lbzu_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "\taddr_t ea = GPR(%u) + (%d);\n", RA, SEXT16(OFS)); buf += sprintf(buf, "\tbyte_t result = MEM_READ_BYTE(ea);\n"); buf += sprintf(buf, "\tGPR(%u) = (word_t) result;\n", RD); buf += sprintf(buf, "\tGPR(%u) = ea;\n", RA); return buf;}char *lfd_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ if(RA) buf += sprintf(buf, "\taddr_t ea = GPR(%u) + (%d);\n", RA, SEXT16(OFS)); else buf += sprintf(buf, "\taddr_t ea = %d;\n", SEXT16(OFS)); buf += sprintf(buf, "\tdword_t result = MEM_READ_DWORD(ea);\n"); buf += sprintf(buf, "\tFPR_DW(%u) = result;\n", FD); return buf;}char *lfdu_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "\taddr_t ea = GPR(%u) + (%d);\n", RA, SEXT16(OFS)); buf += sprintf(buf, "\tdword_t result = MEM_READ_DWORD(ea);\n"); buf += sprintf(buf, "\tFPR_DW(%u) = result;\n", FD); buf += sprintf(buf, "\tGPR(%u) = ea;\n", RA); return buf;}char *lfs_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ if(RA) buf += sprintf(buf, "\taddr_t ea = GPR(%u) + (%d);\n", RA, SEXT16(OFS)); else buf += sprintf(buf, "\taddr_t ea = %d;\n", SEXT16(OFS)); buf += sprintf(buf, "\tword_t result = MEM_READ_WORD(ea);\n"); buf += sprintf(buf, "\tFPR_DBL(%u) = (double) *(float *) &result;\n", FD); return buf;}char *lfsu_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "\taddr_t ea = GPR(%u) + (%d);\n", RA, SEXT16(OFS)); buf += sprintf(buf, "\tword_t result = MEM_READ_WORD(ea);\n"); buf += sprintf(buf, "\tFPR_DBL(%u) = (double) *(float *) &result;\n", FD); buf += sprintf(buf, "\tGPR(%u) = ea;\n", RA); return buf;}char *lha_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ if(RA) buf += sprintf(buf, "\taddr_t ea = GPR(%u) + (%d);\n", RA, SEXT16(OFS)); else buf += sprintf(buf, "\taddr_t ea = %d;\n", SEXT16(OFS)); buf += sprintf(buf, "\tshalfword_t result = (shalfword_t) MEM_READ_HALF_WORD(ea);\n"); buf += sprintf(buf, "\tGPR(%u) = SEXT16(result);\n", RD); return buf;}char *lhau_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "\taddr_t ea = GPR(%u) + (%d);\n", RA, SEXT16(OFS)); buf += sprintf(buf, "\tshalfword_t result = (shalfword_t) MEM_READ_HALF_WORD(ea);\n"); buf += sprintf(buf, "\tGPR(%u) = SEXT16(result);\n", RD); buf += sprintf(buf, "\tGPR(%u) = ea;\n", RA); return buf;}char *lhz_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ if(RA) buf += sprintf(buf, "\taddr_t ea = GPR(%u) + (%d);\n", RA, SEXT16(OFS)); else buf += sprintf(buf, "\taddr_t ea = %d;\n", SEXT16(OFS)); buf += sprintf(buf, "\thalfword_t result = MEM_READ_HALF_WORD(ea);\n"); buf += sprintf(buf, "\tGPR(%u) = (word_t) result;\n", RD); return buf;}char *lhzu_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "\taddr_t ea = GPR(%u) + (%d);\n", RA, SEXT16(OFS)); buf += sprintf(buf, "\thalfword_t result = MEM_READ_HALF_WORD(ea);\n"); buf += sprintf(buf, "\tGPR(%u) = (word_t) result;\n", RD); buf += sprintf(buf, "\tGPR(%u) = ea;\n", RA); return buf;}char *lmw_bin2c(ppc_inst_t inst, addr_t pc, char *buf) { buf += sprintf(buf, "\tabort();\n"); return buf; }char *lwz_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ if(RA) buf += sprintf(buf, "\taddr_t ea = GPR(%u) + (%d);\n", RA, SEXT16(OFS)); else buf += sprintf(buf, "\taddr_t ea = %d;\n", SEXT16(OFS)); buf += sprintf(buf, "\tword_t result = MEM_READ_WORD(ea);\n"); buf += sprintf(buf, "\tGPR(%u) = (word_t) result;\n", RD); return buf;}char *lwzu_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "\taddr_t ea = GPR(%u) + (%d);\n", RA, SEXT16(OFS)); buf += sprintf(buf, "\tword_t result = MEM_READ_WORD(ea);\n"); buf += sprintf(buf, "\tGPR(%u) = (word_t) result;\n", RD); buf += sprintf(buf, "\tGPR(%u) = ea;\n", RA); return buf;}char *stb_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ if(RA) buf += sprintf(buf, "\taddr_t ea = GPR(%u) + (%d);\n", RA, SEXT16(OFS)); else buf += sprintf(buf, "\taddr_t ea = %d;\n", SEXT16(OFS)); buf += sprintf(buf, "\tMEM_WRITE_BYTE(ea, GPR(%u));\n", RS); return buf;}char *stbu_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "\taddr_t ea = GPR(%u) + (%d);\n", RA, SEXT16(OFS)); buf += sprintf(buf, "\tMEM_WRITE_BYTE(ea, GPR(%u));\n", RS); buf += sprintf(buf, "\tGPR(%u) = ea;\n", RA); return buf;}char *stfd_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ if(RA) buf += sprintf(buf, "\taddr_t ea = GPR(%u) + (%d);\n", RA, SEXT16(OFS)); else buf += sprintf(buf, "\taddr_t ea = %d;\n", SEXT16(OFS)); buf += sprintf(buf, "\tMEM_WRITE_DWORD(ea, FPR_DW(%u));\n", FS); return buf;}char *stfdu_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "\taddr_t ea = GPR(%u) + (%d);\n", RA, SEXT16(OFS)); buf += sprintf(buf, "\tMEM_WRITE_DWORD(ea, FPR_DW(%u));\n", FS); buf += sprintf(buf, "\tGPR(%u) = ea;\n", RA); return buf;}char *stfs_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ if(RA) buf += sprintf(buf, "\taddr_t ea = GPR(%u) + (%d);\n", RA, SEXT16(OFS)); else buf += sprintf(buf, "\taddr_t ea = %d;\n", SEXT16(OFS)); buf += sprintf(buf, "\tfloat tmp = (float) FPR_DBL(%u);\n", FS); buf += sprintf(buf, "\tMEM_WRITE_WORD(ea, *(word_t *) &tmp);\n"); return buf;}char *stfsu_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "\taddr_t ea = GPR(%u) + (%d);\n", RA, SEXT16(OFS)); buf += sprintf(buf, "\tfloat tmp = (float) FPR_DBL(%u);\n", FS); buf += sprintf(buf, "\tMEM_WRITE_WORD(ea, *(word_t *) &tmp);\n"); buf += sprintf(buf, "\tGPR(%u) = ea;\n", RA); return buf;}char *sth_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ if(RA) buf += sprintf(buf, "\taddr_t ea = GPR(%u) + (%d);\n", RA, SEXT16(OFS)); else buf += sprintf(buf, "\taddr_t ea = %d;\n", SEXT16(OFS)); buf += sprintf(buf, "\tMEM_WRITE_HALF_WORD(ea, GPR(%u));\n", RS); return buf;}char *sthu_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "\taddr_t ea = GPR(%u) + (%d);\n", RA, SEXT16(OFS)); buf += sprintf(buf, "\tMEM_WRITE_HALF_WORD(ea, GPR(%u));\n", RS); buf += sprintf(buf, "\tGPR(%u) = ea;\n", RA); return buf;}char *stmw_bin2c(ppc_inst_t inst, addr_t pc, char *buf) { buf += sprintf(buf, "\tabort();\n"); return buf; }char *stw_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ if(RA) buf += sprintf(buf, "\taddr_t ea = GPR(%u) + (%d);\n", RA, SEXT16(OFS)); else buf += sprintf(buf, "\taddr_t ea = %d;\n", SEXT16(OFS)); buf += sprintf(buf, "\tMEM_WRITE_WORD(ea, GPR(%u));\n", RS); return buf;}char *stwu_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "\taddr_t ea = GPR(%u) + (%d);\n", RA, SEXT16(OFS)); buf += sprintf(buf, "\tMEM_WRITE_WORD(ea, GPR(%u));\n", RS); buf += sprintf(buf, "\tGPR(%u) = ea;\n", RA); return buf;}char *dcba_bin2c(ppc_inst_t inst, addr_t pc, char *buf) { buf += sprintf(buf, "\tabort();\n"); return buf; }char *dcbf_bin2c(ppc_inst_t inst, addr_t pc, char *buf) { buf += sprintf(buf, "\tabort();\n"); return buf; }char *dcbi_bin2c(ppc_inst_t inst, addr_t pc, char *buf) { buf += sprintf(buf, "\tabort();\n"); return buf; }char *dcbst_bin2c(ppc_inst_t inst, addr_t pc, char *buf) { buf += sprintf(buf, "\tabort();\n"); return buf; }char *dcbt_bin2c(ppc_inst_t inst, addr_t pc, char *buf) { buf += sprintf(buf, "\tabort();\n"); return buf; }char *dcbtst_bin2c(ppc_inst_t inst, addr_t pc, char *buf) { buf += sprintf(buf, "\tabort();\n"); return buf; }char *dcbz_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ if(RA) buf += sprintf(buf, "\taddr_t ea = GPR(%u) + GPR(%u);\n", RA, RB); else buf += sprintf(buf, "\taddr_t ea = GPR(%u);\n", RB); buf += sprintf(buf, "\tMEM_SET(ea - (ea %% 32), 0, 32);\n"); return buf;}char *eciwx_bin2c(ppc_inst_t inst, addr_t pc, char *buf) { buf += sprintf(buf, "\tabort();\n"); return buf; }char *ecowx_bin2c(ppc_inst_t inst, addr_t pc, char *buf) { buf += sprintf(buf, "\tabort();\n"); return buf; }char *eieio_bin2c(ppc_inst_t inst, addr_t pc, char *buf) { buf += sprintf(buf, "\tabort();\n"); return buf; }char *icbi_bin2c(ppc_inst_t inst, addr_t pc, char *buf) { buf += sprintf(buf, "\tabort();\n"); return buf; }char *lbzux_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "\taddr_t ea = GPR(%u) + GPR(%u);\n", RA, RB); buf += sprintf(buf, "\tbyte_t result = MEM_READ_BYTE(ea);\n"); buf += sprintf(buf, "\tGPR(%u) = (word_t) result;\n", RD); buf += sprintf(buf, "\tGPR(%u) = ea;\n", RA); return buf;}char *lbzx_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ if(RA) buf += sprintf(buf, "\taddr_t ea = GPR(%u) + GPR(%u);\n", RA, RB); else buf += sprintf(buf, "\taddr_t ea = GPR(%u);\n", RB); buf += sprintf(buf, "\tbyte_t result = MEM_READ_BYTE(ea);\n"); buf += sprintf(buf, "\tGPR(%u) = (word_t) result;\n", RD); return buf;}char *lfdux_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "\taddr_t ea = GPR(%u) + GPR(%u);\n", RA, RB); buf += sprintf(buf, "\tdword_t result = MEM_READ_DWORD(ea);\n"); buf += sprintf(buf, "\tFPR_DW(%u) = result;\n", FD); buf += sprintf(buf, "\tGPR(%u) = ea;\n", RA); return buf;}char *lfdx_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ if(RA) buf += sprintf(buf, "\taddr_t ea = GPR(%u) + GPR(%u);\n", RA, RB); else buf += sprintf(buf, "\taddr_t ea = GPR(%u);\n", RB); buf += sprintf(buf, "\tdword_t result = MEM_READ_DWORD(ea);\n"); buf += sprintf(buf, "\tFPR_DW(%u) = result;\n", FD); return buf;}char *lfsux_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "\taddr_t ea = GPR(%u) + GPR(%u);\n", RA, RB); buf += sprintf(buf, "\tword_t result = MEM_READ_WORD(ea);\n"); buf += sprintf(buf, "\tFPR_DBL(%u) = (double) *(float *) &result;\n", FD); buf += sprintf(buf, "\tGPR(%u) = ea;\n", RA); return buf;}char *lfsx_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ if(RA) buf += sprintf(buf, "\taddr_t ea = GPR(%u) + GPR(%u);\n", RA, RB); else buf += sprintf(buf, "\taddr_t ea = GPR(%u);\n", RB); buf += sprintf(buf, "\tword_t result = MEM_READ_WORD(ea);\n"); buf += sprintf(buf, "\tFPR_DBL(%u) = (double) *(float *) &result;\n", FD); return buf;}char *lhaux_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "\taddr_t ea = GPR(%u) + GPR(%u);\n", RA, RB); buf += sprintf(buf, "\tshalfword_t result = (shalfword_t) MEM_READ_HALF_WORD(ea);\n"); buf += sprintf(buf, "\tGPR(%u) = SEXT16(result);\n", RD); buf += sprintf(buf, "\tGPR(%u) = ea;\n", RA); return buf;}char *lhax_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ if(RA) buf += sprintf(buf, "\taddr_t ea = GPR(%u) + GPR(%u);\n", RA, RB); else buf += sprintf(buf, "\taddr_t ea = GPR(%u);\n", RB); buf += sprintf(buf, "\tshalfword_t result = (shalfword_t) MEM_READ_HALF_WORD(ea);\n"); buf += sprintf(buf, "\tGPR(%u) = SEXT16(result);\n", RD); return buf;}char *lhbrx_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ if(RA) buf += sprintf(buf, "\taddr_t ea = GPR(%u) + GPR(%u);\n", RA, RB); else buf += sprintf(buf, "\taddr_t ea = GPR(%u);\n", RB); buf += sprintf(buf, "\thalfword_t result = MEM_READ_HALF_WORD_BYTE_REVERSE(ea);\n"); buf += sprintf(buf, "\tGPR(%u) = (word_t) result;\n", RD); return buf;}char *lhzux_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ buf += sprintf(buf, "\taddr_t ea = GPR(%u) + GPR(%u);\n", RA, RB); buf += sprintf(buf, "\thalfword_t result = MEM_READ_HALF_WORD(ea);\n"); buf += sprintf(buf, "\tGPR(%u) = (word_t) result;\n", RD); buf += sprintf(buf, "\tGPR(%u) = ea;\n", RA); return buf;}char *lhzx_bin2c(ppc_inst_t inst, addr_t pc, char *buf){ if(RA) buf += sprintf(buf, "\taddr_t ea = GPR(%u) + GPR(%u);\n", RA, RB); else buf += sprintf(buf, "\taddr_t ea = GPR(%u);\n", RB);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?