首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

近来编译器都是老奇葩了

2013-09-23 
最近编译器都是老奇葩了已经不是第一次了,编译器老是篡改我的意图,之前找PhkFirstGlobalValid的函数地址,

最近编译器都是老奇葩了
已经不是第一次了,编译器老是篡改我的意图,之前找PhkFirstGlobalValid的函数地址,特征匹配的时候,往回匹配代码
while( *pbuf != 0x90 )
{
    pbuf--;
}
结果死循环了,不调不知道,一调,擦,,*pbuf被编译成固定值存在寄存器中,每次pbuf--后,寄存器还是原来的值去跟0x90比较,近来编译器都是老奇葩了泪流满面啊。
可能是我代码风格写的特别乱吧,编译器老是跟我作对,我都无语了。
编译环境:win7 sp1 x64
编译器: VC++6.0、VS 2008
编译代码


VS2008编译结果:

{
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);


这样的编译结果真受伤。。。。
if ( xinqi == 8 )
{
xinqi == 1;
}
代码怎么啦?编译器就认为是费代码,基可以直接抛弃?Debug模式下不应该啊,如果说是Release下把这段代码吃掉了,那我还信,为什么Debug下无任何优化却会消失?神一般的存在。近来编译器都是老奇葩了 vc++ 编译器 优化
[解决办法]
if ( xinqi == 8 )
{
    xinqi == 1;//这里是不是多了个 = 号
}

热点排行