問題タブ [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.
memory-management - 8086 が追加のレジスタを使用して 1MB のメモリをアドレス指定するのはなぜですか?
8086 には 16 ビットのレジスタがあり、64K のメモリしかアドレス指定できないと聞きました。それでも、20 ビット レジスタを必要とする 1MB のメモリをアドレス指定できます。別のレジスタを使用して別の 16 ビットを保持し、16 ビット レジスタの値をこの別のレジスタの値に加算して、最大 1MB のメモリをアドレス指定できる数値を生成できるようにします。そうですか?
なぜこのように行われるのですか?32 ビットのレジスタがあるようです。これは、1MB のメモリをアドレス指定するのに十分すぎるほどです。
memory-management - 仮想メモリのアドレス可能な最大スペースはどれくらいですか?
この質問が何度も聞かれるのを見ました。しかし、合理的な答えを見つけることができませんでした。実際の仮想メモリの制限は何ですか?
CPUのアドレス可能な最大サイズですか?たとえば、CPUが32ビットの場合、最大は4Gですか?
また、一部のテキストはそれをハードディスク領域に関連付けています。しかし、それが良い説明であることがわかりませんでした。CPUが生成したアドレスと言う人もいます。
私たちが見るすべてのアドレスは仮想アドレスですか?たとえば、GDBを使用してプログラムをデバッグするときに表示されるメモリの場所。
CPUが仮想アドレスを生成する背後にある歴史的な理由は?一部のテキストでは、仮想アドレスと論理アドレスを同じ意味で使用しています。どう違うの?
operating-system - 仮想メモリが必要ですか?
最近、コンピュータシステムで、プライマリメモリ(RAM)がセカンダリメモリ(HDD)に匹敵する場合、そのようなコンピュータシステムに仮想メモリを実装する必要があるかどうかという質問がありました。ページングとセグメンテーションには、純粋に処理のオーバーヘッドであるコンテキストスイッチングが必要なため、仮想メモリの利点は、必要な処理のオーバーヘッドを超えますか?誰かがこの質問で私を助けることができますか?ありがとう
assembly - AMD 64 ビット モードでのセグメント制限チェック
私は 64 ビット プロセッサ用に独自の OS を作成していますが、一般的な保護の問題に悩まされています。私のOSは、ユーザースペース保護メカニズムを実装するためにページフォールトに依存しないため、セグメント制限チェックでそれを行う方法があることがわかりました:
VMWare からのこのプレゼンテーション
http://download3.vmware.com/vmworld/2005/pac346.pdf
20ページに次のように書かれています。
初期の AMD64 アーキテクチャには、64 ビット モードでのセグメンテーションが含まれていませんでした
- EMT64T にはセグメンテーションもありません
VMM をどのように保護しますか?
- 64 ビット ゲストのサポートには、追加のハードウェア支援が必要です
- 新しい AMD プロセッサの 64 ビット モードで利用可能なセグメント制限チェック
今、私は新しい AMD プロセッサ モデルを持っています。私の質問は、64 ビット (ロング) モードの AMD プロセッサでリミット セグメント リミット チェックを実行するにはどうすればよいですか? 開発者マニュアルの 2011 年 9 月版 (最新版) をダウンロードしましたが、ダウンロード方法がどこにもありません。助けてください。
assembly - ds:si と es:di はアセンブリで何を意味しますか?
movsb (move string, bytes) 命令は、アドレス ds:si でバイトをフェッチし、アドレス es:di に格納してから、si レジスタと di レジスタを 1 ずつインクリメントまたはデクリメントします。
私は esi,si と edi,di レジスタを知っています。
しかしそうではなくds:si
、es:di
彼らはどういう意味ですか?
visual-c++ - __addgs *はどのように使用され、GSとは何ですか?
Microsoftのサイトで、
組み込み関数。それはであると述べられていoffset
ます
GSの先頭からのオフセット。GSはプロセッサレジスタを参照していると思います。
GSは、スタックとどのように関連していますか?または、 GSに関するオフセットを計算するにはどうすればよいですか?
(そして、これや特定の呼び出し規約に関連する「落とし穴」はあります__fastcall
か?)
assembly - ESPレジスタとSSレジスタの違いは何ですか?
私はアセンブリ言語の初心者です。私が知っているように、ESP と SS はどちらもスタック レジスタを参照しますが、それらの違いはよくわかりません。
x86-16 - BIOS int 13H、AH=02 (フロッピーを読み取るため) およびスタック セグメント
スタック セグメントを初期化しないとどうなりますか?
場合によっては読み取りエラーが発生しますか?
x86 - セグメント:オフセットアドレス指定スキームはどのように機能しますか?
Intel 8086 CPUの時代には、最大のレジスタは16ビットであり、誰もが65536バイトを超える線形メモリにアクセスする方法を探していましたが、CPUレジスタを拡張する代わりに、セグメント:オフセットアドレス指定を発明したことを読みました。スキームと私が理解している方法では、2つの16ビットレジスタを32ビットメモリアドレスに「グループ化」することができます。しかし、私が読んだ同じ場所では、CPUは1MBのメモリにしかアクセスできませんでした。それはどのように機能しますか?2 ^ 32は4,294,967,296に等しいので、わかりません。教えてください:)
assembly - x86リアルモードセグメントのオーバーラップはメモリ節約にどのように役立ちますか?
私は12年間の8086アセンブリ言語を教えていますが、昨日はメモリ、アドレス指定、セグメンテーションについて話していました。セグメントが16バイト境界で始まる64Kbブロックのオーバーラップのシーケンスとして視覚化される方法を彼に示しました。オフセットは、セグメント内の8080スタイルのポインターです。それから彼は私が答えることができなかった質問をしました:なぜ(何のために、どのような目的で)それらは重複するのですか?
この質問を調べてみると、20ビットの数学のコピーがたくさん見つかり、このスキームでおそらく可能になるメモリ節約についての漠然とした言及がいくつかあります。誰かがメモリ節約の部分について詳しく説明できますか?または、オーバーラップを実際に利用する他の方法はありますか?