最近编译器都是老奇葩了
已经不是第一次了,编译器老是篡改我的意图,之前找PhkFirstGlobalValid的函数地址,特征匹配的时候,往回匹配代码
while( *pbuf != 0x90 )
{
pbuf--;
}
结果死循环了,不调不知道,一调,擦,,*pbuf被编译成固定值存在寄存器中,每次pbuf--后,寄存器还是原来的值去跟0x90比较,
泪流满面啊。
可能是我代码风格写的特别乱吧,编译器老是跟我作对,我都无语了。
编译环境:win7 sp1 x64
编译器: VC++6.0、VS 2008
编译代码
{
if ( xinqi == 6 || xinqi == 7 )
0042D68E cmp dword ptr [xinqi],6
0042D692 je main+7Ah (42D69Ah)
0042D694 cmp dword ptr [xinqi],7
0042D698 jne main+83h (42D6A3h)
{
total++;
0042D69A mov eax,dword ptr [total]
0042D69D add eax,1
0042D6A0 mov dword ptr [total],eax
}
if ( xinqi == 8 )
{
xinqi == 1;
}
}
0042D6A3 jmp main+4Dh (42D66Dh)
}
0042D6A5 jmp main+35h (42D655h)
printf("%d\n", total);
vc++ 编译器 优化