FS在Win32中注册

aki*_*kif 6 filesystems winapi seh

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

Jer*_*fin 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 几年前写了一篇很好的文章,它仍然可以在MSDN上找到.

  • @hab:AFAIK,它们实际上没有任何意义 - 它们已经有了C,D和E,所以当它们添加更多时,它们使用F和G,但似乎没有任何特定的想法让它们代表. (2认同)