X86 JIT编译器的ELF文件的结构是什么?

X86 JIT编译器的ELF文件的结构是什么?,x86,compiler-construction,elf,jit,X86,Compiler Construction,Elf,Jit,我想构建一个可以在运行时用新代码扩展的程序(JIT编译)。想知道,我应该把这个新代码放在什么地方?我是把它放在.text部分还是.data部分?这通常是如何工作的?如果是及时的,则是在程序运行时发生的。所以它与任何文件都没有关系。我不确定我是否理解您试图做什么,但对于常规JIT编译器,您不会将任何内容写入文件。您将机器代码写入内存(只是代码-没有ELF头或类似的东西),然后跳入内存。您将新代码放入使用malloc分配的新内存页中。(或者使用mmap(MAP_ANONYMOUS,PROT_WRIT

我想构建一个可以在运行时用新代码扩展的程序(JIT编译)。想知道,我应该把这个新代码放在什么地方?我是把它放在
.text
部分还是
.data
部分?这通常是如何工作的?

如果是及时的,则是在程序运行时发生的。所以它与任何文件都没有关系。我不确定我是否理解您试图做什么,但对于常规JIT编译器,您不会将任何内容写入文件。您将机器代码写入内存(只是代码-没有ELF头或类似的东西),然后跳入内存。您将新代码放入使用malloc分配的新内存页中。(或者使用
mmap(MAP_ANONYMOUS,PROT_WRITE | PROT_READ | PROT_EXEC)
。或者在生成代码后将它们从R+W翻转到R+X,用于强制执行W^X的系统)。还涉及: