私はFSの目的でMSDNのドキュメントが登録見つけた:、x86の環境ではWindows上で使用するGSレジスタは何ですか?
」の現在の値にFSレジスタポイント:ということを述べている
https://msdn.microsoft.com/en-us/library/ms253960(v=vs.90).aspx
スレッド情報ブロック(TIB)構造。
しかし、私は、Windowsベースの環境でGSレジスタの目的を厳密に文書化することはできません。
誰かが私にどこを見ているか教えてくれますか?
かなり同じことです。例えば、 [this](http://stackoverflow.com/questions/6611346/how-are-the-fs-gs-registers-used-in-linux-amd64)と[this](https://github.com/wishstudio)/flinux/wiki/LinuxとWindowsの違い)。 – Michael
@マイケル:私は見ましたが、私はどちらの人にもこの質問に対する答えは見ません。 WindowsはTIBに 'FS'を使いますが、' GS'はどうですか?それはユーザー空間にとって有用な何かを保持していますか?速いgoogleでは、 '' GS'がx86-64 Windows上でTIBリファレンスを保持していることがわかりました(https://en.wikipedia.org/wiki/Win32_Thread_Information_Block)。これは 'swapgs'がカーネルにとってあまり便利ではないので奇妙に思えます。 'gs'のユーザ空間の値を変更してください。 (Linuxはこの理由でTLSに 'fs'を使います、IIRC)。しかし、とにかく、問題は、64ビット版Windowsで使われている他のセグメントレジスタは何ですか? –
WindowsでのFSとGSの使用方法は実装の詳細であり、意図的に文書化されていません。私が正しく覚えているならば、リバースエンジニアリングは、32ビットWindows上でFSがTIB/TEBへのポインタを保持し、GSがスレッドローカルストレージ(TLS)へのポインタを保持しているか、全く使われていないことを示唆しています。 64ビットWindowsでは、GSはTIB/TEBを指します。なぜあなたはこの情報を知る必要がありますか?どのような問題を解決しようとしていますか? –