問題タブ [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 に答える
1124 参照

x86 - RPL は x86 マシンの DPL と異なることがありますか?

x86 セグメンテーション保護に関するブログ記事を読んでいました。RPL は DPL と異なる可能性がありますか? もしそうなら、これのユースケースは何ですか?

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

assembly - 手で物理アドレスを割り出す (IDTR レジスター)

私は長い間これを理解しようとしてきましたが、どこにも行きません。

これが私がやろうとしていることです: IDTR に含まれる値が 0x3A000 の場合、プロテクト モードのどの物理アドレスに割り込みベクトル番号 3 がありますか?

割り込みベクトル #3 のオフセットの各バイトの物理アドレスと、割り込みベクトル #3 のセグメントの各バイトの物理アドレスを計算するのに役立つ式を見つけたいと思います。

私はインターネットを見回してきましたが、IDTRがこれをどのように計算するかについての明確な説明はなく、本当に興味があります.

また、リアルモードでこれと同じ物理アドレスがどのように見つかるかについても興味があります...

誰かがこの種の質問を解決するための一般的な公式を見つけるのを手伝ってくれたら、それは素晴らしいことです!

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

assembly - x86 プロテクト モードでのセグメント レジスタの目的は何ですか?

DSいくつかの dll を変更する必要がありますが、プロテクト モードでセグメント レジスタ ( 、SS、...) が正確に何をするのかわかりません。私は学校で実際の 16 ビット モードについて学びました。このモードでは、セグメント レジスタに 16 を掛けて、通常のレジスタのオフセットを足すと、物理メモリの実効アドレスが得られます。プロテクト モードでは、各プロセスが 4GB のメモリを「持つ」フラット メモリ モデルと仮想メモリがあるため、レジスタが 32 ビットの場合、仮想メモリの各バイトを「オフセット」レジスタによってのみアドレス指定できます。したがって、たとえば、保護モードのセグメントレジスタを持っている目的はどれですか。

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

assembly - 即値 (角括弧) とインデックス レジスタ + スタック セグメントに 2x dw を持つファイル

私はアセンブリに非常に慣れていないため、古い 16 ビット dos ゲームの逆アセンブリ (IDA Free によって生成された逆アセンブリ) を理解することによって学習しようとしています。

そのコードで読んだことが2つありますが、それが何をしているのか推測できます。それにもかかわらず、私が正しいかどうかはよくわからないので、確認したかったのです(ところで、ここのコード例を短縮しただけです):

1)

dsオフセットを適用して物理アドレスを計算するために、魔法のデフォルトセグメントとして使用していると思います。

2)

だから私のスタックは次のようになっています:

それから:

レジスタはes=0012hdi=BAF6hになっていると思いますが、残りのゲーム コードを見ると理にかなっていますが、私のスタックは のように見えるのでBAF6 0012 ...、これは最初の単語が に入れられdi、2 番目の単語が に入れられることを意味しesます。(私の観点からすると) 2 つの単語の順序が逆になっているので、これは少し混乱します。

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

c++ - コンストラクターのセグメンテーション違反

これは、C++で作成しようとするすべてのクラスで発生します。Javaから移行すると、主にクラスの作成に問題があります。valgrindを実行しましたが、コンストラクターにあります。

ご覧のとおり、このモデルクラスのコンストラクターをmainメソッドに呼び出そうとしています。コンストラクターのコードは次のとおりです

呼び出されると、セグメンテーション違反で閉じます。重要:ヘッダーファイル内でクラスを宣言しました。これは私がエラーを受け取るときです。クラスをソースファイル内に配置すると、正常に実行されます。私は何が間違っているのですか?

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

c - ELF ファイルの修正

ELF 実行可能ファイルがあり、その .rodata セグメントを変更する方法を知りたいです。

また、より一般的には、ELF 実行可能ファイルを変更するにはどうすればよいですか?

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

x86 - 物理アドレスから論理アドレスを計算 (x86)

私の知る限り、物理アドレスは、セグメント アドレス (16 ビット) を左に 4 回シフトし、16 ビットのオフセット アドレスを加えることによって計算されます。私の質問は、セグメント: オフセット アドレス値の 2 つの異なるセットが同じ結果を与える場合はどうなるかということです。200A:B608 および 2138:A328 の場合

200A0

+B608


2B6A8


21380

+A328


2B6A8


どちらも同じ結果になります!!

さて、それは、それらが同じ物理アドレスを指しているということですか (そうであれば、どのように?)、

または、物理アドレスが上記の方法で計算されることを意図していないかどうか?

または、有効な場合、物理アドレスからセグメント:オフセットアドレスを取得するにはどうすればよいですか (それは可能ですか?)

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

windows - Windows メモリ セグメンテーション & Ollydbg

Windows のメモリ セグメンテーションに関するいくつかの質問。

  1. Windowsのすべてのプロセスは、独自の仮想メモリを持っていました。各プロセスには独自のタスクがあるということですか(つまり、独自のタスク記述子またはタスクゲートを意味します)?

  2. ollydbg で単純な exe を開いたところ、dll 関数への CALL 命令ごとに、ジャンプ テーブルに移動していることがわかりました。ジャンプ テーブルには、次のような DLL へのジャンプ命令がありました。

    JMP DWORD PTR DS:[402058]

    私の質問は、ベース アドレスに CS セレクターではなくデータ セグメントを使用する理由です。メモリ マップを開いて 402058 に保存されているものを見つけると、リソースが含まれていることがわかります。DS に格納されている DLL 関数のアドレスを正しく理解している場合は?

  3. メモリ マップが所有者ごとに整理されていることに気付きました。すべてのコードがDSのCSデータなどにあるように、セグメントで編成する必要はありませんか?

    ありがとうございました

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

ollydbg - コード\データ セグメントの重複

Olly のレジスタ ウィンドウを見ると、コード セグメント レジスタとデータ セグメント レジスタの両方がメモリ空間全体にまたがっていることがわかります。重なり合っているということですか?

メモリ マップを見ると、コード領域とデータ領域の両方が取り込まれているようです。

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

memory-management - セグメント化されたページングとページングされたセグメンテーションの違いまたは類似点?

私は結合されたページング/セグメンテーション システムを研究していましたが、私の本にはこれに対する 2 つのアプローチがありました。

両者の違いがわかりませんでした。ページ分割ではセグメントがページに分割され、分割ページングではページがセグメントに分割されていると思いますが、正しいか間違っているかはわかりません。一方、インターネット上では、ページングとセグメンテーションの組み合わせは、1 つのスキームのみを使用して記述されています。私のコースブックには、このための 2 つのスキームがある理由がわかりません。どんな助けでも大歓迎です。