實模式:程式設計師可以直接在實體地址上進行編寫程式,此時還沒有作業系統進行記憶體的管理。
實模式下的cpu架構為:8086,16位資料匯流排,20位的位址匯流排。可定址空間大小為2^20=1m,但是由於資料匯流排僅僅支援16位,而由cpu法出的位址卻是20位,為了使得位址位數為16。8086進行了這樣的規定:物理記憶體的位址必須是16的倍數,也就是說經過分段,段大小在這個區間[16, 2^16=64k]。這樣做的好處是,位址是16的倍數意味著位址的二進位制形式其第四位是0,這樣一來,多餘的4位0可以不用表示,那麼就可以用16位的資料匯流排來傳輸20位的物理記憶體位址。
8086常用的段暫存器(都是16位的): ds(資料段暫存器),cs(**段暫存器),ss(堆疊段暫存器)。
實模式記憶體分段的管理:由於段暫存器都是16位的,在實際由cpu發出的位址是類似這樣的,ds<<4 + ip = 實體地址, 通過這樣的方式進行物理記憶體的訪問。其中,ds<<4也稱之為段基址,ip為偏移量,偏移位址,邏輯位址(它表示的在記憶體的乙個段上的偏移量)。
X86保護模式下的記憶體定址
段選擇器 32位彙編中16位段暫存器 cs ds es ss fs gs 中不再存放段基址,而是段描述符在段描述符表中的索引值,d3 d15位是索引值,d0 d1位是優先順序 rpl 用於特權檢查,d2位是描述符表引用指示位ti,ti 0指示從全域性描述表gdt中讀取描述符,ti 1指示從區域性描述...
x86架構實模式和保護模式
實模式 real model 保護模式 protected model cs code segment 段 ds date segment 資料段 es extra segment 附加段 ss stack segment 棧段 保護模式又稱虛擬位址保護模式,與之相對的是實模式。保護模式是在8028...
X86 保護模式下的段界限的計算
這幾天一直在學習 對於普通段而言,由於段是向上生長的,所以段界限l定義的是段向上增長的最大偏移量,說通俗一點就是這個段的偏移量從0開始增加,最大可以增加到l,超過l就越界了。對於堆疊段而言,由於段是向下生長的,所以如果此時段界限l定義的是段向下減少的最大偏移量,說通俗一點就是這個段的偏移量從1開始減...