0

我必须追问。

给定的是功能:

show(int a, int b) 
{
    int v1;
    int v2;
}

a 和 b 是参数。v1 和 v2 是局部变量。绘制一个堆栈,其中明确 a、b、v1、v2、旧帧指针和返回地址的位置。还显示高堆栈地址和低堆栈地址在哪里。

我希望我已经足够清楚了。

编辑:

我现在拥有的是:

v2      <-- SP
v1
prevLV  <-- LV
Ra
a
b
4

1 回答 1

0

绘制一个确定的图片很困难,因为它取决于 JVM 的实现,但是您现在所拥有的不太可能是正确的。

因为 Java 不区分 args 和 temps(参见 iload 等字节码),它们将需要并排出现在内存中,或者有人将不得不将它们从调用者挂起堆栈复制到被调用者在框架构建时(这往往很昂贵)。

于 2012-07-16T08:28:06.250 回答