我编写了代码并将其编译为exe,现在.text部分需要更大一些,
如果我有代码,并且想在编译之前在代码的.text部分中分配更多空间,该如何做?分配一些缓冲区?

我正在尝试更改代码或编译选项以生成带有LARGER .TEXT部分的二进制文件

我的编译器VisualStudio2010或cl.exe

修补二进制文件更加复杂

最佳答案

假设这确实是您想要的,则可以使用内联汇编。例如。对于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 }

09-29 21:29