細分暫存器

分割

當英特爾設計原始的 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 暫存器沒有任何處理器強制使用:它們僅適用於程式設計師想要的任何內容。

有人說選擇的名字只是為了繼續現有的集合的 CDE 主題……