jvm - 向 JVM 添加 super 指令

标签 jvm bytecode java jvm-hotspot

我必须向 Java 添加新的 super 指令,以替换字节码中的某些指令序列。我已经阅读了许多研究文章,但任何文章中都没有提到应该更新的文件名。 谁能帮我找出包含 JVM 的主解释器循环热点文件,该文件在 X86、ARM 等任何体系结构中都有 case 语句。
换句话说,我需要包含操作码的文件的位置,以便我可以修改它们。

最佳答案

如果您不熟悉 HotSpot 源代码,添加新指令并不是一件容易的事。这不仅仅是修改几个位置的问题;这涉及到许多 JVM 部分,包括

此外,HotSpot JVM 根本没有“主解释器循环”。相反,有一个所谓的“模板解释器”,它是在 JVM 启动时在运行时生成的。对于每个字节码,都有一个依赖于平台的类似于程序集的模板,该模板生成解释器片段,以便在所有可能的堆栈顶部状态下执行该字节码。每个模板通常以分派(dispatch)到下一个字节码的序列结束。

要了解 x86 模板解释器的外观,请参阅 src/cpu/x86/vm/templateTable_x86.cpp 。新的说明将需要类似的模板。

关于jvm - 向 JVM 添加 super 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46874750/

相关文章:

java - 为什么来自类的java字节码出现新静态内部类的代码出现jvm指令ACONST_NULL

java - 改变 Java 中静态方法的行为 - 字节码操作

java - 当路径包含任何空格时,在 Java ist 中加载文件不起作用,例如%20

LINUX - 检查 JVM 的内部 CPU、RAM 使用情况

java - 为什么 MetaSpace Size 是 Used MetaSpace 的两倍?

linux - JVM 的系统范围内存限制

scala - scala 是如何生成字节码的?使用一些像 ASM 这样的库,还是直接编写二进制文件?

java - 如何使用特定选项运行 JVM?

java - 如何在命令 "java -Djasypt.encryptor.password=somepassword -jar name.jar"中隐藏密码

java - 即使在 java webapp 中进行验证检查后也存在信任边界冲突