6

我正在阅读 SEH 在 Win32 中是如何实现的,我遇到了这个叫做FS register的东西。我在 Google 上找不到任何好东西(很可能我正在寻找错误的东西)。那么任何人都可以解释它是什么吗?

4

1 回答 1

12

它是一个段寄存器。x86 有六个:CS、DS、ES、SS、FS 和 GS(FS 和 GS 在 80386 中是新的)。助记符来自它们的角色:代码段、数据段、扩展段(实际上是一个辅助寄存器)、堆栈段。这些角色在 x86 汇编指令的语义中被硬编码。FS 和 GS 和 ES 一样是辅助的,所以它们只带有 E 之后的下一个字母。

在通常使用的 32 位保护模式下(例如,在 Windows、Linux、*BSD 中),CS、DS、ES 和 SS 都设置为以 0 为基数,限制为 4Gig,并且内存保护仅通过页面权限。FS 在用户模式下指向线程信息块 (TIB),在内核模式下指向处理器控制区域 (KPCR)。几年前, Matt Pietrek 写了一篇关于它的非常好的文章,仍然可以在 MSDN 上找到。

于 2011-02-01T08:20:44.867 回答