Win32中的FS寄存器

发布于 2024-10-15 05:49:40 字数 111 浏览 9 评论 0原文

我正在阅读 SEH 是如何在 Win32 中实现的,并且遇到了这个称为FS 寄存器的东西。我在谷歌上找不到任何好东西(很可能我搜索的是错误的东西)。那么谁能解释一下它是什么?

I'm reading how SEH is implemented in Win32 and I came across this thing called the FS register. I couldn't find anything good on Google (most probably I may be searching for the wrong thing). So can anyone explain what it is?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

生生漫 2024-10-22 05:49:40

这是一个段寄存器。 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 上找到。

It's a segment register. The x86 has six of them: CS, DS, ES, SS, FS and GS (FS and GS were new in 80386). The mnemonics come from their roles: code segment, data segment, extended segment (in fact, an auxiliary register), stack segment. These roles are hard-coded in the semantics of x86 assembly instructions. FS and GS are auxiliary like ES so they just bear the next letters after E.

In 32-bit protected mode as it's typically used (e.g., in Windows, Linux, *BSD), CS, DS, ES and SS are all set with a base of 0 and a limit of 4Gig, and memory protection is done only with page permissions. FS points to a Thread Information Block (TIB) in user mode and to Processor Control Region (KPCR) in kernel mode. Matt Pietrek wrote a pretty good article about it years ago that's still available on MSDN.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文