78K0 については純正のデバッグツールを持っておらず、専らトラ技 BIOS を使用して RAM にロードするテストプログラムを試している。PM+ のコンパイラオプションで最適化に「サイズ優先(-qx3)」を指定すると、callt 命令というテーブル・インダイレクト・アドレッシングを使用するコードが生成されるのだが、トラ技 BIOS の load 命令ではこの callt 用テーブル領域を書き換えないため、プログラムを実行すると予期しないアドレスへのジャンプが起きて期待通りに動作しない。
callt 命令はコンパイラでの宣言で指定する他に、上記のように最適化オプションによっても使われるらしい。コンパイラオプションでアセンブラソースを出力させるか、実行用 HEX ファイルを見て 0x0040 からの callt テーブル領域のデータを含んでいるかを見れば判別できる。Help 文書の記述が分かりにくいが、「定型コード・パターンをライブラリに置き換えます」という L オプションを L2 以上で有効とした(L1 は無効)場合に callt 命令が使用された。
# Appendix に「第5章で紹介していないオプションは指定しないでください」とある。トラ技 BIOS 用プログラムを書くには、この辺の説明を良く読んで置くべきだろう。
Posted by masato at 08:49 PMおそらく携帯電話等からは投稿できません。日本語文字列を含まないコメントやトラックバック、および当サイトへの言及を含まないトラックバックは御遠慮いただいております。また、90日以上経過した記事へのコメントはできません。