什麼是堆疊組織結構?


堆疊 也被稱為後進先出 (LIFO) 列表。它是CPU 中最重要的特性之一。它儲存資料,以便最後儲存的元素首先被檢索。堆疊是一個帶有地址暫存器的記憶體單元。該暫存器影響堆疊的地址,稱為堆疊指標 (SP)。堆疊指標持續地影響位於堆疊頂部的元素的地址。

它可以將元素插入堆疊或從堆疊中刪除元素。插入操作稱為 push 操作,刪除操作稱為 pop 操作。在計算機堆疊中,這些操作透過增加或減少 SP 暫存器來模擬。

暫存器堆疊

堆疊可以排列為一組記憶體字或暫存器。考慮一個如圖所示排列的 64 字暫存器堆疊。堆疊指標暫存器包含一個二進位制數,它是堆疊頂部元素的地址。三個元素 A、B 和 C 位於堆疊中。

元素 C 位於堆疊頂部,堆疊指標持有 C 的地址,即 3。頂部元素透過讀取地址 3 處的記憶體字並將堆疊指標遞減 1 來從堆疊中彈出。然後,B 位於堆疊頂部,SP 持有 B 的地址,即 2。可以插入一個新字,透過將堆疊指標遞增 1 並將字插入到遞增的位置來壓入堆疊。

堆疊指標包含 6 位,因為 26 = 64,並且 SP 不能超過 63(二進位制中的 111111)。畢竟,如果將 63 遞增 1,則結果為 0(111111 + 1 = 1000000)。SP 只儲存六個最低有效位。如果將 000000 遞減 1,則結果為 111111。

因此,當堆疊已滿時,一位暫存器“FULL”被設定為 1。如果堆疊為空,則一位暫存器“EMTY”被設定為 1。資料暫存器 DR 儲存構成或讀出的二進位制資訊堆疊。

首先,將 SP 設定為 0,EMTY 設定為 1,FULL 設定為 0。現在,由於堆疊未滿 (FULL = 0),因此使用 push 操作插入新元素。

push 操作按如下方式執行:

SP←SP + 1它可以遞增堆疊指標
K[SP] ← DR它可以將元素寫入堆疊頂部
如果 (SP = 0) 則 (FULL ← 1)檢查堆疊是否已滿
EMTY ← 0標記堆疊非空

堆疊指標遞增 1,並將下一個較高字的地址儲存在 SP 中。來自 DR 的字使用記憶體寫入操作插入到堆疊中。第一個元素儲存在地址 1 處,最後一個元素儲存在地址 0 處。如果堆疊指標位於 0,則堆疊已滿,並且“FULL”設定為 1。這是 SP 位於 63 位置並且在遞增 SP 後,最後一個元素儲存在地址 0 處的條件。當元素儲存在地址 0 處時,堆疊中沒有更多空暫存器。堆疊已滿,“EMTY”設定為 0。

如果堆疊非空(如果 EMTY = 0),則從堆疊中刪除新元素。pop 操作包括以下微操作序列:

DR←K[SP]它可以從堆疊頂部讀取元素
SP ← SP – 1它可以遞減堆疊指標
如果 (SP = 0) 則 (EMTY ← 1)檢查堆疊是否為空
FULL ← 0標記堆疊未滿

從堆疊中讀取頂部元素並傳輸到 DR,從而遞減堆疊指標。如果堆疊指標達到 0,則堆疊為空,並且“EMTY”設定為 1。這是從位置 1 讀取元素並將 SP 遞減 1 的情況。

更新於:2023年10月31日

58K+ 瀏覽量

開啟您的職業生涯

完成課程後獲得認證

開始學習
廣告
© . All rights reserved.