细分寄存器
分割
当英特尔设计原始的 8086 时,已经有许多具有 16 位功能的 8 位处理器 - 但他们希望生产出真正的 16 位处理器。他们还希望生成比现有产品更好,更强大的东西,因此他们希望能够访问超过 16 位寻址寄存器隐含的最大 65,536 字节的内存。
原始段寄存器
因此,他们实现了段的概念 - 一个由 16 位地址寄存器索引的 64 千字节内存块 - 可以重新基于以解决总内存的不同区域。为了保留这些细分基础,它们包括细分受众群:
CS
代码段寄存器。
这保存了当前正在执行的代码段,由隐式IP
(指令指针)寄存器索引。DS
数据段寄存器。
这保存了程序操作的数据的默认段。ES
额外段寄存器。
它包含第二个数据段,用于在整个存储器中同时进行数据操作。SS
堆栈段寄存器。
这保存了保存当前堆栈的内存段。
细分大小?
段寄存器可以是任何大小,但使它们 16 位宽,这使得它很容易与其他寄存器互操作。接下来的问题是:如果细分市场重叠,如果是,那么多少?该问题的答案将决定可以访问的总内存大小。
如果根本没有重叠,那么地址空间将是 32 位 –4 千兆字节 - 这在当时是完全闻所未闻的大小! 8 位的更自然重叠将产生 24 位地址空间,或 16 兆字节。最后,英特尔决定通过使地址空间为 1 兆字节且 12 位重叠来节省处理器上的四个地址引脚 - 他们认为这个时间足够大!
更多细分登记册!
当英特尔设计 80386 时,他们认识到现有的 4 个分段寄存器套件不足以满足他们希望它能够支持的程序的复杂性。所以他们又增加了两个:
FS
远段寄存器GS
全局部门注册
这些新的 Segment 寄存器没有任何处理器强制使用:它们仅适用于程序员想要的任何内容。
有人说选择的名字只是为了继续现有的集合的
C
,D
,E
主题……