保護模式下仍用 段:偏移位址 表示實際的實體地址。即os中學的段式儲存機制。
完成實模式到保護模式的跳轉後,段r中的值其實就變成了 selector。
將段暫存器的值(selector)經過gdt的對映後 與 偏移位址(小於段的界限)相加 得到最終的實體地址。
段描述符 共64位 其中段基址32位 段的最大界限20位 段的一些屬性12位。段基址和界限由於歷史原因被拆開存放。
儘管每個段暫存器事實上有乙個64-bit長的不可見部分,但intel為了保持向後相容,對於程式設計師來說,段暫存器就是16-bit的,那麼我們無法通過16-bit長度的段暫存器來直接引用64-bit的段描述符。
將段描述符集中起來形成乙個陣列,這個全域性的陣列就是gdt。將段暫存器中的值作為下標索引來間接引用(將段暫存器中的高13 -bit的內容作為索引),這就是所謂的選擇子selector。它的作用就是定位所需的段描述符。(相對於gdt基址的偏移)
gdt可以被放在記憶體的任何位置,那麼當程式設計師通過段暫存器來引用乙個段描述符時,cpu必須知道gdt的入口,也就是基位址放在**,所以 intel的設計者門提供了乙個暫存器gdtr
(48位)用來存放gdt的入口位址。
程式設計師將gdt設定在記憶體中某個位置之後,可以通過lgdt
指令將gdt的入口位址裝入gdtr暫存器, cpu就根據此暫存器中的內容作為gdt的入口來訪問gdt了。
暫存器cr0的第0位pe == 0 代表cpu執行於實模式 pe==1 代表cpu執行於保護模式。開機啟動時,執行於實模式。
為什麼叫保護模式呢?它「保護」了什麼?答案是程序的記憶體。保護模式的主要目的在於允許多個程序同時執行,並保護它們的記憶體不受其他程序的侵犯
組合語言不是結構化的語言,因此,它不提供直接的「區域性變數」。如果需要「區域性變數」,只能通過堆或棧自行實現
實模式與保護模式
實模式與保護模式 1.實模式,又叫實位址模式,cpu完全按照8086的實際定址方法訪問從00000h fffffh 1mb大小 的位址範圍的記憶體,在這種模式下,cpu只能做單任務執行 定址公式為 實體地址 左移4位的段位址 偏移位址,即 實體地址是由16位的段位址和16位的段內偏移位址組成的。2....
實模式與保護模式
實模式 即實位址訪問模式 它是intel公司80286及以後的x86 80386,80486和80586等 相容處理器 cpu 的一種操作模式。實模式被特殊定義為20位位址記憶體可訪問空間上,這就意味著它的容量是2的20次冪 1m 的可訪問記憶體空間 物理記憶體和bios rom 軟體可通過這些位址...
實模式和保護模式
實模式 即實位址訪問模式 它是intel公司80286及以後的x86 80386,80486和80586等 相容處理器 cpu 的一種操作模式。實模式被特殊定義為20位位址記憶體可訪問空間上,這就意味著它的容量是2的20次冪 1m 的可訪問記憶體空間 物理記憶體和bios rom 軟體可通過這些位址...