JIT编译器如何运作

时间:2011-05-22 10:38:24

标签: compiler-construction jit

JIT编译器根据定义,可以动态生成代码以供执行。但是,在Windows中,我们提供各种保护,阻止自我修改代码或从数据存储器(DEP)执行。

那么JIT编译器如何动态生成代码呢?

1 个答案:

答案 0 :(得分:7)

他们向操作系统询问一些可读,可写和可执行的内存。

e.g。您可以使用mmap() PROT_READ | PROT_WRITE | PROT_EXEC(POSIX)或VirtualAlloc() PAGE_EXECUTE_READWRITE(Windows)来分配此类内存。

有关实例,请参阅LLVM的llvm::sys::Memory::AllocateRWXUnix implementation; Windows implementation)。