首页
社区
课程
招聘
VC6编译器的BUG?
发表于: 2012-7-26 13:29 4420

VC6编译器的BUG?

2012-7-26 13:29
4420
如下的代码,在VC6 debug/Release、VS2008 debug/Release 四种配置下编译出4个EXE文件(配置为控制台程序,工程属性全部取默认值),EXE的运行结果不同——VC6 Release的结果与其他3个不同。

经过反汇编分析,我很怀疑是VC6编译器有BUG。

希望论坛的童鞋来分析分析。

#include <stdio.h>
#include <tchar.h>

#if 0
	__inline unsigned long ROL(unsigned long x, unsigned long count)
	{
		__asm
		{
			mov ecx, [count];
			rol [x], cl;
			mov eax, [x];
		}
	}
#else
	#define ROL(X, cnt)  ( ( (X)<<((cnt)&31) ) | ( (X)>>(32-((cnt)&31)) ) )
#endif

#define P0(X)		 ( (X) ^ ROL((X),  9) ^ ROL((X), 17))
#define P1(X)		 ( (X) ^ ROL((X), 15) ^ ROL((X), 23))

void TestVc6()
{
	unsigned int a, b, c, f;
	
	scanf("%d %d %d", &a, &b, &c);
	a = ROL(c, 15);
	printf("a = %08X\n", a);
	f = P1(a ^ b ^ ROL(c, 15) );
	printf("f = %08X\n", f);
}

int _tmain(int argc, _TCHAR* argv[])
{
	TestVc6();
	return 0;
}

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 375
活跃值: (12)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
把优化关掉试试。
2012-7-26 14:56
0
雪    币: 4911
活跃值: (145)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
还真没注意。。
2012-7-26 15:06
0
雪    币: 44
活跃值: (50)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
vc6本来就好多bug...
2012-7-26 15:13
0
雪    币: 1491
活跃值: (1238)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
5
vs 也有BUG,而且碰到的次数还不止一次,关掉优化即可。
2012-7-26 15:27
0
雪    币: 440
活跃值: (87)
能力值: ( LV9,RANK:200 )
在线值:
发帖
回帖
粉丝
6
有人编译过上面的代码吗? 分析过汇编代码吗?
2012-7-28 10:28
0
雪    币: 4031
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
珍惜生命,远离VC6;
2012-7-28 14:15
0
游客
登录 | 注册 方可回帖
返回
//