質問: pc-9801 ms-dosでの実行ファイル形式、comかexeか、線引き・基準は? pc-9801実機上で、nasmやdjgpp(gcc v4.3.2)を使用しプログラミングを しています。ハードウェア・ソフトウェア(dos関連)資料も40冊ほど 買い込み、実機も7台揃えて80286/v30~pentium初代まで互換をもたせるよう がんばっています。 念のためフリーでダウンロードしたborlandのturbo c(英語版パッチ済み)と tasm(bcc5.5に同梱)はありますが、まだ入れてません。 箱物の日本語版 pc-98用masmや日本語版 pc-98用turbo cが欲しいんですが、 オクでもめったにないので...(not masm32。 あれ[masm32]はライセンス的にヤバいと聞きました)。 さて、質問ですが、標題の件。ms-dosでは実行ファイル形式として、 comとexeがあり、 1)comはセグメントを気にせずコーディングできる反面、64kbまでの制約があり、 大型のプログラミングには向かない。フルアセンブルのコードが当たり前。 速度重視(極論ですが)。i/oポートやデバイスを直に叩く、ことが多い。 2)exe型プログラムは、セグメントを意識しなければならないが、 64kb以上の実行ファイルを生成可能であり、cとアセンブラオブジェクトとの 連携が可能。cでのインラインアセンブルも活用できる。構造化。可読性。 可搬性。avrマイコンのライタなどでもexeのものがある。 実際にdosディレクトリ以下を見ますと、いったい何を基準に comとexeを使い分けたのか、いまいちつかみかねています。 所有バージョンは日電版 dos3.3c/3.3d/5.0a/6.2、epson版 dos3.3/6.2ですが、 具体的には日電版 dos6.2では 1)diskcopy.exe サイズ: 63.1kb 2)attrib.exe サイズ: 11.2kb 3)more.com サイズ: 2.76kb 4)mem.exe サイズ: 32.3kb 5)edlin.exe サイズ: 13.9kb 6)move.exe サイズ: 18.9kb 7)unformat.com サイズ: 24.1kb などです。 c + インラインアセンブラ(もしくはアセンブラオブジェクトと cオブジェクトとのリンク)ではなく、フルアセンブルであればなおさら 上記実行ファイルは全部.comにして差し支えないように思えるのですが、 所望の結果がセグメントをまたぐ・またがないに関わることで基準があるのでしょうか (セグメントの概念にいま取り掛かったばかりのヒヨッコですが)。 しかしそれだと、diskcopy.comとか、freedosなどでは.exeではなく、 .comになっていたり、その逆もあるので説明がつかないような気もしますが...。 詳しい方、ご教示ください。
回答: これを読めば理解できますか? http://ja.wikipedia.org/wiki/com%e3%83%95%e3%82%a9%e3%83%bc%e3%83%9e%e3%83%83%e3%83%88 exeはこちら http://ja.wikipedia.org/wiki/exe%e3%83%95%e3%82%a9%e3%83%bc%e3%83%9e%e3%83%83%e3%83%88