2013-01-05 40 views
0

我编写代码并将其编译为exe,现在.text部分需要更大, 如果我有代码,并且希望在编译之前在代码的.text节中分配更多空间它,如何做到这一点?分配一些缓冲区?PE文件.text部分大小

我试图改变代码或者编译选项来产生与较大的.text段

我的编译器VisualStudio2010或cl.exe时

修补二进制文件是更复杂的二进制文件

+0

你能解释一下你在做什么吗? –

+0

@MatsPetersson我编辑过上面的问题 – bit8bug

+0

编译选项取决于你使用的编译器。哪一个? – DCoder

回答

1

假设它真的是你想要的,你可以使用内联汇编。例如。对于gcc + gas:void unused_global() { __asm(".space 10000"); }

对于Visual Studio的cl.exe,它似乎更棘手:内联asm中没有指令,即使REPT不可用。我会用masm分别编译一堆nops;否则我们必须这样做:

#define NOP __asm { NOP } ; 
#define NOP8 NOP NOP NOP NOP NOP NOP NOP NOP 
#define NOP64 NOP8 NOP8 NOP8 NOP8 NOP8 NOP8 NOP8 NOP8 
#define NOP512 NOP64 NOP64 NOP64 NOP64 NOP64 NOP64 NOP64 NOP64 
#define NOP4096 NOP512 NOP512 NOP512 NOP512 NOP512 NOP512 NOP512 NOP512 
#define NOP32768 NOP4096 NOP4096 NOP4096 NOP4096 NOP4096 NOP4096 NOP4096 NOP4096 
void unused_global() { NOP32768 } 
+0

我刚刚补充说,我正在使用cl.exe,Visual Studio 2012 对不起,没有指定之前 – bit8bug

+0

刚刚编辑cl.exe的答案。 –