gpt4 book ai didi

java - 在 Java 字节码中获取堆栈操作数的 arrayref

转载 作者:搜寻专家 更新时间:2023-11-01 03:56:03 25 4
gpt4 key购买 nike

我使用用于 Java 字节码检测的 ASM API,我希望能够在每次访问任何数组时确定访问了哪个数组(通过数组名称)。

我有两个问题:- 让我们以 iastore 指令为例。 arrayref 被放置在另外两个变量(值和索引)下的操作数堆栈中。如何在不破坏堆栈的情况下获取 arrayref(我不能在堆栈中复制两个以上的顶部变量)?我想到了从堆栈中弹出索引和值并将它们保存在某个地方然后获取 arrayref 最后将索引和值推回堆栈但我真的不知道该怎么做......

  • 我想从 arrayref 中获取(一旦我拥有它)数组的名称(用户声明该数组调用它的名称)。

提前致谢。

最佳答案

dup2_x1, pop2, dup_x2 并且您现在在堆栈的顶部有 arrayref。但总的来说,使用局部变量更简单,JIT 后的最终结果应该没有什么不同。

正如其他人评论的那样,您的问题的第二部分没有多大意义。对象在变量中不是必需的,您可以分配和使用数组,而无需将它存储到任何变量中。

但我怀疑您的意图是像 x[0]=1 一样跟踪访问并将其归因于 x,这可以通过数据流分析来实现。您将跟踪一个负载以及这些值的使用位置,如果您的 arrayref 结果直接来自一个负载,您就知道该数组来自一个变量。

关于java - 在 Java 字节码中获取堆栈操作数的 arrayref,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4671121/

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