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

📄 dsmlib.c

📁 VxWorks BSP框架源代码包含头文件和驱动
💻 C
📖 第 1 页 / 共 5 页
字号:
	case itMovep:	    if ((binInst [0] & 0x0040) == 0)		printf ("%x(A%x),D%x\n", binInst [1], binInst [0] & 0x07,			(binInst [0] & 0x0c00) >> 9);	    else		printf ("D%x,%x(A%x)\n", (binInst [0] & 0x0c00) >> 9,			binInst [1], binInst [0] & 0x07);	    break;	case itMovem:	    if ((binInst [0] & 0x0400) == 0)		{		prMovemRegs (binInst [1], (binInst [0] & 0x38) >> 3);		printf (",");		prEffAddr ((binInst [0] & 0x38) >> 3, binInst [0] & 0x7,			    &binInst [2], 0, prtAddress);		printf ("\n");		}	    else		{		prEffAddr ((binInst [0] & 0x38) >> 3, binInst [0] & 0x7,			    &binInst [2], 0, prtAddress);		printf (",");		prMovemRegs (binInst [1], (binInst [0] & 0x38) >> 3);		printf ("\n");		}	    break;	case itMoveq:	    printf ("#%#x,D%x\n", binInst [0] & 0x00ff,		    (binInst [0] & 0x0e00) >> 9);	    break;	case itNbcd:	case itNegx:	case itCpSave:	case itScc:	case itMemShift:	    prEffAddr ((binInst [0] & 0x38) >> 3, binInst [0] & 0x7,			&binInst [1], 0, prtAddress);	    printf ("\n");	    break;	case itCpGen:	case itCpScc:	    prEffAddr ((binInst [0] & 0x38) >> 3, binInst [0] & 0x7,			&binInst [2], 0, prtAddress);	    printf ("\n");	    break;	case itMoveA:	    prEffAddr ((binInst [0] & 0x38) >> 3, binInst [0] & 0x7,		&binInst [1], ((binInst [0] & 0x1000) == 0) ? 4 : 2,		prtAddress);	    printf (",A%x\n", (binInst [0] & 0x0e00) >> 9);	    break;	case itAdda:	    prEffAddr ((binInst [0] & 0x38) >> 3, binInst [0] & 0x7,		&binInst [1], ((binInst [0] & 0x0100) == 0) ? 2 : 4,		prtAddress);	    printf (",A%x\n", (binInst [0] & 0x0e00) >> 9);	    break;	case itCmpm:	    printf ("(A%x)+,(A%x)+\n", (binInst [0] & 0x0007),		(binInst [0] & 0x0e00) >> 9);	    break;	case itOr:	    switch ((binInst [0] & 0x01c0) >> 6)	/* op-mode */		{		case 0:				/* byte, to D reg */		    prEffAddr ((binInst [0] & 0x38) >> 3, binInst [0] & 0x7,			&binInst [1], 1, prtAddress);		    printf (",D%x\n", (binInst [0] & 0x0e00) >> 9);		    break;		case 1:				/* word to D reg */		    prEffAddr ((binInst [0] & 0x38) >> 3, binInst [0] & 0x7,			&binInst [1], 2, prtAddress);		    printf (",D%x\n", (binInst [0] & 0x0e00) >> 9);		    break;		case 2:				/* long, to D reg */		    prEffAddr ((binInst [0] & 0x38) >> 3, binInst [0] & 0x7,			&binInst [1], 4, prtAddress);		    printf (",D%x\n", (binInst [0] & 0x0e00) >> 9);		    break;		case 4:				/* byte, to eff address */		case 5:				/* word, to eff address */		case 6:				/* long, to eff address */		    printf ("D%x,", (binInst [0] & 0x0e00) >> 9);		    prEffAddr ((binInst [0] & 0x38) >> 3, binInst [0] & 0x7,			&binInst [1], 0, prtAddress);		    printf ("\n");		    break;		}	    break;	case itQuick:	    /* If the data field is 0, it really means 8 */	    if ((binInst [0] & 0x0e00) == 0)		printf ("#0x8,");	    else		printf ("#%#x,", (binInst [0] & 0x0e00) >> 9);	    prEffAddr ((binInst [0] & 0x38) >> 3, binInst [0] & 0x7,			&binInst [1], 0, prtAddress);	    printf ("\n");	    break;	case itBcd:	    if ((binInst [0] & 0x0004) == 0)		printf ("D%x,D%x\n", (binInst [0] & 0x0e00) >> 9,				    binInst [0] & 0x0007);	    else		printf ("-(A%x),-(A%x)\n", (binInst [0] & 0x0e00) >> 9,				    binInst [0] & 0x0007);	    break;	case itRegShift:	    if ((binInst [0] & 0x0e20) == 0)		printf ("#0x8,");	    else if ((binInst [0] & 0x0020) == 0)		printf ("#%#x,", (binInst [0] & 0x0e00) >> 9);	    else		printf ("D%x,", (binInst [0] & 0x0e00) >> 9);	    printf ("D%x\n", binInst [0] & 0x07);	    break;	case itTrapcc:	    if ((binInst [0] & 7) == 2)		printf ("#%#x", binInst [1]);	    else if ((binInst [0] & 7) == 3)		printf ("#%#x%04x", binInst [1], binInst [2]);	    printf ("\n");	    break;	case itStop:	    printf ("%#x\n", binInst [1]);	    break;	case itSwap:	case itExt:	    printf ("D%x\n", binInst [0] & 0x07);	    break;	case itUnlk:	    printf ("A%x\n", binInst [0] & 0x07);	    break;	case itLink:	    printf ("A%x,#%#x\n", binInst [0] & 0x07, binInst [1]);	    break;	case itLinkL:	    printf ("A%x,#%#x%04x\n", binInst [0] & 7, binInst [1], binInst [2]);	    break;	case itRtm:	    printf ((binInst [0] & 8) ? "A%x\n" : "D%x\n", binInst [0] & 7);	    break;	case itTrap:	    printf ("#%#x\n", binInst [0] & 0x0f);	    break;	case itBkpt:	    printf ("#%#x\n", binInst [0] & 7);	    break;	case itX:	    printf (((binInst [0] & 0x08) == 0) ?		    "D%x,D%x\n" : "-(A%x),-(A%x)\n",		    binInst [0] & 0x07, (binInst [0] & 0x0e00) >> 9);	    break;	case itPack:	    printf (((binInst [0] & 0x08) == 0) ?		    "D%x,D%x," : "-(A%x),-(A%x),",		    binInst [0] & 0x07, (binInst [0] & 0x0e00) >> 9);	    printf ("#%#x\n", binInst [1]);	    break;	case itDb:	    printf ("D%x,", binInst [0] & 0x07);	    (*prtAddress) (address + 2 + (short) binInst [1]);	    printf ("\n");	    break;	case itRTD:	    printf ("#%#x\n", binInst [1]);	    break;	case itBfchg:	    prEffAddr ((binInst [0] & 0x38) >> 3, binInst [0] & 7, &binInst [2],	              0, prtAddress);	    prOffWid ((binInst [1] & 0x0800) >> 11, (binInst [1] & 0x07c0) >> 6,		      (binInst [1] & 0x20) >> 5, binInst [1] & 0x1f);	    printf ("\n");	    break;	case itBfext:	    prEffAddr ((binInst [0] & 0x38) >> 3, binInst [0] & 7, &binInst [2],	              0, prtAddress);	    prOffWid ((binInst [1] & 0x0800) >> 11, (binInst [1] & 0x07c0) >> 6,		      (binInst [1] & 0x20) >> 5, binInst [1] & 0x1f);	    printf (",D%x\n", (binInst [1] & 0x7000) >> 12);	    break;	case itBfins:	    printf ("D%x,", (binInst [1] & 0x7000) >> 12);	    prEffAddr ((binInst [0] & 0x38) >> 3, binInst [0] & 7, &binInst [2],	              0, prtAddress);	    prOffWid ((binInst [1] & 0x0800) >> 11, (binInst [1] & 0x07c0) >> 6,		      (binInst [1] & 0x20) >> 5, binInst [1] & 0x1f);	    printf ("\n");	    break;	case itDivL:	    prEffAddr ((binInst [0] & 0x38) >> 3, binInst [0] & 7, &binInst [2],			4, prtAddress);	    printf (",");	    if (binInst [1] & 0x0400		|| ((binInst [1] & 0x0007) != ((binInst [1] & 0x7000) >> 12)))		{		printf ("D%x:", binInst [1] & 7);		}	    printf ("D%x\n", (binInst [1] & 0x7000) >> 12);	    break;	case itCas:	    printf ("D%x,D%x,", binInst [1] & 7, (binInst [1] & 0x01c0) >> 6);	    prEffAddr ((binInst [0] & 0x38) >> 3, binInst [0] & 7, &binInst [2],			0, prtAddress);	    printf ("\n");	    break;	case itCas2:	    printf ("D%x:D%x,D%x:D%x,", binInst [1] & 7, binInst [2] & 7,		     (binInst [1] & 0x01c0) >> 6, (binInst [2] & 0x01c0) >> 6 );	    printf (binInst [1] & 0x8000 ? "(A%x):" : "(D%x):",		     (binInst [1] & 0x7000) >> 12);	    printf (binInst [2] & 0x8000 ? "(A%x)\n" : "(D%x)\n",		     (binInst [2] & 0x7000) >> 12);	    break;	case itMoves:	    if ((binInst[1] & 0x0800) == 0)		{		/* from <ea> to general reg */		prEffAddr ((binInst [0] & 0x38) >> 3, binInst [0] & 0x7,			    &binInst [2], 0, prtAddress);		if ((binInst[1] & 0x8000) == 0)		    printf (",D%x\n",(binInst[1] & 0x7000) >> 12);		else		    printf (",A%x\n",(binInst[1] & 0x7000) >> 12);		}	    else		{		/* from general reg to <ea> */		if ( (binInst[1] & 0x8000) == 0)		    printf ("D%x, ",(binInst[1] & 0x7000) >> 12);		else		    printf ("A%x, ",(binInst[1] & 0x7000) >> 12);		prEffAddr ((binInst [0] & 0x38) >> 3, binInst [0] & 0x7,			    &binInst [2], 0, prtAddress);		printf ("\n");		}	    break;	case itMovec:	    if ((binInst[0] & 1) == 0)		{		/* control reg to general reg */		prContReg (binInst[1] & 0x0fff);		if ((binInst[1] & 0x8000) == 0)		    printf (",D%x\n",(binInst[1] & 0x7000) >> 12);		else		    printf (",A%x\n",(binInst[1] & 0x7000) >> 12);		}	    else		{		/* general reg to control reg */		if ((binInst[1] & 0x8000) == 0)		    printf ("D%x,",(binInst[1] & 0x7000) >> 12);		else		    printf ("A%x,",(binInst[1] & 0x7000) >> 12);		prContReg (binInst[1] & 0x0fff);		printf ("\n");		}	    break;	case itMoveFCCR:	    printf ("CCR, ");	    prEffAddr ((binInst [0] & 0x38) >> 3, binInst [0] & 0x7,			&binInst [1], 0, prtAddress);	    printf ("\n");	    break;	case itCpBcc:	    if ((binInst [0] & 0x40) == 0)		printf ("#%#x%04x\n", binInst [1], binInst [2]); /* xxx 0x */	    else		printf ("#%#x\n", binInst [1]);	    break;	case itCpDbcc:	    printf("D%x,#%#x\n", binInst [0] & 7, binInst [2]);	    break;	case itCpTrapcc:	    switch (binInst [0] & 7)		{		case 2:		    printf ("#%#x\n", binInst [2]);		    break;		case 3:		    printf ("#%#x%04x\n", binInst [2], binInst [3]);		    break;		case 4:		    printf ("#0\n");		    break;		}	    break;	/* fpp instructions */	case itFb:		if(binInst[0] & 0x40)			printf ("#%#x\n", binInst[1]);		else			printf ("#%#x%04x\n", binInst[1], binInst[2]);		break;	case itFrestore:	case itFsave:	case itFs:		prEffAddr((binInst[0] & 0x38)>>3, binInst[0] & 0x7,			&binInst[1], 0, prtAddress);		printf ("\n");		break;	case itFdb:		printf ("D%x,#%#x\n",binInst[0] & 0x7, binInst[2]);		break;	case itFtrap:		switch(binInst[0] & 7)		    {		    case 2:			    printf ("#%#x\n",binInst[2]);			    break;		    case 3:			    printf ("#%#x%04x\n", binInst[2],

⌨️ 快捷键说明

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