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