前往
大廳
主題

為何x86 Memory stack的stack由上往下(downward)長

NEKROS | 2024-01-02 00:29:19 | 巴幣 0 | 人氣 117

若對memory stack稍有研究,便知道memory stack大致可分成.text(Code)、.data、BSS、heap、mapping for SO與stack

但為何在x86的stack是由上往下長呢?

基本上有幾種說法:
1. 因為heap已經由下往上了,所以stack要跟它對稱才可以善用空間

2. positive indexing:因為以前的處理器對於存取使用的offset僅可使用unsigned offset,所以沒有負數的前提下讓stack head保持在最下方,然後以unsigned offset存取上方的資料

還有看到一個說法是:
從top開始scan,等找到某區塊真的可以讀取到跟寫入一樣的值( accessible and writable),便代表找到了physical RAM的地址。如此便可以正確設定stack pointer的值,並提供類似於memory isolation的功能(不會碰到下面的其他區域)

但不確定這個解釋跟stack downward有什麼關係就是了

然後也不是每種架構的stack都是往下長,像ARM就可以選擇的樣子,然後8051是往上長。

ref:


創作回應

更多創作