我写了代码并将其编译为exe,现在.text部分需要更大,如果我有代码并且我想在编译之前从代码中分配.text部分的更多空间,该怎么做?分配一些缓冲区?
我正在尝试更改代码或编译选项以生成带有 LARGER .TEXT 部分的二进制文件
我的编译器 VisualStudio2010 或 cl.exe
给二进制文件打补丁比较复杂
我写了代码并将其编译为exe,现在.text部分需要更大,如果我有代码并且我想在编译之前从代码中分配.text部分的更多空间,该怎么做?分配一些缓冲区?
我正在尝试更改代码或编译选项以生成带有 LARGER .TEXT 部分的二进制文件
我的编译器 VisualStudio2010 或 cl.exe
给二进制文件打补丁比较复杂
假设它真的是你想要的,你可以使用内联汇编。例如对于 gcc+gas:void unused_global() { __asm(".space 10000"); }
对于 Visual Studio 的 cl.exe,它似乎更棘手:内联 asm 中没有指令,甚至 REPT 都不可用。我会用 masm 分别编译一堆 nop;否则我们必须做这样的事情:
#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 }