.EXEファイルを作るには

Diksamでゲームとかを作るのなら、最終的にはそれを.EXEファイルに変換して1ファイルだけで動作するようにしたいことでしょう。
そのためにはDiksamのVM(DVM)と、ソースまたはバイトコードをまるごと含む.EXEファイルを作ってしまえばよい。HSPとかなでしことかRubyExerbとか、多くの処理系で実際に行われていることです。

ではそのために具体的に何をすればよいのか、ですが。

ずいぶん前、確かクジラ飛行机さんのブログだかWeb記事だかで、「単純に.EXEファイルの後ろにバイトコードなりをくっつければよい」というのを読んだ記憶があります。また、それとは別に、掲示*1で同様の記述を見かけたこともあります。しかしどちらもほどなく見えなくなりました…… Web上の記事はいつもはかないものです。

ところで、単純に.EXEの後ろにくっつけて、それで.EXEが(後ろの余計なものを)気にせずに動いたとしても、その.EXEの中から後ろにくっつけたものを読めなければ意味がありません。

それを考えると、結局、.EXEファイルのフォーマットに従い、リソースセクションにバイトコード等を突っ込むしかないのかな、と、以下のようなページをぼちぼち眺めています。

Windows実行ファイルのバイナリ概要 (1/2):CodeZine(コードジン)

Exerbのソースもちょっと眺めてみたのですが、IMAGE_DOS_HEADER構造体とか出てきているあたり、それっぽいです。

しかし、そのへんの実装に取り掛かれるのはいつになることやら……

*1:URLをブックマークに入れておいたのですが……記事そのものがなくなってしまってはしょうがない。