📄 mpc.c
字号:
/********************************************************************/
static void
func20b (unsigned int opword)
{
/*
* Ex: lhau rD,d(rA), where EA = (rA) + (d)
*/
int d, rA;
insn_rD_d_rA(opword, &d, &rA);
append_ea_rA_d(dstr, d, rA);
}
/********************************************************************/
static void
func20c (unsigned int opword)
{
/*
* Ex: lbzx rD,rA,rB, where EA = (rA|0)+rB
*/
int rA, rB;
insn_rD_rA_rB(opword, &rA, &rB);
append_ea_rA_0_rB(dstr, rA, rB);
}
/********************************************************************/
static void
func20d (unsigned int opword)
{
/*
* Ex: lbzx rD,rA,rB, where EA = (rA) + (rB)
*/
int rA, rB;
insn_rD_rA_rB(opword, &rA, &rB);
append_ea_rA_rB(dstr, rA, rB);
}
/********************************************************************/
static void
insn_frD_d_rA (unsigned int opword, int *d, int *rA)
{
/*
* Ex: lfd frD,d(rA)
*/
char valstr[10];
int disp;
disp = opword & 0x0000FFFF;
if (disp & 0x00008000)
{
disp = disp | 0xFFFF0000;
}
sprintf(valstr,"%d",disp);
*d = disp;
append_register(dstr,opword,REG_FLOAT,6);
append_string(dstr,COMMA);
append_string(dstr,valstr);
append_string(dstr,"(");
*rA = append_register(dstr,opword,REG_INT,11);
append_string(dstr,")");
}
/********************************************************************/
static void
insn_frD_rA_rB (unsigned int opword, int *rA, int *rB)
{
/*
* Ex: lfdux frD,rA,rB
*/
append_register(dstr,opword,REG_FLOAT,6);
append_string(dstr,COMMA);
*rA = append_register(dstr,opword,REG_INT,11);
append_string(dstr,COMMA);
*rB = append_register(dstr,opword,REG_INT,16);
}
/********************************************************************/
static void
func21a (unsigned int opword)
{
/*
* Ex: lfd frD,d(rA), where EA = (rA|0) + d
*/
int d, rA;
insn_frD_d_rA(opword, &d, &rA);
append_ea_rA_0_d(dstr, d, rA);
}
/********************************************************************/
static void
func21b (unsigned int opword)
{
/*
* Ex: lfd frD,d(rA), where EA = (rA) + d
*/
int d, rA;
insn_frD_d_rA(opword, &d, &rA);
append_ea_rA_d(dstr, d, rA);
}
/********************************************************************/
static void
func21c (unsigned int opword)
{
/*
* Ex: lfdx frD,rA,rB where EA = (rA|0) + rB
*/
int rA, rB;
insn_frD_rA_rB(opword, &rA, &rB);
append_ea_rA_0_rB(dstr, rA, rB);
}
/********************************************************************/
static void
func21d (unsigned int opword)
{
/*
* Ex: lfdux frD,rA),rB where EA = (rA) + (rB)
*/
int rA, rB;
insn_frD_rA_rB(opword, &rA, &rB);
append_ea_rA_rB(dstr, rA, rB);
}
/********************************************************************/
static void
func23 (unsigned int opword)
{
int nb;
char nbstr[10];
nb = ((opword & 0x0000F800) >> 11);
if (nb == 0)
{
nb = 32;
}
sprintf(nbstr,"%d",nb);
append_register(dstr,opword,REG_INT,6);
append_string(dstr,COMMA);
append_register(dstr,opword,REG_INT,11);
append_string(dstr,COMMA);
append_string(dstr,nbstr);
}
/********************************************************************/
static void
func24 (unsigned int opword)
{
append_Xbit_number(dstr,opword,3,6);
append_string(dstr,COMMA);
append_Xbit_number(dstr,opword,3,11);
}
/********************************************************************/
static void
func25 (unsigned int opword)
{
append_Xbit_number(dstr,opword,3,6);
}
/********************************************************************/
static void
func26 (unsigned int opword)
{
append_register(dstr,opword,REG_INT,6);
}
/********************************************************************/
static void
func27 (unsigned int opword)
{
append_register(dstr,opword,REG_FLOAT,6);
}
/********************************************************************/
static void
func28 (unsigned int opword)
{
unsigned int opw1, opw2;
/* the SPR field is split, knock it out and put it together */
/* as a single 10-bit field. */
opw1 = (opword & 0x001F0000) >> 16;
opw2 = (opword & 0x0000F800) >> 6;
opw1 = opw1 | opw2;
if (((opword & 0x000007FE) >> 1) == 339) /* mfspr */
{
append_register(dstr,opword,REG_INT,6);
append_string(dstr,COMMA);
}
switch (opw1)
{
#if (defined(MPC602) || defined(MPC603) || defined(MPC604))
case 1:
append_string(dstr,"XER");
break;
case 8:
append_string(dstr,"LR");
break;
case 9:
append_string(dstr,"CTR");
break;
case 18:
append_string(dstr,"DSISR");
break;
case 19:
append_string(dstr,"DAR");
break;
case 22:
append_string(dstr,"DEC");
break;
case 25:
append_string(dstr,"SDR1");
break;
case 26:
append_string(dstr,"SRR0");
break;
case 27:
append_string(dstr,"SRR1");
break;
case 268:
case 284:
append_string(dstr,"TBL");
break;
case 269:
case 285:
append_string(dstr,"TBU");
break;
case 272:
append_string(dstr,"SPRG0");
break;
case 273:
append_string(dstr,"SPRG1");
break;
case 274:
append_string(dstr,"SPRG2");
break;
case 275:
append_string(dstr,"SPRG3");
break;
case 282:
append_string(dstr,"EAR");
break;
case 287:
append_string(dstr,"PVR");
break;
case 528:
append_string(dstr,"IBAT0U");
break;
case 529:
append_string(dstr,"IBAT0L");
break;
case 530:
append_string(dstr,"IBAT1U");
break;
case 531:
append_string(dstr,"IBAT1L");
break;
case 532:
append_string(dstr,"IBAT2U");
break;
case 533:
append_string(dstr,"IBAT2L");
break;
case 534:
append_string(dstr,"IBAT3U");
break;
case 535:
append_string(dstr,"IBAT3L");
break;
case 536:
append_string(dstr,"DBAT0U");
break;
case 537:
append_string(dstr,"DBAT0L");
break;
case 538:
append_string(dstr,"DBAT1U");
break;
case 539:
append_string(dstr,"DBAT1L");
break;
case 540:
append_string(dstr,"DBAT2U");
break;
case 541:
append_string(dstr,"DBAT2L");
break;
case 542:
append_string(dstr,"DBAT3U");
break;
case 543:
append_string(dstr,"DBAT3L");
break;
#endif
#if (defined(MPC602))
case 976:
append_string(dstr,"DMISS");
break;
case 977:
append_string(dstr,"DCMP");
break;
case 978:
append_string(dstr,"HASH1");
break;
case 979:
append_string(dstr,"HASH2");
break;
case 980:
append_string(dstr,"IMISS");
break;
case 981:
append_string(dstr,"ICMP");
break;
case 982:
append_string(dstr,"RPA");
break;
case 984:
append_string(dstr,"TCR");
break;
case 986:
append_string(dstr,"IBR");
break;
case 987:
append_string(dstr,"ESASRR");
break;
case 990:
append_string(dstr,"SEBR");
break;
case 991:
append_string(dstr,"SER");
break;
case 1008:
append_string(dstr,"HID0");
break;
case 1009:
append_string(dstr,"HID1");
break;
case 1010:
append_string(dstr,"IABR");
break;
case 1021:
append_string(dstr,"SP");
break;
case 1022:
append_string(dstr,"LT");
break;
#endif
#if (defined(MPC603))
case 976:
append_string(dstr,"DMISS");
break;
case 977:
append_string(dstr,"DCMP");
break;
case 978:
append_string(dstr,"HASH1");
break;
case 979:
append_string(dstr,"HASH2");
break;
case 980:
append_string(dstr,"IMISS");
break;
case 981:
append_string(dstr,"ICMP");
break;
case 982:
append_string(dstr,"RPA");
break;
case 1008:
append_string(dstr,"HID0");
break;
case 1009:
append_string(dstr,"HID1");
break;
case 1010:
append_string(dstr,"IABR");
break;
#endif
#if (defined(MPC821) || defined(MPC823) || defined(MPC850) || defined(MPC860))
case 1:
append_string(dstr,"XER");
break;
case 8:
append_string(dstr,"LR");
break;
case 9:
append_string(dstr,"CTR");
break;
case 18:
append_string(dstr,"DSISR");
break;
case 19:
append_string(dstr,"DAR");
break;
case 22:
append_string(dstr,"DEC");
break;
case 26:
append_string(dstr,"SRR0");
break;
case 27:
append_string(dstr,"SRR1");
break;
case 80:
append_string(dstr,"EIE");
break;
case 81:
append_string(dstr,"EID");
break;
case 82:
append_string(dstr,"NRI");
break;
case 144:
append_string(dstr,"CMPA");
break;
case 145:
append_string(dstr,"CMPB");
break;
case 146:
append_string(dstr,"CMPC");
break;
case 147:
append_string(dstr,"CMPD");
break;
case 148:
append_string(dstr,"ICR");
break;
case 149:
append_string(dstr,"DER");
break;
case 150:
append_string(dstr,"COUNTA");
break;
case 151:
append_string(dstr,"COUNTB");
break;
case 152:
append_string(dstr,"CMPE");
break;
case 153:
append_string(dstr,"CMPF");
break;
case 154:
append_string(dstr,"CMPG");
break;
case 155:
append_string(dstr,"CMPH");
break;
case 156:
append_string(dstr,"LCTRL1");
break;
case 157:
append_string(dstr,"LCTRL2");
break;
case 158:
append_string(dstr,"ICTRL");
break;
case 159:
append_string(dstr,"BAR");
break;
case 272:
append_string(dstr,"SPRG0");
break;
case 273:
append_string(dstr,"SPRG1");
break;
case 274:
append_string(dstr,"SPRG2");
break;
case 275:
append_string(dstr,"SPRG3");
break;
case 268:
case 284:
append_string(dstr,"TBL");
break;
case 269:
case 285:
append_string(dstr,"TBU");
break;
case 287:
append_string(dstr,"PVR");
break;
case 560:
append_string(dstr,"IC_CST");
break;
case 561:
append_string(dstr,"IC_ADR");
break;
case 562:
append_string(dstr,"IC_DAT");
break;
case 568:
append_string(dstr,"DC_CST");
break;
case 569:
append_string(dstr,"DC_ADR");
break;
case 570:
append_string(dstr,"DC_DAT");
break;
case 630:
append_string(dstr,"DPDR");
break;
case 631:
append_string(dstr,"DPIR");
break;
case 638:
append_string(dstr,"IMMR");
break;
case 784:
append_string(dstr,"MI_CTR");
break;
case 786:
append_string(dstr,"MI_AP");
break;
case 787:
append_string(dstr,"MI_EPN");
break;
case 789:
append_string(dstr,"MI_TWC");
break;
case 790:
append_string(dstr,"MI_RPN");
break;
case 792:
append_string(dstr,"MD_CTR");
break;
case 793:
append_string(dstr,"M_CASID");
break;
case 794:
append_string(dstr,"MD_AP");
break;
case 795:
append_string(dstr,"MD_EPN");
break;
case 796:
append_string(dstr,"M_TWB");
break;
case 797:
append_string(dstr,"MD_TWC");
break;
case 798:
append_string(dstr,"MD_RPN");
break;
case 799:
append_string(dstr,"M_TW");
break;
case 816:
append_string(dstr,"MI_DBCAM");
break;
case 817:
append_string(dstr,"MI_DBRAM0");
break;
case 818:
append_string(dstr,"MI_DBRAM1");
break;
case 824:
append_string(dstr,"MD_DBCAM");
break;
case 825:
append_string(dstr,"MD_DBRAM0");
break;
case 826:
append_string(dstr,"MD_DBRAM1");
break;
#endif
#if (defined(MPC555) || defined(MPC556) || defined(MPC565) || defined(MPC566))
case 1:
append_string(dstr,"XER");
break;
case 8:
append_string(dstr,"LR");
break;
case 9:
append_string(dstr,"CTR");
break;
case 18:
append_string(dstr,"DSISR");
break;
case 19:
append_string(dstr,"DAR");
break;
case 22:
append_string(dstr,"DEC");
break;
case 26:
append_string(dstr,"SRR0");
break;
case 27:
append_string(dstr,"SRR1");
break;
case 80:
append_string(dstr,"EIE");
break;
case 81:
append_string(dstr,"EID");
break;
case 82:
append_string(dstr,"NRI");
break;
case 144:
append_string(dstr,"CMPA");
break;
case 145:
append_string(dstr,"CMPB");
break;
case 146:
append_string(dstr,"CMPC");
break;
case 147:
append_string(dstr,"CMPD");
break;
case 148:
append_string(dstr,"ECR");
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -