コマンドプロンプトからファイル名を入力すると実行することができるファイルを、実行ファイルと言います。
X68000におけるプログラミングの最終目的は、この実行ファイルを作ることです。
あるいは、X-BASICのようにプログラムリストを解析実行する処理系が解釈できるプログラムを作り、実際に動作させることです。
いずれにせよ、アプリケーションプログラムを実行するには、実行ファイルをOSがメモリ上にロードした上で展開し、 制御を渡してもらう必要があります。
おそらく最も馴染みがある例をひとつ上げると、Aドライブのルートにあるcommand.xは実行ファイルです。
他には、コマンドプロンプトから
dir A:¥bin と入力すると、いくつかの実行ファイルが確認できます。
実行ファイルは、それぞれ使用目的も動作内容も異なります。 もし、ゲームを遊びたいのなら、ゲーム用の実行ファイルを用意する必要があり、かつては、 パソコン通信やディスクマガジンなどで入手する方法がありました。
2026年現在において、インターネットの海を探せば、見つかるものもあるかもしれません。 もしかしたら、生成AIが希望の実行ファイルを作ってくれるのかもしれません。 ですが私の場合は、世の中に有ろうと無かろうと、自分で作れそうなものは自作します。
その理由は単純で、「自作したプログラムが期待通り動いたら嬉しいから」に決まっています。
Human68kの実行ファイルは、〇〇〇.Xのほかに、〇〇〇.Rというのがあります。 開発ツールに含まれるコンバータCV.Xは、.Xから.Rのファイルに変換するプログラムです。
どのようなファイルなら.Rにできるか、また、.Rに変換するメリットは何かと問われると 中々難しいのですが、.R形式にできるプログラムというのは、その実行ファイルをメモリに 読み込んだあとに、moveとかjmpで参照するラベルのアドレスを計算しなおす必要がない、という特徴があります。
例えば次のプログラムは、メモリにおいてからアドレスを計算しなおして、それから実行されます。
.include doscall.mac .text start: move.w #10,count * countのアドレスは実行時に決まる loop: pea message * messageのアドレスも実行時に決まる DOS _PRINT addq.l #4,sp sub.w #1,count bne loop * bneは、アセンブル時にPC相対アドレスで計算される DOS _EXIT message: .dc.b 'Hello, world.',$d,$a,0 .bss .even count: .ds.w 1 .end
この再計算処理を「再配置処理」と呼びます。 OSがこの処理を行うためには、.Xファイルには計算しなおすべきアドレスの一覧テーブルを持つ必要があるため、その分だけファイルサイズが大きくなります。
.Rファイルは、この再配置処理とアドレス一覧テーブルが不要な実行ファイルです。 プログラムの動作開始までの動きがシンプルで、ファイルサイズが小さいことがメリットの一つになります
.Rに変換可能なプログラムを作るには、以下の条件をクリアしなければなりません。
特に、プログラムカウンタPCとの相対アドレスは±32kバイト以内しか使えないことと、 デスティネーションアドレスに使うことはできませんので注意が必要です。 それを踏まえて先ほどのサンプルプログラムを書き直すと、以下のようになります。
.include doscall.mac .text start: lea count(pc),a5 move.w #10,(a5) loop: pea message(pc) DOS _PRINT addq.l #4,sp sub.w #1,(a5) bne loop DOS _EXIT message: .dc.b 'Hello, world.',$d,$a,0 .bss .even count: .ds.w 1 .end start
Copyright©2026 カピバラ父さん