問題タブ [memory-segmentation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
216 参照

winapi - ES、GS、FSを使用できるようにするWin32用のAPIはありますか?

アセンブラプログラムでES、FS、およびGSを使用して、3つの個別のアドレス空間を使用できるようにしたいと思います。

LDTをセットアップし、適切なセレクターの値を提供するWin32 APIはありますか?

0 投票する
3 に答える
21298 参照

linux - アセンブリの%gsとは

gccでコンパイルした後、この関数は次のアセンブリコードに変換されます。

私は2行を理解していません:

%gsとは何ですか、そしてこれらの2行は正確に何をしますか?

これはコンパイルコマンドです:

0 投票する
2 に答える
1239 参照

windows - TIB カスタム ストレージ

ここでかなりのグーグル検索といくつかのヒントを提供した後、最終的にセグメントのレイアウトを見つけることができましたFS(TIBデータを保存するためにウィンドウで使用されます)。特に興味深いのはArbitraryUserPointer、PSDK で提供されているメンバーです。

この変数を使用することは正確にどのくらい安全ですか (Vista 以降)? x64にはまだ存在しますか?

それに続くのは、この変数へのアクセスです。私は MSVC を使用しているため、__readfsdword&__readgsqword組み込み関数にアクセスできますが、MSDNは何らかの理由でこれらを特権命令としてマークしています。

これらの組み込み関数はカーネル モードでのみ使用でき、ルーチンは組み込み関数としてのみ使用できます。

もちろん、それらはカーネルだけではありませんが、なぜそのようにマークされているのですか?ドキュメントが間違っているだけですか? (私のオフライン VS 2008 ドキュメントにはこの句がありません)。

最後に、ArbitraryUserPointerシングルを介して直接アクセスするのは安全__readfsdword(0x14)ですか、それともリニア TIB アドレスを介して使用することをお勧めしますか? (これはまだ からの読み取りが必要ですFS)。

0 投票する
2 に答える
3426 参照

operating-system - 最新のオペレーティングシステムにおけるメモリセグメンテーション

オペレーティングシステムの研究(主にLinuxを参照)では、私が研究した資料では十分に説明されていない点がいくつかあります。

メモリにロードされたプログラムは、仮想メモリが純粋にページングに基づいているLinuxのようなオペレーティングシステムのコンテキストでも、テキスト、データ、スタックなどのセグメントに分割されていると説明されることがよくあります。セグメント化されたと呼ばれるのはプログラムだけであり、メモリ自体ではないというのは事実ですか?もしそうなら、私は用語が混乱していると思います。

データセグメントのサイズを大きくする「sbrk」という呼び出しを使用して、mallocをLinuxに実装できることを確認しました。繰り返しますが、この「データセグメント」は、「実際の」セグメントではなく、慣例によりデータに使用されるメモリの領域にすぎませんか?(追加の質問:「sbrk」は「セグメント」のサイズを縮小できないようです。これは、プロセスが終了する以外にOSにメモリを解放できないことを意味しますか?)

また、最近のオペレーティングシステムが(ページングされた)セグメンテーションを使用していないように見える理由を知りたいと思います。特定の種類の攻撃を防ぎ、コードを独自の保護されたセグメントに配置して、セキュリティを強化しませんか?一方で、これは例えばJITコンパイルを不可能/困難にするでしょうか?

上記の質問に対する「はい」/「いいえ」の回答に加えて、私はこの主題に関する洞察に満ちた詳細に興味があります。

0 投票する
1 に答える
10425 参照

assembly - セグメントの計算:絶対アドレスからのオフセット

Segment:OffsetアドレスはSegment*0x10+として計算できますOffset。しかし、どうすれば反対を計算できますか?

たとえば、どのようにから0xF4170F400:0170、から0xACF04へ行くのABCD:1234ですか?

0 投票する
1 に答える
363 参照

memory-management - プロセスマップに関する質問

ここでは、2 つの異なる端末で同じプログラムの 2 つのインスタンスを実行しています。それらのプロセスマップは

最初のターミナルで -

第2ターミナルでは -

私の質問は -

  1. 「/lib/x86_64-linux-gnu/ld-2.13.so」このライブラリには、端末 1 と 2 に 2 つの異なるアドレス ( 00007f90f279a000 と 00007f3b0b0cb000 ) があります。このライブラリがメイン メモリに 2 回読み込まれるということですか。

  2. a.out が単純な Hello_World.c プログラムのバイナリであると仮定します

    次に、a.out のどの部分に r & w パーミッションがありますか? 簡単に言えば、ソース「0000000000601000 4K rw--- /home/vikram/a.out」のどの部分がこのセグメントに含まれていると思われますか?

  3. anon が他のセグメントのように連続していないのはなぜですか?

  4. What " 00007f90f2590000 2044K ----- /lib/x86_64-linux-gnu/libc-2.13.so " このセグメントには .... 読み取り、書き込み、実行権限がないため、含まれているはずです。

0 投票する
1 に答える
838 参照

c - Win32 での TIB アクセス

次のような、TIB で動作する Win32 API 関数の実装を掘り下げます。

  • TLS アクセス機能: TlsAllocTlsFreeTlsSetValueTlsGetValue
  • GetLastErrorSetLastError
  • メッセージング サブシステム:GetMessageなどPeekMessage

fs:[0x18]セレクターの内容を読み取ることによって、それらすべてが TIB (TEB と呼ばれることもあります) にアクセスすることがわかります。

OTOH fsregisterが直接指しているので、これは不要です。この記事と私が実際に見たものによると、registerfsは TIB 構造の先頭へのアドレスを保持しますが、オフセット 0x18 にはそれ自体へのポインターがあります。

それにもかかわらず、TIB に間接的にアクセスする理由は何でしょうか?

0 投票する
2 に答える
5989 参照

c - バス エラー: 10. C コード、malloc の例

次の C コードをコンパイルしようとすると、バス エラーが発生します。私が memcpy を呼び出した方法と関係があると思いますが、それを理解することはできません。どんな助けでも大歓迎です!

0 投票する
3 に答える
5543 参照

gdb - gdbでFSまたはGSベースで論理アドレスを使用するには?

gdb は、特定の線形アドレスに対して読み取りまたは書き込みを行う機能を提供します。次に例を示します。

しかし、どのように論理アドレスを指定しますか? 次の指示に出くわしました。

gdb の "%gs:0x14" でメモリを読み取る方法、またはこの論理アドレスをxコマンドで使用できる線形アドレスに変換する方法を教えてください。

注: この命令の後、単に %eax を読み取ることができることはわかっていますが、それは私の関心事ではありません

0 投票する
6 に答える
97128 参照

assembly - 「FS」/「GS」レジスタの目的は何ですか?

だから私は次のレジスタとその使用法が何であるかを知っています:

  • CS =コードセグメント(IPに使用)

  • DS =データセグメント(MOVに使用)

  • ES =宛先セグメント(MOVSなどに使用)

  • SS =スタックセグメント(SPに使用)

しかし、使用することを目的とした次のレジスタは何ですか?

  • FS = "ファイルセグメント"?

  • GS = ???

注:私は特定のオペレーティングシステムについて質問しているのではありません。CPUがそれらを何に使用することを意図していたのかについて質問しています。