FS在Win32中注册

时间:2011-02-01 08:05:19

标签: winapi filesystems seh

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

1 个答案:

答案 0 :(得分:11)

这是一个段寄存器。 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写了一篇非常好的article,它仍然可以在MSDN上找到。