gpt4 book ai didi

java - JIT 如何在运行时替换优化后的机器码?

转载 作者:行者123 更新时间:2023-11-30 09:55:25 24 4
gpt4 key购买 nike

我正在浏览 OpenJDK 源代码,找不到替换优化代码的地方。

我想知道这如何在保护模式下完成,这难道不是操作系统应该阻止的某种自修改代码吗?

最佳答案

“JITer”在堆或堆栈中分配空间并将汇编代码插入其中。不,自修改代码完全没问题。 VirtualProtect (Windows) 和 mmap (Unix) 可以将页面映射为可执行文件。默认情况下,通用操作系统会将可执行页面标记为可读/可执行但不可写,您通常仍然可以在运行时更改此设置。

如果没有办法修改代码,就没有办法加载一个dll,除非它被加载到一个固定的虚拟地址并共享到每个进程的地址空间;那么你将得到地址空间 hell 而不是 dll hell 。

我猜你听说过 NX 位或 DEP 等,它们只是保护你不执行不可执行的代码,这有助于防止堆栈溢出等。

关于java - JIT 如何在运行时替换优化后的机器码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2837635/

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