gpt4 book ai didi

clr - JVM/CLR 执行 native 代码

转载 作者:行者123 更新时间:2023-12-04 14:53:10 28 4
gpt4 key购买 nike

JVM/CLR 如何执行 JIT 编译的原生代码?是通过一些代码注入(inject)还是通过将代码复制到可执行内存?允许动态代码执行的系统调用是什么?

最佳答案

我可以在 CACAO VM 中解释我们是如何做到的(一个研究 JIT-only JVM)。首先,将方法的机器代码生成到某个堆分配的内存块中。编译后,最终的代码长度已知,使用mmap分配一 block 可执行内存和 PROT_EXEC标志(相关CACAO代码here)。然后,机器代码被复制到映射区域。之后,许多架构需要一些特定于机器的缓存刷新机制。例如,查看 cache-flushing function对于 PowerPC 64。值得注意的是,在 i386 和 x86_64 上,没有什么可做的。在这一步之后,处理器准备好执行新生成的代码。或者,可以使用 mprotect 将已分配的内存页面标记为可执行。 .请注意 mmap/mprotect是 Unix 设施。

关于clr - JVM/CLR 执行 native 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1082570/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com