2012-07-12 16 views
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 
+0

我現在從底部到頂部。 b - a - rA - prevLV - v1 - v2。用LV - > prevLV和SP - > v2 – 2012-07-12 20:09:17

+0

這是什麼架構? 86? MIPS? SPARC? – templatetypedef 2012-07-12 22:11:52

回答

0

繪製一個明確的圖片是很難,因爲它依賴於JVM的實現,但你現在有什麼不太可能是正確的。因爲Java不會區分參數和temp(請參閱iload等。字節碼),它們將需要並排顯示在內存中,否則某些人將不得不將它們從調用者中複製出來在框架構建時(這往往是昂貴的)堆棧到被調用者。