6

Win32 で SEH がどのように実装されているかを読んでいて、FS registerと呼ばれるものに出会いました。Google で良いものを見つけることができませんでした (ほとんどの場合、間違ったものを検索している可能性があります)。それで、誰がそれが何であるかを説明できますか?

4

1 に答える 1

12

セグメントレジスタです。x86 には、CS、DS、ES、SS、FS、GS の 6 つがあります (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 に答える