棧是不是一種硬體結構?

時間 2021-06-02 20:27:10

1樓:韓樸宇

過去一些計算機是有硬體上的棧,比如用於計算器的Intel 4004,8008.

但是隨著DRAM的流行,專用的棧消失了,變成了DRAM裡的一塊位址和暫存器中的棧指標.

2樓:

首先廣義來說,棧(stack)只是乙個概念,就是具有內容物先進後出的乙個容器,物理上來看,比如前面答主的泡騰片盒,還有乙個例子就是彈匣。

stack這個詞,自從有了作業系統(嚴格來說是在多執行緒OS出現)以後,被賦予了嚴格的功能定義:每個程式例項,都會在記憶體裡被分配有乙個stack(棧)和heap(堆)。stack和heap的區別這裡不多說。

stack因為是被分派來做臨時資料儲存(用完就丟掉)記憶體分配在高區,同時它的內容一定是要符合先進後出的訪問規則。

最後回到你的困惑,完全不必糾結,既然是乙個概念,一種內容訪問方式,那麼用軟體實現(記憶體),用硬體實現(暫存器),或者用材料打造乙個(彈匣,藥盒),都是可以的。全看你使用在什麼場合而已。

3樓:宅學部落-王利濤

首先棧是一種資料結構,FILO,先進後出,跟佇列的FIFO是相反的。對棧的操作一般是通過棧頂指標來完成:壓棧和出棧兩種基本操作。

先壓入棧底的資料要等到上面的資料彈出去之後,才能出棧,正如下面的藥丸一樣:先放進去的,要等到上面的藥丸彈出來之後,才能出棧。

棧的實現一般是在記憶體中實現的,不同架構的CPU一般都會有專門的棧指標暫存器,來支援棧的實現。如X86架構的CPU有ESP和EBP暫存器、ARM結構的CPU有SP和FP暫存器分別指向棧頂和棧底。在資料出棧入棧的過程中,這些暫存器會自動變化位址,總是指向棧頂(如ARM的滿遞減棧)。

當然,你也可以自己編寫程式,不使用CPU的暫存器,使用軟體來模擬乙個棧的出棧、入棧操作也是可以的。

綜上我們可以看到:棧是一種資料結構,它一般是在記憶體中實現的,就是程式執行期間的一段記憶體。在實現的過程中,可以依賴CPU暫存器的硬體支援、也可以根據自己的特定需求,使用軟體模擬來實現。

藝術是不是一種欺騙?

dingzi 先不說尼采,太廣闊。簡要地回答 藝術就像做夢。夢裡可能有你想要的,但在現實世界裡還沒有的。所以會有費里尼的名言 夢是唯一的真實 很多藝術家也都認同這句話。有很多在現實世界裡還不能實現的想法或願望,可以用藝術創造來實現。藝術是一種實現個人價值觀的方式。這種方式和用金錢 物質 工作的方式是...

聰明是不是一種錯覺?

花生Peadar 曾經考慮過這個問題,結論是差距確實存在,不是錯覺。個人認為原因有二。其一是思維方式的不同。思維方式的形成因素很多很雜,最終的結果差距也非常大。比如文科理科.其二便是馬太效應 強者愈強 弱者愈弱 一旦某些孩子在在一開始領先其他孩子一點點,他會越來越自信,然後差距越來越大。因此一般聰明...

旅行是不是一種病?

往後餘生 旅行,不是一種病。不是古語云 讀萬卷書不如行萬里路。旅行的時候,人是放鬆的,許多平時看不到的點或者事情,都會從中找到。相反,旅行不是一種病,反而是療傷治病的良藥。多看看,多走走,增文博識,心中的路就有千萬條,何必執著於一隅 遠方的雲2017 所謂仁者見仁智者見智,看你怎麼看了。我喜歡旅行,...