【问题标题】:What is the advantage of using segment registers (today)?使用段寄存器(今天)有什么好处?
【发布时间】:2015-01-08 00:32:22
【问题描述】:

我尝试了很长时间来了解段寄存器的内容 目的是什么?我都准备好知道这来自过去(8086) 那里只有 1 MB 的物理内存。但是CPU有 只有 16 位宽的地址寄存器。使用这 16 个地址位 您只能寻址 64K 字节。所以 1MByte 地址空间必须分开 分成每个 64K 大小的段。

在我看来,这似乎是过去的要求,那些工程师不愿解决某种有限的内存空间等问题。但我的问题是今天的段寄存器有什么优势?您将如何或在哪里以有用的方式使用它们? 如果您需要澄清,请发表评论。

【问题讨论】:

  • 在受保护模式的操作系统(Windows、Linux、MacOS X)中,您根本不能使用段,因为描述符表不受您控制。
  • 觉得聪明,因为你能理解所有可怕的东西?或者我猜是为平面地址 64 位操作系统编写引导加载程序。
  • @xmojmr 此外,OP 根本没有指定用户模式,因此内核模式也使用计数。分段用于我们都同意的目的,其中一部分是操作系统,一部分是应用程序。

标签: assembly x86 cpu-registers memory-segmentation


【解决方案1】:

阅读关于the Flat Model

今天的段寄存器主要用作向后兼容的遗留(@Jester 提到的 FS-GS 除外)

【讨论】:

    【解决方案2】:

    可以说,x86-64 长模式是“今天”的技术。大部分经典分割是不存在的,只有FSGS 用于实际目的。 FS 通常用于用户模式下的各种线程本地和系统数据,而GS 用于内核模式。 SWAPGS 指令支持后一种用法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-31
      • 2019-08-05
      • 2017-10-07
      • 2012-01-28
      相关资源
      最近更新 更多