特にこの問題は、リアルモードのフラットでセグメント化されたモデルに関するものです。私は、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. DXGI_FORMATを決定する要因は何ですか?
- 2. PostgreSQLがフィルタリングするデータ型を決定する要因は何ですか?
- 3. NetBeans GUIビルダーでの整列スナップを決定する要因は何ですか?
- 4. 機械学習モデルの容量を決定する要因は何ですか?
- 5. 消費者グループのリバランス時間を決定する要因は何ですか?
- 6. ASP classic:ADODBの文字エンコードを決定する要因は何ですか?
- 7. Node.jsクラスタリング - 負荷分散を決定する要因は何ですか?
- 8. マルチテーブルクエリのロック順序を決定する要因は何ですか?
- 9. C++ Webサーバー上のスレッド数を決定する要因は何ですか?
- 10. Delphi Prismでのソースファイルの合併または実行の順序を決定する要因は何ですか?
- 11. MySQLでテーブルが最適化される頻度を決定する要因は何ですか?
- 12. OpenGL ES 2.0でスクリーングリッドの寸法を決定する要因は何ですか? (C++を使用)
- 13. java.awt.PopupMenuに表示される注文アイテムを決定する要因は何ですか?
- 14. pom.xmlの<build>セクションのMavenプラグインのバージョンを決定する要因は何ですか?
- 15. カフカの消費者オフセットを決定する要因は?
- 16. ブラウザでポップアップブロッカーをトリガーする要因は何ですか?
- 17. BluetoothDevice.ACTION_ACLブロードキャストをトリガーする要因は何ですか?
- 18. ファイルの許可を変更する要因は何ですか?
- 19. ディスク価格を支配する要因は何ですか?
- 20. NSInternalInconsistencyExceptionの原因とその解決方法は何ですか?
- 21. アンドロイドでアラームに影響する要因は何ですか
- 22. 実装されていないメソッドが解決されるプロセスを決定する要因は何ですか?私はそれを理解したよう
- 23. メモリモデル内のローカル変数およびオブジェクトとは何ですか?
- 24. CPUユーティリティが依存する要因は何ですか?
- 25. PID_MAXがLinuxに依存する要因は何ですか?
- 26. ビデオファイルのサイズに影響する要因は何ですか?
- 27. 原因は何ですか
- 28. Androidで特定のレイアウトを選択するための決定要因はありますか?
- 29. Reportlabテーブルの垂直スペースを決定する要因は何ですか?私は、ドキュメント内でこのスタイルを定義しています
- 30. 行列エラーの決定要因を見つける
COMファイルの場合にDOSでセグメントレジスタを設定し、EXEファイルの場合はそのままにしておいてください。 – vjain27
DOSは何をしましたか?これは、DOSコードがしたものです。私はあなたの質問に答える方法がわかりません.DOSをプログラムしたプログラマがそれを指示しました。 –
DOS EXEフォーマットには、CS:IPおよびSS:SP以外のレジスタ設定のための規定がありません。それがあった場合、プログラマはDSとESのセグメントを特別な方法でマークする必要があり、アセンブラ、コンパイラ、およびリンカは特別にマークされたセグメントを特別な方法でサポートする必要があります。おそらく、それはそれに値するものではないと判断されました。結局のところ、正式には、あなたのセグメント化されたプログラムは、データセグメントを持つ必要はありません。最小のものはコードとスタックセグメントです。 –