2012-05-14 61 views
0

爲什麼直接尋址靜態變量而間接尋址本地變量?我無法看到當地人的間接來自哪裏!靜態和局部變量的尋址模式

+0

您不提供足夠的上下文來給這個問題提供一個很好的答案。什麼編程語言;你在說什麼編譯器等? –

+0

@DonStewart gcc。 – saadtaame

回答

1

在允許函數遞歸使用的語言中,需要間接尋址(通過堆棧指針)。

但是,C也有靜態局部變量,因此staticlocal不一定是互斥的概念。

+0

@Ingro我看到了,所以我們首先計算局部變量的地址,然後從計算的內存地址中讀取數據。對? – saadtaame

+0

當然,這取決於實現,但通常要做的事情是讓一個寄存器(堆棧指針)指向堆棧的頂部/底部,然後每個局部變量都具有該堆棧指針的已知偏移量。 – Ingo