1. 程式人生 > >深入理解計算機系統 第三章 程式的機器級表示 part2

深入理解計算機系統 第三章 程式的機器級表示 part2

 

這周由於時間和精力有限,只讀一小節:3.4.4  壓入和彈出棧資料

 

棧是一種特殊的資料結構,遵循“後進先出”的原則,可以用陣列實現,總是從陣列的一端插入和刪除元素,這一端被稱為棧頂。

 

棧有兩個常用指令:

push:把資料壓入棧中

pop:刪除資料

這兩個指令都只有一個運算元

 

一般棧在記憶體中,是向下生長的,所以棧頂元素的地址是所有棧中元素地址中最低的。

 

結合以上三點,可以看出:

壓棧(push)時,棧指標(暫存器 %rsp)會減小

出棧(pop)時,棧指標會增大

 

由於棧和程式程式碼以及其他形式的程式資料都是放在同一記憶體中,所以程式可以用標準的記憶體定址方法訪問棧內的任意位置。