
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になっていたり、その逆もあるので説明がつかないような気もしますが…。
詳しい方、ご教示ください。
No.2ベストアンサー
- 回答日時:
1) HOGE.COMの、メモリモデルは tiny です。
64KBの制限は tiny からきます。( 逆だったかな? )
・C / ASM は、メモリモデルとポインタを意識すれば(セグメント)
C = ミデアムと ASMモジュール : far扱い
C = ラージと ASMモジュール : hugeでなければ普通
C = ヒュージと ASMモジュール : 理解してれば問題なし
使えますよ。スモールは忘れました…
COMを作るときには「tinyでつくるぞ」としないとだめなんです。
だからほとんど、最初の段階で決まってしまいます。
COM/EXEで、なんで? → つくった人に聞くしか無い場合もあります。
→ 深く追求する意味は、あまりないですよ。
メインメモリ640KBの空間なので、効率的にしないと
必要な機能を実装することが出来ません。
HOGE.COMは64Kですしメモリを食いません。
HOGE.COM 内部で HOGEBODY.EXE を呼び出すことも可能です。
また FOO.COM は、メモリに常駐することも可能です。
# デバドラのSYSではなく
# ADDDEV/ADDRV は、確かあとになって出てきた代物です。
COMの常駐は、割り込みベクターテーブル / int21 のソフトウェア割り込み近辺
速度重視は
・必要な機能がDOSファンクションコールでは不十分だった
・BIOSコールでも不十分
・お手製デバイスなので、全部作るしかない
・かつかつタイミング制御
・機器内のレジスタR/W
とか、そんな感じです。
回答ありがとうございます。疑問が氷解するようなご説明で助かりました。
キーワードをもとに、自力で調べて、実践してみます。
でも、COMかEXEか決定するのは最終的にはほぼプログラム作成者の
意向に委ねられていて、深い意味がない場合もある、というのはかなり以外でした。
No.4
- 回答日時:
COMの短い例をあげますね。
RESET.COM : 9Bytes
これなら、逆アセンブルしても追えるでしょう。
参考URL:http://kan-chan.stbbs.net/download/dos/main.html
No.3
- 回答日時:
今さら確認するつもりはありません (というか実機が手元にないから確認できない) が, COM か EXE かってのは「ファイルを実
際に見ないとわからない」はずです. 実行可能かどうかはファイル名で決まりますが, メモリにロードして実行するときにはファイル名は無関係だったと思う.ご回答ありがとうございます。
確かに、EMM386.EXEやLEMM.EXE、VEM486.EXE、SMARTDRV.EXE
(INSTALL=\DOS62\SMARTDRV.EXE /Xなど)もCONFIG.SYS内で
ロードできちゃいますから、その点では「COMは常駐」とは必要十分条件ではないのですね。
No.1
- 回答日時:
これを読めば理解できますか?
http://ja.wikipedia.org/wiki/COM%E3%83%95%E3%82% …
EXEはこちら
http://ja.wikipedia.org/wiki/EXE%E3%83%95%E3%82% …
この回答への補足
回答ありがとうございます。概要は理解できましたが、なぜ例示した
ファイルでCOMとEXEの別があるのか、その必然性が理解できません。
また、FreeDOSではDISKCOPY.COMとかFORMAT.COMとかFDISK.COMとかが
存在しますが、それがなぜ日電版やEPSON版のDOSでは、EXEなんでしょうか?
(元はといえばMSのOEMでしょうが…)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
プログラミングを学べる!?進化している子どものおもちゃについて専門家に聞いた!
プログラミングを学べるレゴブロックがあることはご存知だろうか。レゴに限らず最近のおもちゃには、プログラミングの要素がどんどん取り入れられているようだ。「教えて!goo」にも、「プログラミングを学べる子供...
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
pythonでのローカルファイルか...
-
if関数とは?
-
プログラム言語
-
今のプログラミング言語
-
プログラミングについて
-
自作scratch アニメの商用利用
-
画像生成AIのプロンプトの作り...
-
pythonの実行に関する質問
-
数学、プログラミング、物理、...
-
pip --versionがエラーになる
-
Python... 環境設定 初心者です...
-
vba クリップボードクリアにつ...
-
著作権法について
-
テキストファイルの1行目のみを...
-
Geminiフォーム 画像生成で 人...
-
プログラミングに興味があるの...
-
ネットワークフォルダの中身を...
-
Google ColaboでGUI作成
-
COPYコマンドで、最後に1文字...
-
初心者powershellのPS1ファイル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラム言語
-
ライン数とステップ数の違いは?
-
アセンブラからC言語に変換する...
-
アセンブラwordという単位
-
【H8マイコン】HEWで埋め込みア...
-
アセンブラ言語がわかりません。
-
実行ファイルからソースはみれる?
-
アセンブリ言語について。
-
MPLAB IDE v8.92アセンブラにつ...
-
素数を求めるプログラム(アセン...
-
YellowIDE6でのコンパイルについて
-
アセンブラで割り算
-
マシン語で再起動を書くには?
-
PICC(HI-TECH SoftWare)によるI...
-
アセンブラのLA
-
このアセンブラの意味を教えて...
-
PICのアセンブラからC言語へ変...
-
アセンブラで筆算的加減算が書...
-
高級言語がアセンブリ言語に比...
-
Windowsはオープンソースですか?
おすすめ情報