カピバラ父さんのプログラミング処方箋~リンカー

ソースコードをアセンブラに通したあと、さらにリンカーを通すことで実行ファイルが得られます。
単一ソースファイルからの場合、人手間余分な感じになりますが、とりあえず我慢してください。

リンカーの仕事は、アセンブラが生成したオブジェクトファイルの中にある、 未解決のシンボル値を解決し、Human68kで展開可能な実行ファイルを生成することになります。 この前半部分の「未解決のシンボル」については、おいおい解かると思います。

バッチファイルの活用法

人手間多いのはストレスですので、ちょっと楽をする仕掛けを作りましょう。
ソースコードと同じフォルダに、以下のバッチファイルを作ります。

【asm.bat】

echo off
as %1.S /O %1.O
if errorlevel 1 goto error
lk -o %1.X %1.O
if errorlevel 1 goto error
del %1.O > NUL
del %1.BAK > NUL
%1.X
goto end
:error
echo エラーが発生しました。
:end

アセンブラのページに載せたhello.sを処理するときは、次のようにします。
A> asm hello
ソースコードの拡張子.sは書きません。

バッチファイルの中身を詳細に見てみましょう。

  1. echo off は、処理中にコマンドラインを表示しない設定です。
  2. as %1.S /O %1.O の %1 は、バッチファイルの引数です。
  3. if errorlevel 1 は、直前の処理でエラーが出たか判定します。
  4. lk -o %1.X %1.O では、リンカーを実行しています。
  5. del %1.O は、中間ファイルである.Oを削除しています。
  6. %1.X は、生成に成功した実行ファイルを動作テストします。
  7. goto end は、:endと書いてある行にバッチ処理をジャンプさせます。

実用上は、作成するプログラムの規模や構成によって、インクルードファイルやライブラリの場所を、 アセンブラやリンカのオプションに書き加えることがあります。
バッチ処理の動作を理解しながら、カスタマイズしてみてください。


プログラミング処方箋へ

Copyright©2026 カピバラ父さん