第9回 68Kアセンブラ入門

普通のアプリケーションプログラムを作るぶんには、まずアセンブラとお付き合いすることはまずありません。こういうものが必要となるのは、かなり特殊な場合です。たとえば、
(1)INITやcdevなどを自分で開発するとき、そしてそれをデバッグするとき、
(2)Appleから公開されている資料だけの機能説明では満足できずに、さらに奥義をきわめようと、System codeの内部に足を踏み入れるときなどです。

まあ、あまり初心者はかかわりにならないほうが無難だと思います。 「アセンブラおたく」ならば話は別ですが(そんな人がいるのか?)。

MacintoshはCPUが68KからPPCに変わってしまったため、以前にくらべると68Kアセンブラの有用性も少なくなってしまいました。実をいえば私はPPCアセンブラは全く知らないので、えらそうなことはいえないのです。

とにかく私は上に挙げた様々な理由から、68Kアセンブラとお付き合いをせざるをえなくなりました。アセンブラを学ぶ過程で役に立った資料やツールなどを紹介するのが、本稿の目的です。


68Kアセンブラを使いこなす上で、必要なツールといえば、 まずMacsBugがあげられます。これはアセンブラレベルのデバッガで、なくてはならないものです。

次に役にたつツールが、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のアセンブリ言語のでもかまいません。


さていよいよアセンブラ本体ですが、Code Warrior Pro 付属のアセンブラの使い方の説明に入ります。

(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日


目次に戻る