DS ES SS 在長模式裏直接裝載空選擇子便可!LDS LES POP ES POP DS這些類型的指令在長模式裏測試
被廢除,裝填DS ES SS 只能用mov ds,ax 、ret、iret等指令。select
xor eax,eax方法
mov ds,axim
mov es,ax數據
SS比較特別 切換到ring3時,SS的段描述符的DPL域是有用的!SS的基地址和界限域忽略!img
在RING3中若是裝填DS ES ,DPL域必須設置正確,可是若是裝填的是0(空選擇子),DPL域
不須要設置!
Intel CPU 的 EFER
AMD CPU的EFER
AMD EFER 有一LMSLE 這個是能夠控制數據段界限。
長模式下FS和GS若是用傳統指令裝載如 mov fs,ax、pop fs 等。他們只能提供32位base address,由於
段描述符base address 域只有4個字節因此只能提供32位base adress。
要想得到64位地址,要使用FS_BASE和GS_BASE這兩個MSR,最保險的方法是先用NULL Selector裝填到FS GS 而後在初始化FS_BASE和GS_BASE這兩個MSR。
AMD的CPU在64位模式用null selector 裝載到GS FS是不會刷新這2個段寄存器基地址。intel的沒測試。
待續1111