2006年12月12日

『Write Great Code Vol.2 〜低いレベルで考え、高いレベルで書く』



/

今を逆のぼることうん十年前のマイコン時代、アセンブラに足を踏み入れることはBASICからの卒業を意味した。扱いやすく結果が簡単にわかるBASICは便利ではあったが、CPUやハードウェアの本来持つ速度・機能を活用するには(コード隠蔽も1つの理由ではあるが)、アセンブラしか方法がなかった。ホビーユースのコンパイラなど出ていなかった時代のお話である。マニュアルの付録に載っていたZ80インストラクションセットを見ながら紙にアセンブリコードを書いてロジックを組み、16進数に手で変換(コンパイル)して、それをマシンエディタに入力していく。うかつなところに書き込んでしまい、カセットテープにデータを保存する間もなく停止や再起動で涙にくれたという思い出を持つ、かつての少年たちも多いはずだ。

時は流れ、BASICの復権とも言うべきスクリプト言語が幅を効かせ、アセンブラを扱うというのは今や組み込みなどのごく一部の遠い国の話になってきた。しかし、Cコンパイラがソースからオブジェクトを作りオブジェクトがリンケージされて実行可能ファイルになる、あるいはスクリプトの実行ランタイムの中ではアセンブリコードに置き換え可能なロジックが動作する、という図式は、フォンノイマン型コンピュータがある限り永遠に変わることがない。

本書は、「パフォーマンス」の名の下、高級言語の各要素がコンパイラによって実際にどのようにx86とPPCのアセンブリ言語に変換されるかを詳細に説明する。実際のところパフォーマンスうんぬんよりも著者が単なるバイナリオタクなんじゃないか(著者のHyde氏は『The Art of Assembly Language』[日本では未訳]という超ハードコアな本も執筆し、HLAというアセンブラも作っている)という気がするが、高級言語側の書き方でいかに出力が変動するかをVC++やGCCなどの各コンパイラで生成するアセンブリコードを実際に示すことで、このテーマに切り込んでいる。

監訳はバイナリに造詣の深い鵜飼文敏氏・後藤正徳氏・八重樫剛史氏を揃え、まつもとゆきひろ氏には素晴しい序文をご執筆いただいたという豪華布陣である。アセンブラ好きのバイナリアン/バイナリアン予備軍にお勧めしたい。組み込み関係の開発者にも参考になるところは多いだろう。



/

豚汁

気力レスなので、冷蔵庫にあるものと適当に買ってきたものを放り込んで豚汁。ダシの昆布に良いものを使えばなんとかなるというのがありがたい。