我不得不回答以下问题。
给定的是函数:
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
绘制一幅明确的图片很难,因为这取决于JVM的实现,但现在所拥有的不太可能是正确的。
因为Java不区分args和temps(参见iload等字节码),所以它们需要并排出现在内存中,或者有人必须在帧构建时将它们从调用者挂起堆栈复制到被调用者(这往往很昂贵)。