1.3.3 系统寄存器
一些寄存器是为 OS 设计的。这些寄存器不会为计算保存值。只会保存 OS 的数据结构所需要的一些信息。因此他们的角色是支持整个框架,与 OS 和 CPU 共生。所有程序都是运行在这套框架下。而这套框架也需要保证应用程序与系统之间,应用程序彼此之间能够很好地隔离;并且需要使其管理的资源多多少少对程序员透明。
这些寄存器非常重要的一点就是不能被应用程序所访问(至少是应用程序不能修改它们)。这是特权模式的功能了(参考 3.2 节)。
这里列出来这些寄存器。具体的细节会在之后讲到。
- cr0,cr4 存储不同的处理器模式和虚拟内存;
- cr2,cr3 被用来支持虚拟内存(参见 4.2 节和 4.7.1 节)
- cr8(别名 astpr)被用来调整中断策略(参考 6.2 节)
- efer 是另一个 flag 寄存器,用来控制处理器模式和扩展(e.g. 长模式和系统调用处理)
- idtr 保存了中断描述符表的地址(参见 6.2 节)
- gdtr 和 ldtr 保存了描述符表的地址(参见 3.2节)
- cs,ds,ss,es,gs,fs 叫作段寄存器。是用来兼容很久之前的遗产的,不过有一部分也被用来实现特权模式。参见 3.2 节。
图 1-5.rsi 和 dsi 分解
图 1-6.rsp 和 rbp 分解