COMファイル 単語

コムファイル

2.2千文字の記事
  • twitter
  • facebook
  • はてな
  • LINE

COMファイルとは、コンピュータファイル形式の1つである。MS-DOSWindowsに9x系)で使われていたが、それ以前の1970年代から使用されていた。

概要

COMファイルは、1970年代OSであるVAX(ディジタル・イクイップメント社)やCP/M(デジタルリサーチ社)において、OSに対する命Command)を記述したファイル形式として用いられていた。CP/MのクローンからスタートしたMS-DOSにおいても、実行可ファイルとしてCOMファイルが用いられている。

で、ファイルの中身だが、最初から最後までぎっしりと機械語で埋め尽くされている。現代(初版時点:2021年)のWindowsにおける標準的な実行可ファイルの形式であるEXEファイルには、ファイルの作成日とかファイルサイズとか誤り訂正のためのチェックサムとか、とにかく色んな情報が詰め込まれており、それらの中の1つのセクションとして機械語を記述した箇所が存在する。だがCOMファイルは、そういったメタ的な情報を一切含んでいない。最初の1バイトから既に命なのだ。実に潔い。

COMファイルを実行すると、メモリ0x0100番地以降にファイルの中身全てが読み込まれ、0x0100番地から順に実行されていく。うまいことやれば自分で自分を書き換えるプログラムなんかも作ることができる。ちなみに0x0000番地から0x00FF番地まではPSPProgram Segment Prefix)領域と呼ばれ、COMファイル実行時のパラメータなんかの情報が含まれている。

ところで、勘のいい人なら気づいただろうが、メモリ番地16進数4桁で扱われるので、1つのプログラムで最大でも16の4乗、すなわち65,536バイト(実際にはそこからPSP領域の256バイトを引いた65,280バイト)しかメモリを使えない。これはだいたい64キロバイトであり、16ビット環境にとどまる限りこれ以上のサイズを持つプログラムは作れない(セグメント切り替えなどの技術を使えば突破できるが、抜本的な解決ではない)ため、64Kバイトと呼ばれる。EXEファイルべるとあまりに小さいため、COMファイルは現代の32ビットや64ビットコンピュータではほとんど用いられなくなってしまった(というか、64ビットOSでは仮想86モードが使えないので、16ビットプログラムを直接実行できない)。初版筆者の環境では、Windows10System32フォルダ内に5つのCOMファイルが生き残っている程度である(その上、いずれも実質的にCOMファイルの皮を被ったEXEファイルであるため、Windows10システムにおいてCOMファイルは絶滅したと言えるだろう)。

COMファイルの作り方

VAXやCP/M、MS-DOSの頃はどうしていたのか、初版筆者は知らない(そもそも生まれていない)。情報む。

Windows Vistaの頃までは、コマンドプロンプトからDEBUGコマンドを起動し、アセンブリ言語ゴリゴリプログラムを書いて保存すればCOMファイルを作ることができた。だが、Windows 7(の64ビット版)からはDEBUGコマンド削除されたため、今後この方法でCOMファイルを作ることはできない。

実行ができなくなった現代ではCOMファイルを作ることもないだろうが、もし作りたい場合はネット上に数多くあるバイナリエディタを使って機械語チマチマと打ち込むことで作れる。この方法なら未来永劫作れなくなることはない。

現代を(細々と)生きるCOMファイル

Windows10のご時世にあって、COMファイルは死に絶えたかに見えた。しかしインターネット上には未だにCOMファイルが転がっているのである。とは言ってもURLの「https://www.hogehoge.com/」のことではない。概要で述べた実行可ファイルとしてのCOMファイルである。

ニコニコ的に染みの深いところでは、東京電機大学の非サークルであるAmusement Makersの旧公式サイトに置いてあるものが有名か。東方プロジェクト生みのであるZUN氏が所属していたサークルであり、いわゆる東方旧作体験版がここで配布されているが、この体験版の実行ファイルがCOMファイルである。Windows10では実行こそできないが、興味のある方はダウンロードして中身を覗いてみるのもいいかも知れない。ただし解析は私的利用の範囲にとどめること。

また、EXEファイルの中にもCOMファイルの跡は残っている。適当EXEファイルバイナリエディタで開くと、"This program cannot be run in DOS mode."という文字列が見える(違う場合もある)。その文字列が始まる前、具体的には0x40バイトから数バイトはCOMファイルと同じ形式でプログラムが記述されている。このプログラムは、EXEファイルを間違えて16ビット環境で実行してしまった時にエラーメッセージを出して終了するためのものである。COMファイルはこんなところで細々と生きているのだ。

関連リンク

この記事を編集する

掲示板

おすすめトレンド

ニコニ広告で宣伝された記事

記事と一緒に動画もおすすめ!
もっと見る

急上昇ワード改

最終更新:2025/07/31(木) 09:00

ほめられた記事

最終更新:2025/07/31(木) 09:00

ウォッチリストに追加しました!

すでにウォッチリストに
入っています。

OK

追加に失敗しました。

OK

追加にはログインが必要です。

           

ほめた!

すでにほめています。

すでにほめています。

ほめるを取消しました。

OK

ほめるに失敗しました。

OK

ほめるの取消しに失敗しました。

OK

ほめるにはログインが必要です。

タグ編集にはログインが必要です。

タグ編集には利用規約の同意が必要です。