-
-
编译器的BUG?还是我对VC数据结构定义不了解?[求助]
-
发表于:
2007-4-18 23:18
6418
-
编译器的BUG?还是我对VC数据结构定义不了解?[求助]
一个简单的生成一个BMP文件的小程序
#define WORD unsigned short
#define DWORD unsigned long
#define LONG long
#define BYTE unsigned char
typedef struct tagBITMAPFILEHEADER {
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER;
bfType必须是文件的签名“BM”
紧接着的一个DWORD是大小
问题是,编译出来之后,相应的汇编代码是
00401056 |. 66:C705 A0CD4>mov word ptr [
42CDA0], 4D42
0040105F |. C705 A4CD4200>mov dword ptr [
42CDA4], 2BC36
虽然仍然按照WORD写入,但是编译器却预留了一个DWORD
结果导致生成的文件产生错误。
请问,如何修改该结构定义,才能使编译器编译成下面的汇编代码
mov word ptr [
ea], 4D42
mov dword ptr [
ea+2], 2BC36
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)