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 + -
显示快捷键?