我尝试了很长时间来了解段寄存器的用途是什么?我都知道这来自过去(8086),那里只有 1 MB 的物理内存。但是 CPU 只有 16 位宽的地址寄存器。使用这 16 个地址位,您只能寻址 64K 字节。因此,必须将 1MByte 地址空间分成每个 64K 大小的段。
在我看来,这似乎是过去的要求,那些工程师不愿解决某种有限的内存空间等问题。但我的问题是今天的段寄存器有什么优势?您将如何或在哪里以有用的方式使用它们?如果您需要澄清,请发表评论。
我尝试了很长时间来了解段寄存器的用途是什么?我都知道这来自过去(8086),那里只有 1 MB 的物理内存。但是 CPU 只有 16 位宽的地址寄存器。使用这 16 个地址位,您只能寻址 64K 字节。因此,必须将 1MByte 地址空间分成每个 64K 大小的段。
在我看来,这似乎是过去的要求,那些工程师不愿解决某种有限的内存空间等问题。但我的问题是今天的段寄存器有什么优势?您将如何或在哪里以有用的方式使用它们?如果您需要澄清,请发表评论。
阅读有关平面模型的信息。
今天的段寄存器主要用作向后兼容的传统(@Jester 提到的 FS-GS 除外)
可以说,x86-64 长模式是“今天”的技术。大多数情况下,经典的分割是不存在的,仅FS
用于GS
实际目的。FS
通常用于用户模式下的各种线程本地和系统数据,而GS
用于内核模式。SWAPGS
指令支持后一种用法。