我正在阅读如何在Win32中实现SEH,并且遇到了称为 FS寄存器的东西。我在Google上找不到任何好的东西(很可能是我在寻找错误的东西)。那么谁能解释一下这是什么呢?
最佳答案
这是一个段寄存器。 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上仍然可用。
关于winapi - FS在Win32中注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4860225/