gpt4 book ai didi

java - JVM 如何在加载类时验证没有潜在的操作数堆栈溢出?

转载 作者:太空狗 更新时间:2023-10-29 22:55:47 25 4
gpt4 key购买 nike

通过一些介绍,我遇到了以下声明:当 JVM 加载一个类时,它可以分析其内容并确保操作数堆栈没有溢出或下溢。我找到了 a lot of sources提出相同的声明,但没有具体说明它是如何完成的。

我不清楚如何使用静态分析进行此类验证。假设我有一个(恶意的)方法,它获取一些值作为参数,并使用它来执行一系列弹出操作。在加载时,迭代次数是未知的,因为它取决于方法调用者给出的参数。因此,在我看来,只有在运行时才能确定是否会出现下溢。我在这里缺少什么?

最佳答案

您可以在 Java Virtual Machine specification 中找到字节码 validator 的基本描述.

简单来说,栈深度在每个分支点都是已知的,在同一个合并点合并的两条执行路径也必须具有相同的栈深度。因此,验证者不会允许您在没有相应的 put 的情况下执行一系列 pops。

关于java - JVM 如何在加载类时验证没有潜在的操作数堆栈溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10541557/

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