您的位置:首页 > 其它

VC直接编译数据文件到程序中。

2013-01-11 10:31 477 查看
源程序中的全局变量会编译进.data段,例如数据表,如果一个数据表非常大,在源文件中用源代码的形式表现出来非常麻烦,可以用一种变通的方法来处理:

把这个数据表放在一个二进制文件中,用nasm汇编工具中的incbin伪指令来引入这个二进制文件,并编译成vc格式的obj文件,vc程序链接进目标程序就可以按数组的方式来使用这个二进制文件中的数据了。

====================================================

一个示例:

data.bin文件包含:

00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f ……

data.asm文件:

[bits 32]

[section .data]

global _g_cdata

_g_cdata incbin "data.bin"

把data.asm文件添加到vc工程的源文件中,设置data.asm的属性,在custom build选项中,指定nasm编译项的命令行commands:nasm.exe -f win32 .\data.asm -o .\debug\data.obj

指定outputs:.\debug\data.obj,让vc把obj文件编译进目标程序中。

test.cpp文件:

extern "c" char g_cdata[];

int main()

{

// 可以像数组一样来操作g_cdata这个在asm汇编代码中incbin进来的二进制文件中的数据

g_cdata[0] = 0x10;

}

==================================================

这种方法可以把特定的数据块编译到程序的指定数据段,由vc编译器完成,不需要额外的处理,在做一些反编译的工作时,是很方便的一种方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐