まあ、あまり初心者はかかわりにならないほうが無難だと思います。 「アセンブラおたく」ならば話は別ですが(そんな人がいるのか?)。
MacintoshはCPUが68KからPPCに変わってしまったため、以前にくらべると68Kアセンブラの有用性も少なくなってしまいました。実をいえば私はPPCアセンブラは全く知らないので、えらそうなことはいえないのです。
とにかく私は上に挙げた様々な理由から、68Kアセンブラとお付き合いをせざるをえなくなりました。アセンブラを学ぶ過程で役に立った資料やツールなどを紹介するのが、本稿の目的です。
次に役にたつツールが、ResEditにpatchして使うディスアセンブラです。正式の名前を"CODE editor for ResEdit 2.1"といい、コード・エディタも兼ねています。すでにできあがっているコードの解読やpatchに使います。
68Kアセンブラの概要をつかむのには、MacsBugの取り扱い説明書である"MacsBug Reference and Debugging Guide"が役にたちます。この本の第3章はAn Assembly-Language Primerというタイトルで、簡単な68Kアセンブリ言語の入門書となっています。特にアドレッシングモードの説明がわかりやすくされています。
上の入門書がわかるようになったら、次によむのはMotorola社が執筆した「M68000マイクロプロセッサ ユーザーズ・マニュアル」(CQ出版社、ISBN4-7898-4091-3)です。読むといっても、本の前から50ページぐらいしか読むところはありません。あとは知らない命令が出てくるたびに、付録Bの「命令セットの詳細」を辞書のように引いて参考にするということを繰り返すことになります。いわばアセンブリ言語を読み書きするための辞書というわけです。
2つの本はいずれも、マシン語とかアセンブリ言語はおおよそどういうものかを既に理解している読者を前提にしています。一度もアセンブリ言語をみたことがない人がいきなり読むのは無理ですので、なにか別の入門的なアセンブリ言語の参考書を読んだ後からのほうがいいでしょう。このときの入門書は、別のどんなCPUのアセンブリ言語のでもかまいません。
(1)まずはディスアセンブルのやり方の紹介です。
C、C++で作った関数のコンパイル結果を知るためには、ProjectメニューからDisassemble を選択して下さい。sourceファイルに対応してsource.dumpというアセンブリ言語で記述されたファイルが作られます。これを読めば、Cでコーディングされた式がどのようにコンパイルされてマシン語に翻訳されているかがわかります。
(2)つぎは自前のアセンブリ言語による関数を作る方法の紹介です。
日本語版「CodeWarriorユーザーズガイドver.2」の中の「C / C++ コンパイラガイド」の中に説明があります。「第10章 68Kインラインアセンブラ」に、アセンブラ関数を書くためのコーデイング規則が述べられています。この規則に従って自前の関数、例えば
asm void myFunction( void )
{ . . . }
をコーディングしていくことになります。
なお、ここで紹介したMacsBugやCODE editor for ResEdit等は、Apple社のWebサイトからダウンロードできるようになっていると思います。場所がわからないときは、Developer Worldのページで検索エンジンを使ってさがしてみて下さい。
記1998年1月22日