細分暫存器
分割
當英特爾設計原始的 8086 時,已經有許多具有 16 位功能的 8 位處理器 - 但他們希望生產出真正的 16 位處理器。他們還希望生成比現有產品更好,更強大的東西,因此他們希望能夠訪問超過 16 位定址暫存器隱含的最大 65,536 位元組的記憶體。
原始段暫存器
因此,他們實現了段的概念 - 一個由 16 位地址暫存器索引的 64 千位元組記憶體塊 - 可以重新基於以解決總記憶體的不同區域。為了保留這些細分基礎,它們包括細分受眾群:
CS
程式碼段暫存器。
這儲存了當前正在執行的程式碼段,由隱式IP
(指令指標)暫存器索引。DS
資料段暫存器。
這儲存了程式操作的資料的預設段。ES
額外段暫存器。
它包含第二個資料段,用於在整個儲存器中同時進行資料操作。SS
堆疊段暫存器。
這儲存了儲存當前堆疊的記憶體段。
細分大小?
段暫存器可以是任何大小,但使它們 16 位寬,這使得它很容易與其他暫存器互操作。接下來的問題是:如果細分市場重疊,如果是,那麼多少?該問題的答案將決定可以訪問的總記憶體大小。
如果根本沒有重疊,那麼地址空間將是 32 位 –4 千兆位元組 - 這在當時是完全聞所未聞的大小! 8 位的更自然重疊將產生 24 位地址空間,或 16 兆位元組。最後,英特爾決定通過使地址空間為 1 兆位元組且 12 位重疊來節省處理器上的四個地址引腳 - 他們認為這個時間足夠大!
更多細分登記冊!
當英特爾設計 80386 時,他們認識到現有的 4 個分段暫存器套件不足以滿足他們希望它能夠支援的程式的複雜性。所以他們又增加了兩個:
FS
遠段暫存器GS
全域性部門註冊
這些新的 Segment 暫存器沒有任何處理器強制使用:它們僅適用於程式設計師想要的任何內容。
有人說選擇的名字只是為了繼續現有的集合的
C
,D
,E
主題……