特にこの問題は、リアルモードのフラットでセグメント化されたモデルに関するものです。私は、DOSでCOMファイルがフラットメモリモデルを使用し、EXEファイルがセグメント化されたメモリモデルを使用していることを述べているアセンブリについての本を読んでいます。しかし、私はどのメモリモデルを使用するのかDOSに何を伝えるのか理解していません。私はブートローダについて読んでいるので、この質問をしています。メモリモデルを決定する要因は何ですか?
4
A
答えて
4
COMファイルは、プログラムが同じセグメントを指すようにロードされたときに、セグメントレジスタがDOSによってすべて設定され、すべてのコードとポインタが、セグメントレジスタの1つの値。
EXEファイル形式では、セグメントを異なるオフセットでロードすることができます。 DOSはセグメントレジスタをデフォルト値に設定しませんでした。それはコードそのものだった。コードがセグメントレジスタを管理する必要があるため、16ビットのEXEコードは非常に複雑です。
今日、多くのEXEコードはセグメント・レジスタを多少無視します。使用可能なアドレスを生成するために32または64ビットのレジスタをセグメントレジスタに追加する必要はありません。
1
実行可能ファイルのCOMおよびEXEファイルのヘッダーには、EXE headerとCOM (MS-DOS) headerというメモリ要件があります。プログラムで< 64KBが必要な場合は、フラットスペースを使用します(> 64KB)。セグメント化されたメモリを使用します。
1
DOSには、セグメント化されたメモリモデルを使用しているCOMファイルを停止することはできません.DOSにはメモリ管理ポリシーが適用されていないのでアプリケーションには適用されません。
COM filesについてのウィキペディアの記事を読むことができます。これは、これらの古い問題についての洞察を提供します。
関連する問題
- 1. NetBeans GUIビルダーでの整列スナップを決定する要因は何ですか?
- 2. マルチテーブルクエリのロック順序を決定する要因は何ですか?
- 3. C++ Webサーバー上のスレッド数を決定する要因は何ですか?
- 4. Node.jsクラスタリング - 負荷分散を決定する要因は何ですか?
- 5. Delphi Prismでのソースファイルの合併または実行の順序を決定する要因は何ですか?
- 6. MySQLでテーブルが最適化される頻度を決定する要因は何ですか?
- 7. OpenGL ES 2.0でスクリーングリッドの寸法を決定する要因は何ですか? (C++を使用)
- 8. カフカの消費者オフセットを決定する要因は?
- 9. pom.xmlの<build>セクションのMavenプラグインのバージョンを決定する要因は何ですか?
- 10. ブラウザでポップアップブロッカーをトリガーする要因は何ですか?
- 11. BluetoothDevice.ACTION_ACLブロードキャストをトリガーする要因は何ですか?
- 12. ディスク価格を支配する要因は何ですか?
- 13. 実装されていないメソッドが解決されるプロセスを決定する要因は何ですか?私はそれを理解したよう
- 14. Reportlabテーブルの垂直スペースを決定する要因は何ですか?私は、ドキュメント内でこのスタイルを定義しています
- 15. 原因は何ですか
- 16. location.hrefが未定義になる原因は何ですか?
- 17. MATLABの巨大行列の決定要因
- 18. システムが持つことができる物理メモリの最大量を決定する要因は何ですか?
- 19. ACKが送信されるまでのデータパケットの数を決定する要因は何ですか?サーバ上の.NETソケット
- 20. ホットデプロイメントを「難しい問題」にする要因は何ですか?
- 21. オブジェクトの表記と認識を困難にする要因は何ですか?
- 22. CodeChef小さな要因解決
- 23. .NETでスタックオーバーフロー例外が発生する要因は何ですか?
- 24. SQL Serverでストアドプロシージャの再コンパイルが発生する要因は何ですか?
- 25. NetStream.onPeerConnectがトリガーされるのを妨げる要因は何ですか?
- 26. CQRSクライアントアプリケーションでUIリフレッシュを引き起こす要因は何ですか?
- 27. CRVAP0237Eエラーの原因は何ですか?
- 28. 「System.IO.IsolatedStorage.IsolatedStorageException」の原因は何ですか?
- 29. これは何が原因ですか?
- 30. 解析エラー - 原因は何ですか?
COMファイルの場合にDOSでセグメントレジスタを設定し、EXEファイルの場合はそのままにしておいてください。 – vjain27
DOSは何をしましたか?これは、DOSコードがしたものです。私はあなたの質問に答える方法がわかりません.DOSをプログラムしたプログラマがそれを指示しました。 –
DOS EXEフォーマットには、CS:IPおよびSS:SP以外のレジスタ設定のための規定がありません。それがあった場合、プログラマはDSとESのセグメントを特別な方法でマークする必要があり、アセンブラ、コンパイラ、およびリンカは特別にマークされたセグメントを特別な方法でサポートする必要があります。おそらく、それはそれに値するものではないと判断されました。結局のところ、正式には、あなたのセグメント化されたプログラムは、データセグメントを持つ必要はありません。最小のものはコードとスタックセグメントです。 –