简单测试发现有个小问题。经过测试发现确实存在问题。
0x3B 这个指令 应该是cmp 吧?
修改程序,加上输出地址(方便定位),发现这些指令确实存在问题:
继续分析:
发现这里的文件跟这个帖子的差不多。
http://bbs.pediy.com/showthread.php?t=147992
但是里面的代码被改了些
原来的代码:
/* 38 */{ C_MODRM | CH_MODREG, _T("cmp"), L_L_L_L_B_B_U_U },
/* 39 */{ C_MODRM | CH_MODREG, _T("cmp"), E_A_E_A_P_P_U_U( SIZ_DWORD, SIZ_WORD ) },
/* 3A */{ C_MODREG | CH_MODRM, _T("cmp"), L_L_L_L_B_B_U_U },
/* 3B */{ C_MODREG | CH_MODRM, _T("cmp"), E_A_E_A_P_P_U_U( SIZ_DWORD, SIZ_WORD ) },
/* 3C */{ C_DEFREG | CH_I8, _T("cmp"), L_L_L_L_B_B_P_U( REG_AL ) },
/* 3D */{ C_DEFREG | CH_DATA66, _T("cmp"), E_A_E_A_D_W_P_U( REG_EAX ) },
现在的代码:
/*38*/{ FG_MODRM | FG_MODREG<<FGB , _T("sub") ,SS_SS_BB_PP_P(UDF ,UDF ,UDF) },
/*39*/{ FG_MODRM | FG_MODREG<<FGB , _T("sub") ,LM_LM_DW_PP_P(UDF ,UDF ,UDF) },
/*3A*/{ FG_MODREG | FG_MODRM<<FGB , _T("sub") ,SS_SS_BB_PP_P(UDF ,UDF ,UDF) },
/*3B*/{ FG_MODREG | FG_MODRM<<FGB , _T("sub") ,LM_LM_DW_PP_P(UDF ,UDF ,UDF) },
/*3C*/{ FG_DEFRG | FG_IMDATA<<FGB , _T("sub") ,SS_SS_BB_PP_P(REG_AL ,UDF ,RMK_IM8) },
/*3D*/{ FG_DEFRG | FG_IMDATA<<FGB , _T("sub") ,LM_LM_DW_PP_P(REG_RAX ,UDF ,RMK_IM1632) },
不知道这是出于什么原因。
当然里面还有地方更改。
之后就没有再去测试了。
问题反馈.zip