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

x86 - 保護されたフラット モデルの CS と DS の値

保護されたフラット モデルの特定のプロセスの CS および DS セグメント レジスタは同じ値を保持しますか?
つまり、同じプログラム内で次のコード シーケンスを実行し
mov dword ptr [0x7fffffff], ebx

org 0x7fffffff
...some instruction ...

同じ場所を指しますか?(もしそうなら、保護されたフラット モデルで CS と DS を分離する目的は何ですか?) ありがとうございます。

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

operating-system - 各プログラムはメモリ内に個別のセグメント (コード、スタック、データ) を持っていますか?

同時に実行されている多くのプログラムがあるとします。
実行される各実行可能プログラムは、RAM 内に独自のコード、データ、およびスタック セグメントを持っていますか、それとも 4 つのセグメントに分割された完全な RAM であり、これらのセグメントのそれぞれが各プログラムのそれぞれのセグメントを保持していますか。

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

linux - Linux での 64 ビット コードからの __USER32_CS への far 呼び出し

最近、これを 64 ビット コードで実行できることに気付きました。

ここcodeで、アドレス空間の下位 4GiB の実行可能ページにある 32 ビット コードの一部を指し、Linux の x86 ヘッダーのセグメント セレクター0x23の値です。__USER32_CSジャンプ対象に属性が必要かどうかはわかりませんが、念のため追加しました。もちろん、far return を可能にするには、この呼び出しコード自体を仮想アドレス空間の下位 4 GiB のどこかに配置する必要があります。に入れるだけmainで十分であることがわかりました。

これはほとんど役に立たず (32 ビット ライブラリがロードされていない、呼び出し規約が異なるなど)、破損しやすい (の値は__USER32_CSLinux のユーザー空間向け API の一部ではない) ことを理解しています。

私の質問:呼び出しのターゲットが実際に 32 ビット モードで実行されていることを示す簡単な方法はありますか? この種の呼び出しの実用的な用途 (それを利用するライブラリの既存のソフトウェア、または少なくともそれほど非現実的ではない可能性) はありますか?

0 投票する
0 に答える
931 参照

c - 自己復号化バイナリ ファイルを作成する方法は?

私は、RSA 秘密鍵などのセキュリティ資格情報にアクセスするバイナリ ファイルを作成していましたが、これは誰にも見られるべきではありません。秘密鍵を安全に保管する方法がわかりません。現在、これらの情報をバイナリ内の.dataセクション内に保存しています。したがって、セキュリティのために、バイナリのデータセクションを暗号化することを考えていました。そのセクションは、バイナリ内の小さな手順によって実行時に復号化されます。私は、バイナリ ファイルを読み取り、データ セクションを暗号化する小さなプログラムを作成しました。今私が欲しいのは、実行時にデータセクションを復号化することです。しかし、実行時に、これらのセクションはすべてセグメントとしてメモリにロードされます。実行時にセグメント アドレスを取得する方法については、ほとんど知識がありません。

データセクションをメモリにロードし、実行時にセクションを復号化し、データセクション内に保存された値を使用するために使用できる方法を教えてください。

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

assembly - セグメント オフセット ペア bs セグメント記述子

32 ビット プロセッサのセグメント記述子と比較して、物理アドレス計算用の 8088 のセグメント オフセット ペアの違いを理解するのに少し混乱しています。

どんな説明でも大歓迎です。

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

windows - IDA Pro で .text セグメントの統計を取得するには?

.text セグメント内の IDA Pro が命令として扱うバイト数とデータとして扱うバイト数を表示する方法はありますか? 他の統計も利用できますか (関数サイズなど)?

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

cpu-registers - intel x86 セグメント レジスタと GDT(LDT) レジスタのサイズ

私はシステム アーキテクチャの初心者レベルの学生で、正確には intel x86 です。現在、インテルのマニュアル (1,3a,3b,3c) を読んでいて、セグメンテーションの部分で行き詰まっています。

私の知る限り、保護モードでは、システムは論理メモリを線形メモリ(または物理メモリ)に変換しており、「ファーポインタ」は2つの異なる部分、セグメントを持つ実際の線形(または物理)メモリアドレスを指していますセレクターとオフセット。

大学で学んだように、各セグメント レジスタにはデータの 16 ビット部分があります。Intel のマニュアルによると、16 ビットはセグメント レジスタの目に見える部分だけですが、ユーザーがプログラムしたりアクセスしたりできないセグメント レジスタの隠れた部分がもっとあります。セグメントレジスタの実際のサイズを知ることができる可能性はありますか?

2番目の質問は、保護モードの LDT 、 GDT 、 IDT レジスタについてです。それらのレジスタ (LDTr、GDTr、IDTr) は CPU チップセットの実際のレジスタですか? そうである場合、ブート シーケンス (prevelige ring 3、ユーザー モード) の後にそれらのテーブルにアクセスする機会はありますか?

私の質問を読んでくれてありがとう。

PS。グーグルで検索してみましたが、答えが見つかりませんでした。だからこそ、私はこの質問を書くのに時間を費やしています。

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

memory-management - 64 ビット モード (ロング モード) がセグメント レジスタを使用しないのはなぜですか?

私は初心者レベルの学生です :) インテル アーキテクチャについて勉強していて、セグメンテーションやページングなどのメモリ管理について勉強しています。Intel のマニュアルを読んでいますが、Intel のアーキテクチャを理解するのはとても良いことです。

しかし、私はまだ何か基本的なことに興味があります。64 ビット long モードで、すべてのセグメント レジスタがビット 0 になるのはなぜですか? システムがセグメント レジスタを使用しなくなったのはなぜですか?

システムの 64 ビット サイズ (GP レジスタなど) は、これらの論理アドレスを一度に含めるのに十分だからですか? 64 ビット モードで保護は正しく機能していますか?

64 ビット アドレッシングを検索しようとしましたが、Google で見つかりませんでした。おそらく、私はひどい検索スキルを持っているか、Google で検索するための特定の予備知識が必要なのかもしれません。

したがって、16 ビットのセグメント レジスタが 64 ビット モードで使用されない理由と、64 ビット モードで保護が適切に機能する方法を知りたいと思います。

ありがとうございました!

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

c - これの出力はどうなりますか?それも説明してください

このコードを試しましたが、出力を理解できません

これでセグメント化されたメモリアドレスとは何ですか?オフセットはどの部分ですか?

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

memory-management - どの仮想メモリ変換手法 (x86 を考慮) が一般的に使用されていますか?

仮想アドレス変換 (x86) には、セグメンテーション、ページング、セグメンテーションとページングの組み合わせ (ページ化されたセグメンテーション、セグメント化されたページング) など、MMU を使用したさまざまな種類があることが知られています。それぞれに長所と短所があります。

私の質問: 1) Linux/Windows などの一般的なオペレーティング システムは、特定の手法 (ページングなど) を 1 つしか使用していませんか? 2) 特定の OS で 2 つ以上の手法が利用できる場合、それぞれの手法はいつ、どこで使用されますか? ニーズに合わせてカスタマイズできますか? 3) 「ページング」のみが使用される場合、x86 のセグメント レジスタはどのように使用されますか?