x64长模式与段的纠葛

如果发现错误或者需要补充的内容,还请指正。

0. 前言

基本概念

在x86-64计算机体系结构中,长模式是64位操作系统可以访问64位指令和寄存器的模式。

64位程序以称为64位模式的子模式运行,而32位程序和16位保护模式程序则以称为兼容模式的子模式执行。

分页和分段有两个共同作用:内存管理与地址映射;一定的内存保护机制。

整体说明(AMD中的x64长模式与段)
  • x64长模式仍然支持使用本地描述符表(LDT)和全局描述符表(GDT)。
  • x64长模式仍支持使用新的描述符格式的调用门。
  • x64长模式仍然支持使用FS/GS的基于描述符表(GDT / LDT)的分段。

1. 分段寻址

16bit和32bit处理器都支持分段寻址。但是寻址过程算法不同。

32bit兼容模式仍然支持分段寻址。x64长模式不支持分段寻址,直接使用分页寻址。

使用分段寻址的意义如下。即隔离不同任务和它们使用的数据,提高同时运行多个进程的系统的可靠性。

Segmentation was originally invented as a method by which system software could isolate different software processes (tasks) and data they are using. It was intended to increase reliability of the systems running multiple processes simultaneously.

2. 段寄存器

32bit下,CS, DS, ES, 和SS的基地址对应代码段、数据段等的段基址。

x64长模式下,CS, DS, ES, 和SS的基地址被设置为0。FS和GS的基址不限于0,它们继续用作指向诸如进程环境块和线程信息块之类的项的偏移量的指针。

3. 描述符表和描述符表寄存器

依然使用描述符表LDT和GDT。x64 Windows内核不提供任何用户模式应用程序创建LDT的机制。

GDT在64位模式下仍然存在。

全局描述符表寄存器(GDTR)和中断描述符表寄存器(IDTR)扩展到10个字节,以便可以容纳完整的64位基址。 本地描述符表寄存器(LDTR)和任务寄存器(TR)也可以扩展以容纳完整的64位基址。

4. 门调用过程

ASM社区中能找到这样的说法 ”在64位模式和兼容模式下,可以使用far call来引用64位调用门描述符“。

AMD重新定义新的 x64长模式调用门描述符格式,删除旧的“参数计数”并将其扩展为16字节格式。x64长模式下的门描述符如下图。如果调用门将其自身放入描述符表中,则处理器仍将支持使用far call或far jmp来引用调用门描述符并将 CS:RIP 更改为新位置。

这部分可以另外了解一下SMEP(Supervisor Mode Execution Prevention)技术,该技术可以替代门调用过程来实现提权操作。

5. 64bit长模式下的far CALL & far JMP

在Intel手册中有这样的说明:

A) Far CALL (opcode 48, FF, /3) or in asm:

call tbyte ptr [rcx]

可以被用于调用 “代码段“ 或者一个 ”调用门“,调用者和被调用者可以在同一个段内,也可以在不同的段内。由段选择子查询GDT和LDT来决定调用 “代码段” 还是 ”调用门“。

  • ”代码段“ 只能指定相同特权级的调用。他可以调用32bit兼容模式的代码,也可以调用64bit长模式的代码(取决于L标志位)。
  • ”调用门“ 能指定相同权限级或者不同权限级的调用。但是他不能跳转到32bit兼容模式,只能跳转到同样是64bit长模式的代码段。

B) Far JMP (opcode 48, FF, /5) or in asm:

jmp tbyte ptr [rcx]

参考文章

Memory segmentation

Memory Segmentation in 8086 Microprocessor

Why 64 bit mode ( Long mode ) doesn’t use segment registers?

Bringing Call Gates Back

Long mode

What is the 64-bit call-gate descriptor?

Global Descriptor Table

Difference between far JMP and far CALL in a long 64-bit mode

x64长模式与段的纠葛相关推荐

  1. 3.操作系统——CPU的实模式、保护模式和长模式

    有实模式.保护模式.长模式 实模式16(实地址模式) 真实分为两个方面: 运行真实指令.不区分指令动作,只是直接执行指令的真实功能 发往内存的地址是真实.不加限制的. 总结来说就是,这个模式下直接往物 ...

  2. Linux开机启动过程(4):切换到64位模式-长模式(直到内核解压缩之前)

    内核引导过程. Part 4. 本文是在原文基础上经过本人的修改. 切换到64位模式 直到内核解压缩之前的所有步骤 这是 内核引导过程 的第四部分,我们将会看到在保护模式中的最初几步,比如确认CPU是 ...

  3. CPU的三种工作模式:实模式、保护模式、长模式

    文章目录 **实模式** **保护模式** **长模式** **总结** 实模式 访问内存 实模式也就是说寄存器中存放的地址都是真实地址,比如下面这段程序: data SEGMENT ;定义一个数据段 ...

  4. 操作系统:浅谈实模式,保护模式与长模式

    学习了操作系统的实模式.保护模式与长模式,此文作为回顾. x86 CPU 在第一次加电和每次 reset 后,都会自动进入实模式,要想进入保护模式,就需要程序员写代码实现从实模式切换到保护模式. 一. ...

  5. 虚拟机VMWare“提示:软件虚拟化与此平台上的长模式不兼容”的解决方法

    虚拟机VMWare"提示:软件虚拟化与此平台上的长模式不兼容" 不少童鞋反映,在使用Windows7 64位操作系统时,无法运行VMWare或MS Virtual server等软 ...

  6. FreeBSD长模式不兼容

    二进制转换与此平台上的长模式不兼容.此虚拟环境中的长模式将被禁用.因此需要使用长模式的应用程序将无法正常运行.请参见 http://vmware.com/info?id=152 了解更多详细信息. m ...

  7. 解决vmware“二进制转换和长模式与此平台兼容.....”问题

    问题描述: 启动vmware显现:1.二进制转换和长模式与此平台兼容....字等.: 2.vmware启动一会,系统直接重新启动,这个现象出如今惠普电脑上 问题原因: 出现这种原因一般都是因为系统Vi ...

  8. 解决vmware“二进制转换与此平台长模式不兼容.....”的问题

    原文链接:http://dtbuluo.com/113.html 问题说明: 启动vmware出现:1.二进制转换与此平台长模式不兼容....等等字样: 2.vmware启动一会,系统直接重启,这个现 ...

  9. Linux环境准备五---VMWare打开CentOS虚拟机报错VT(长模式不兼容)等错误的解决方案

    版权声明:本文为博主原创文章,未经博主允许不得转载!! 欢迎访问:https://blog.csdn.net/qq_21439395/article/details/81951971 交流QQ: 82 ...

最新文章

  1. 配置Windows 2008 R2 防火墙允许远程访问SQL Server 2008 R2
  2. python完美立方数_Python练习实例3 | 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?...
  3. 【转载】详解 Spring 3.0 基于 Annotation 的依赖注入实现
  4. NYOJ 906 杨辉三角
  5. 在 C# 中,new 关键字可用作运算符、修饰符或约束。
  6. boost::sort模块使用 string_sort 使用复杂的多部分键对结构进行排序
  7. python基础知识点整理(1)
  8. 教你如何将二进制文件导入到数据库
  9. sql自定义函数学习思路_学习SQL:用户定义的函数
  10. 解决Caused by: java.io.IOException: java.io.IOException: error=12, Cannot allocate memory
  11. SQLSERVER事务日志已满 the transaction log for database 'xx' is full
  12. js 的 protype 小总结
  13. 一种解决各种 macos unlocker 无法下载 Darwin.iso 的方法
  14. esp8266教程:定时器之PWM
  15. 市场调研报告-全球与中国云产品生命周期管理(PLM)软件市场现状及未来发展趋势
  16. C++基础知识点小结
  17. UI优化策略-Shader篇
  18. c语言之simp _link
  19. Spanky - beloved ~桜の彼方へ~ -full ver
  20. html+css布局实例:CSS过渡-Transitions手风琴效果之鼠标位置的图片自动移动

热门文章

  1. 深度学习:神经网络中的前向传播和反向传播算法推导
  2. ASEMI整流桥ABS10的参数怎么看,ABS10的作用是什么?
  3. asp获取电脑物理地址_编写Metasploit模块获取Xshell和Xftp明文密码
  4. 百合数c语言360问答,百合花的朵数含义?
  5. 【华人学者风采】Xifeng Yan 加州大学圣巴巴拉分校
  6. Shader头发效果
  7. 树莓派 Raspberry Pi 4 来了,价格不变,性能倍增
  8. 做站群前期的准备工作
  9. 国内首部“无限流”,热搜突破300+,《开端》能否创造国产剧新方向?
  10. vc messagebox怎么选择选项_亚马逊VC卖家被迫转向第三方卖家,下一步要怎么做?...