文档章节

long mode 下的段寄存器

l
 lgj1107
发布于 2017/08/11 19:09
字数 329
阅读 25
收藏 0

DS ES SS 在长模式里直接装载空选择子即可!LDS LES POP ES POP DS这些类型的指令在长模式里

被废除,装填DS ES SS 只能用mov ds,ax 、ret、iret等指令。

xor    eax,eax

mov  ds,ax

mov    es,ax

 SS比较特别 切换到ring3时,SS的段描述符的DPL域是有用的!SS的基地址和界限域忽略!

在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

© 著作权归作者所有

上一篇: compaq 510
下一篇: SHUTDOWN AP CPU后续
l
粉丝 0
博文 67
码字总数 34164
作品 0
达川
私信 提问
GDT(Global Descriptor Table)

在Protected Mode下,一个重要的必不可少的数据结构就是GDT(Global Descriptor Table)。 为什么要有GDT?我们首先考虑一下在Real Mode下的编程模型: 在Real Mode下,我们对一个内存地址的...

残风
2012/09/28
157
0
字符设备驱动程序之中断方式的按键驱动_Linux异常处理结构(六)

字符设备驱动程序之中断方式的按键驱动_Linux异常处理结构 中断方式获取按键值(单片机) 1、有按键按下 2、CPU发生中断 强制调到异常向量入口执行(中断是异常的一种) 3、入口函数 跳转指令...

xiaodingqq
2018/05/12
0
0
GDT、GDTR、LDT、LDTR的学习

在Protected Mode下,一个重要的必不可少的数据结构就是GDT(Global Descriptor Table)。 为什么要有GDT?我们首先考虑一下在Real Mode下的编程模型: 在Real Mode下,我们对一个内存地址的...

apheal
2018/03/14
0
0
Linux内核源码学习 (1)- 从实模式到保护模式

在查找资料的过程发现了一份关于linux内核启动的课件,在这里附上。(本笔记参考了众多资料,向原作者致敬) 下载 鉴于本人对于操作系统已经有了一些初步的认识,所以本人从系统启动的入口点开...

notishell
2013/01/02
8.1K
6
通过位带地址操作GPIO在数码管显示数字(STM32_05)

一、什么是位带操作 位带操作简单讲就是将一个对二进制位的操作映射到一个32位的地址上,通过给这个地址置0或1来给这个二进制位置0或1。 二、CM3的位带操作 在CM3支持的位段中,有两个区中实...

fanxp66
2018/05/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

一起来学Java8(四)——复合Lambda

在一起来学Java8(二)——Lambda表达式中我们学习了Lambda表达式的基本用法,现在来了解下复合Lambda。 Lambda表达式的的书写离不开函数式接口,复合Lambda的意思是在使用Lambda表达式实现函...

猿敲月下码
9分钟前
2
0
debian10使用putty配置交换机console口

前言:Linux的推广普及,需要配合解决实际应用方能有成效! 最近强迫自己用linux进行实际工作,过程很痛苦,还好通过网络一一解决,感谢各位无私网友博客的帮助! 系统:debian10 桌面:xfc...

W_Lu
41分钟前
10
0
aelf Enterprise 0.8.0 beta有奖公测,“Bug奖金计划”重磅开启

2019年9月30日,aelf Enterprise 0.8.0 beta版正式发布。aelf Enterprise 0.8.0 beta是一个完备的区块链系统, 包含完备的区块链系统、开发套件、开发文档、以及配套的基础应用和基础服务。 ...

AELF开发者社区
42分钟前
8
0
oracle 初始化数据库脚本

create user lpf identified by 123456; create tablespace lpf_ts_cms datafile '/opt/app/oracle/product/11.2.0/lpf.dbf' size 200M; alter user lpf default tablespace lpf_ts_cms; sel......

internetafei
46分钟前
7
0
深入了解Redis底层数据结构

说明 说到Redis的数据结构,我们大概会很快想到Redis的5种常见数据结构:字符串(String)、列表(List)、散列(Hash)、集合(Set)、有序集合(Sorted Set),以及他们的特点和运用场景。不过它们是...

TurboSanil
47分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部