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

📄 dasmcte.h

📁 win32 exe程序反汇编
💻 H
📖 第 1 页 / 共 3 页
字号:

	{ "11011 001 : mod 000 rm"				, "fld dword ptr %0" , 0 } , 
	{ "11011 101 : mod 000 rm"				, "fld qword ptr %0" , 0 } , 
	{ "11011 011 : mod 101 rm"				, "fld tbyte ptr %0" , 0 } , // a voir
	{ "11011 001 : 11 000 fpu:"				, "fld %0" },
			 
	{ "11011 001 : 1110 1000:"				, "fld1" , 0 } , 
	{ "11011 001 : mod 101 rm"				, "fldcw %0" , 0 } , 
	{ "11011 001 : mod 100 rm"				, "fldenv %0" , 0 } , 
	{ "11011 001 : 1110 1010:"				, "fldl2e" , 0 } , 
	{ "11011 001 : 1110 1001:"				, "fldl2t" , 0 } , 
	{ "11011 001 : 1110 1100:"				, "fldlg2" , 0 } , 
	{ "11011 001 : 1110 1101:"				, "fldln2" , 0 } , 
	{ "11011 001 : 1110 1011:"				, "fldpi" , 0 } , 
	{ "11011 001 : 1110 1110:"				, "fldz" , 0 } , 

	{ "11011 000 : mod 001 rm"				, "fmul dword ptr %0" , 0 } , 
	{ "11011 100 : mod 001 rm"				, "fmul qword ptr %0" , 0 } , 
	{ "11011 000 : 11 001 fpu:"				, "fmul st(0) , %0" , 0 } , 
	{ "11011 100 : 11 001 fpu:"				, "fmul %0 , st(0)" , 0 } , 
	{ "11011 110 : 11 001 fpu:"				, "fmulp %0 , st(0)" , 0 } , 

	{ "11011 001 : 1101 0000:"				, "fnop" , 0 } , 
	{ "11011 001 : 1111 0011:"				, "fpatan" , 0 } , 
	{ "11011 001 : 1111 1000:"				, "fprem" , 0 } , 
	{ "11011 001 : 1111 0101:"				, "fprem1" , 0 } , 
	{ "11011 001 : 1111 0010:"				, "fptan" , 0 } , 
	{ "11011 001 : 1111 1100:"				, "frndint" , 0 } , 
	{ "11011 101 : mod 100 rm"				, "frstor %0" , 0 } , 
	{ "11011 101 : mod 110 rm"				, "fsave %0" , 0 } , 
	{ "11011 001 : 1111 1101:"				, "fscale" , 0 } , 
	{ "11011 001 : 1111 1110:"				, "fsin" , 0 } , 
	{ "11011 001 : 1111 1011:"				, "fsincos" , 0 } , 
	{ "11011 001 : 1111 1010:"				, "fsqrt" , 0 } , 
	
	{ "11011 001 : mod 010 rm"				, "fst dword ptr %0" , 0 } , 
	{ "11011 101 : mod 010 rm"				, "fst qword ptr %0" , 0 } , 
	{ "11011 101 : 11 010 fpu:"				, "fst %0" , 0 } , 

	{ "11011 001 : mod 111 rm"				, "fstcw %0" , 0 } , 
	{ "11011 001 : mod 110 rm"				, "fstenv %0" , 0 } , 
	
	{ "11011 001 : mod 011 rm"				, "fstp dword ptr %0" , 0 } , 
	{ "11011 101 : mod 011 rm"				, "fstp qword ptr %0" , 0 } , 
	{ "11011 011 : mod 111 rm"				, "fstp tbyte ptr %0" , 0 } , // a voir
	{ "11011 101 : 11 011 fpu:"				, "fstp %0" , 0 } , 

	{ "11011 111 : 1110 0000:"				, "fstsw ax" , 0 } , 
	{ "11011 101 : mod 111 rm"				, "fstsw word ptr %0" , 0 } , 

	{ "11011 000 : mod 100 rm"				, "fsub dword ptr %0" , 0 } , 
	{ "11011 100 : mod 100 rm"				, "fsub qword ptr %0" , 0 } , 	
	{ "11011 000 : 11100 fpu:"				, "fsub st(0) , %0" , 0 } , 
	{ "11011 100 : 11101 fpu:"				, "fsub %0 , st(0)" , 0 } , 
	{ "11011 110 : 11101 fpu:"				, "fsubp %0 , st(0)" , 0 } , 

	{ "11011 000 : mod 101 rm"				, "fsubr dword ptr %0" , 0 } , 
	{ "11011 100 : mod 101 rm"				, "fsubr qword ptr %0" , 0 } , 
	{ "11011 000 : 11101 fpu:"				, "fsubr st(0) , %0" , 0 } , 
	{ "11011 100 : 11100 fpu:"				, "fsubr %0 , st(0)" , 0 } , 
	{ "11011 110 : 11100 fpu:"				, "fsubrp %0  , st(0)" , 0 } , 	
		
	{ "11011 001 : 1110 0100:"				, "ftst" , 0 } , 
	{ "11011 101 : 1110 0 fpu:"				, "fucom %0" , 0 } , 
	{ "11011 101 : 1110 1 fpu:"				, "fucomp %0" , 0 } , 
	{ "11011 010 : 1110 1001:"				, "fucompp" , 0 } , 
	{ "11011 011 : 11 101 fpu:"				, "fucomi" , 0 } , 
	{ "11011 111 : 11 101 fpu:"				, "fucomip" , 0 } , 
	{ "11011 001 : 1110 0101:"				, "fxam" , 0 } , 
	{ "11011 001 : 1100 1fpu:"				, "fxch %0" , 0 } , 
	{ "11011 001 : 1111 0100:"				, "fxtract" , 0 } , 
	{ "11011 001 : 1111 0001:"				, "fyl2x" , 0 } , 
	{ "11011 001 : 1111 1001:"				, "fyl2xp1" , 0 } , 
	{ "1001 1011:"							, "fwait" , 0 } , 
	{ 0 , 0 , 0 } 
};

	////////////////////////////////////////////////////////////////////
	// instructions privilegiees 
static SOPContext	pfnOPCPrivileged[] = 
{
	{ "0110 0011 : 11 g16 g16:"			, "arpl %1 , %0" , 0 } , 
	{ "0110 0011 : mod g16 rm"			, "arpl %1 , %0" , 0 } , 

	{ "0000 1111 : 0000 0110 :" , "clts" , 0 } , 

	{ "1111 0100:"								, "hlt" , 0 } , 

	{ "1110 010w eax : i08" , "in %0 , %1" , 0 } , 
	{ "1110 110w eax : "	, "in %0 , dx" , 0 } , 

	{ "0110 1100:"			, "%r_insb" , 0 } , 
	{ "oas 0110 1101:"		, "%r_insw" , 0 } , 
	{ "nas 0110 1101:"		, "%r_insd" , 0 } , 

	{ "0000 1111 : 0000 1000:"				, "invd" , 0 } , 
	{ "0000 1111 : 0000 0001 : mod 111 rm"	, "invlpg %p %0" , 0 } , 

	{ "0000 1111 : 0000 0010 : 11 grg grg:" , "lar %0 , %1" , 0 } , 
	{ "0000 1111 : 0000 0010 : mod grg rm" , "lar %0 ,%p  %1 " , 0 } , 

	{ "0000 1111 : 0000 0001 : mod 010 rm"	, "lgdt %0" , 0 } ,
	{ "0000 1111 : 0000 0001 : mod 011 rm"	, "lidt %0" , 0 } ,

	{ "0000 1111 : 0000 0000 : 11 010 grg:"	, "lldt %0" , 0 } , 
	{ "0000 1111 : 0000 0000 : mod 010 rm"  , "lldt %p %0" , 0 } , 

	{ "0000 1111 : 0000 0001 : 11 110 grg:"	, "lmsw %0" , 0 } , 
	{ "0000 1111 : 0000 0001 : mod 110 rm"	, "lmsw %p %0" , 0 } , 
	
	{ "1111 0000:"							, "lock" , 0 } , 

	{ "0000 1111 : 0000 0011 : 11 grg grg:" , "lsl %0 , %1" , 0 } , 
	{ "0000 1111 : 0000 0011 : mod grg rm" , "lsl %0 , %p %1" , 0 } , 

	{ "0000 1111 : 0000 0000 : 11 011 grg:" , "ltr %0" , 0 } , 
	{ "0000 1111 : 0000 0000 : mod 011 rm" , "ltr %p %0" , 0 } , 

	{ "0000 1111 : 0010 00d0 : 11 _cr grg:" , "mov %1 , %0" , 0 } ,  
	{ "0000 1111 : 0010 00d1 : 11 _dr grg:"	, "mov %1 , %0" , 0 } , 

	{ "1110 011w eax : i08" , "out %1 , %0" , 0 } , 
	{ "1110 111w eax : "	, "out dx , %0" , 0 } , 
	
	{ "0110 1110:"		, "%r_outsb" , 0 } , 
	{ "oas 0110 1111:"	, "%r_outsw" , 0 } , 
	{ "nas 0110 1111:"	, "%r_outsd" , 0 } , 

	{ "0000 1111 : 0011 0010 :"		, "rdmsr" , 0 } , 
	{ "0000 1111 : 0011 0011 :"		, "rdpmc" , 0 } , 
	{ "0000 1111 : 0011 0001 :"		, "rdtsc" , 0 } , 

	{ "0000 1111 : 0000 0001 : mod 000 rm"	, "sgdt %p %0" , 0 } ,

	{ "0000 1111 : 0000 0000 : 11 000 grg:" , "sldt %0" , 0 } , 
	{ "0000 1111 : 0000 0000 : mod 000 rm" , "sldt %0" , 0 } , 

	{ "0000 1111 : 1010 1010: "		, "rsm" , 0 } , 

	{ "0000 1111 : 0000 0000 : 11 001 grg:" , "str %0" , 0 } , 
	{ "0000 1111 : 0000 0000 : mod 001 rm" , "str %0" , 0 } , 

	{ "0000 1111 : 0000 0001 : mod 001 rm" , "sidt %0" , 0 } , 

	{ "0000 1111 : 0000 0001 : 11 100 grg:" , "smsw %0" , 0 } , 
	{ "0000 1111 : 0000 0001 : mod 100 rm" , "smsw %0" , 0 } , 
	
	{ "0000 1111 : 0000 1001 :" , "wbinvd" , 0 } , 

	{ "0000 1111 : 0000 0000 : 11 100 grg:"		, "verr %0" , 0 } , 
	{ "0000 1111 : 0000 0000 : mod 100 rm"		, "verr %p %0" , 0 } , 
	{ "0000 1111 : 0000 0000 : 11 101 grg:"		, "verw %0" , 0 } , 
	{ "0000 1111 : 0000 0000 : mod 101 rm"		, "verw %p %0" , 0 } , 

	{ "0000 1111 : 0011 0000 :" , "wrmsr" , 0 } , 

	{ 0 , 0 , 0 } 
};

	////////////////////////////////////////////////////////////////////
	// instructions mmx
static SOPContext	pfnOPCMmx[] = 
{ 
	{ "0000 1111 : 01110111: "					, "emms" , 0  } ,

	{ "0000 1111 : 011d1110: 11 xmm grg:"		, "movd %0 , %1" , 0 } , 
	{ "0000 1111 : 011d1110: mod xmm rm"		, "movd %0 , %1" , 0 } , 

	{ "0000 1111 : 011d1111: 11 xmm grg:"		, "movq %0 , %1" , 0 } , 
	{ "0000 1111 : 011d1111: mod xmm rm"		, "movq %0 , %1" , 0 } , 
	
	{ "0000 1111 : 01101011: 11 xmm xmm:"		, "packssdw %0 , %1" , 0 } , 
	{ "0000 1111 : 01101011: mod xmm rm"		, "packssdw %0 , %1" , 0 } ,

	{ "0000 1111 : 01100011: 11 xmm xmm:"		, "packsswb %0 , %1" , 0 } , 
	{ "0000 1111 : 01100011: mod xmm rm"		, "packsswb %0 , %1" , 0 } ,

	{ "0000 1111 : 01100111: 11 xmm xmm:"		, "packuswb %0 , %1" , 0 } , 
	{ "0000 1111 : 01100111: mod xmm rm"		, "packuswb %0 , %1" , 0 } ,
	
	{ "0000 1111 : 111111pp: 11 xmm xmm:"		, "padd%g %0 , %1" , 0 } , 
	{ "0000 1111 : 111111pp: mod xmm rm"		, "padd%g %0 , %1" , 0 } ,

	{ "0000 1111 : 111011pp: 11 xmm xmm:"		, "padds%g %0 , %1" , 0 } , 
	{ "0000 1111 : 111011pp: mod xmm rm"		, "padds%g %0 , %1" , 0 } ,

	{ "0000 1111 : 110111pp: 11 xmm xmm:"		, "paddus%g %0 , %1" , 0 } , 
	{ "0000 1111 : 110111pp: mod xmm rm"		, "paddus%g %0 , %1" , 0 } ,

	{ "0000 1111 : 11011011: 11 xmm xmm:"		, "pand %0 , %1" , 0 } , 
	{ "0000 1111 : 11011011: mod xmm rm"		, "pand %0 , %1" , 0 } ,

	{ "0000 1111 : 11011111: 11 xmm xmm:"		, "pandn %0 , %1" , 0 } , 
	{ "0000 1111 : 11011111: mod xmm rm"		, "pandn %0 , %1" , 0 } ,

	{ "0000 1111 : 011101pp: 11 xmm xmm:"		, "pcmpeq%g %0 , %1" , 0 } , 
	{ "0000 1111 : 011101pp: mod xmm rm"		, "pcmpeq%g %0 , %1" , 0 } ,

	{ "0000 1111 : 011001pp: 11 xmm xmm:"		, "pcmpgt%g %0 , %1" , 0 } , 
	{ "0000 1111 : 011001pp: mod xmm rm"		, "pcmpgt%g %0 , %1" , 0 } ,

	{ "0000 1111 : 11110101: 11 xmm xmm:"		, "pmadd %0 , %1" , 0 } , 
	{ "0000 1111 : 11011111: mod xmm rm"		, "pmadd, %1" , 0 } ,

	{ "0000 1111 : 11100101: 11 xmm xmm:"		, "pmulh %0 , %1" , 0 } , 
	{ "0000 1111 : 11100101: mod xmm rm"		, "pmulh %0 , %1" , 0 } ,

	{ "0000 1111 : 11010101: 11 xmm xmm:"		, "pmull %0 , %1" , 0 } , 
	{ "0000 1111 : 11010101: mod xmm rm"		, "pmull %0 , %1" , 0 } ,

	{ "0000 1111 : 11101011: 11 xmm xmm:"		, "por %0 , %1" , 0 } , 
	{ "0000 1111 : 11101011: mod xmm rm"		, "por %0 , %1" , 0 } ,

	{ "0000 1111 : 111100pp: 11 xmm xmm:"		, "psll%g %0 , %1" , 0 } , 
	{ "0000 1111 : 111100pp: mod xmm rm"		, "psll%g %0 , %1" , 0 } ,
	{ "0000 1111 : 011100pp: 11 100 xmm : i08"	, "psll%g %0 , %1" , 0 } ,

	{ "0000 1111 : 111100pp: 11 xmm xmm:"		, "psra%g %0 , %1" , 0 } , 
	{ "0000 1111 : 111100pp: mod xmm rm"		, "psra%g %0 , %1" , 0 } ,
	{ "0000 1111 : 011100pp: 11 100 xmm : i08"	, "psra%g %0 , %1" , 0 } ,

	{ "0000 1111 : 111100pp: 11 xmm xmm:"		, "psrl%g %0 , %1" , 0 } , 
	{ "0000 1111 : 111100pp: mod xmm rm"		, "psrl%g %0 , %1" , 0 } ,
	{ "0000 1111 : 011100pp: 11 100 xmm : i08"	, "psrl%g %0 , %1" , 0 } ,

	{ "0000 1111 : 111110pp: 11 xmm xmm:"		, "psub%g %0 , %1" , 0 } , 
	{ "0000 1111 : 111110pp: mod xmm rm"		, "psub%g %0 , %1" , 0 } ,

	{ "0000 1111 : 111010pp: 11 xmm xmm:"		, "psubs%g %0 , %1" , 0 } , 
	{ "0000 1111 : 111010pp: mod xmm rm"		, "psubs%g %0 , %1" , 0 } ,

	{ "0000 1111 : 110110pp: 11 xmm xmm:"		, "psubus%g %0 , %1" , 0 } , 
	{ "0000 1111 : 110110pp: mod xmm rm"		, "psubus%g %0 , %1" , 0 } ,

	{ "0000 1111 : 011010pp: 11 xmm xmm:"		, "punpckh%g %0 , %1" , 0 } , 
	{ "0000 1111 : 011010pp: mod xmm rm"		, "punpckh%g %0 , %1" , 0 } ,

	{ "0000 1111 : 011000pp: 11 xmm xmm:"		, "punpckl%g %0 , %1" , 0 } , 
	{ "0000 1111 : 011000pp: mod xmm rm"		, "punpckl%g %0 , %1" , 0 } ,

	{ "0000 1111 : 11101111: 11 xmm xmm:"		, "pxor %0 , %1" , 0 } , 
	{ "0000 1111 : 11101111: mod xmm rm"		, "pxor %0 , %1" , 0 } ,

	{ 0 , 0 , 0 } 
};

////////////////////////////////////////////////////////////////////
// definition de tout les banks
struct SBank 
{
	/** { 0 , 0 , 0 } tab de motif d'instructions */
	SOPContext*		m_pData ;
	
	/** nom du bank tq ds la ligne de command */
	const char* m_pszName ; 

	/** == true si utilise */
	bool m_bIsDefault ;

	/** op de comparaison */
	bool operator==( const SBank& other )
	{	return ( strcmp( m_pszName , other.m_pszName ) == 0 ); }
};

/** bank list ( par ordre de proba d'utilisation decroissante !)*/
static SBank  pAllBanks[] = 
{ 
	{ pfnOPCGeneral , "user" , true } , 
	{ pfnOPCFPU , "fpu" , true } ,
	{ pfnOPCMmx , "mmx" , false } ,
	{ pfnOPCPrivileged , "system" , false } 
};


////////////////////////////////////////////////////////////////////
// divers flags

////////////////////////////////////////////////////////////////////
// decoupage typique d'un octet en 3 parties (2,3,3)
inline void ByteSplit3( BYTE in , BYTE& outHigh , BYTE& outMed , BYTE& outLow )
{
	outLow = in & BIN_CTE(0,0,0,0,0,1,1,1) ;
	outMed = ( in & BIN_CTE(0,0,1,1,1,0,0,0) ) >> 3 ;
	outHigh = ( in & BIN_CTE(1,1,0,0,0,0,0,0) ) >> 6 ;
}

⌨️ 快捷键说明

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