UNIX a.out/ELF, Windows COFF/PE を中心としたオブジェクトフォーマット、それを作成するリンカ、ロードするローダの仕組みがまとめられている。 #amazon||> ||< #amazon||> ||< サポートサイト: - Linkers and Loaders -- http://linker.iecc.com/ #more|| 前から気になっていた一冊ですが、日本語訳が分かりづらいというAmazonレビューや、amazon.comの原著レビューでも「内容が浅く、サンプルが少なくて分かりづらい」という辛口レビューが載せられていたため、購入を躊躇していました。 実はこの本、Web上で清書前のドラフト版が公開されています。ラフスケッチ段階の図も添付されています。 そこで、まずドラフト版を流し読みしてみました。 結論として購入は見送りました。 まず日本語訳が分かりづらいというAmazonレビューですが、これ、そもそも原文が分かりづらいと思うんです。(ドラフト版ということもあるでしょうが)一つの文が妙に長い感じがし、or/and/ifが入り組んでいる。日本語訳は榊原一矢氏によるものですが、同氏が翻訳している「プログラミング Erlang」を読んだことがあり、こちらは非常に分かりやすかった。つまり翻訳者の能力がひどいわけではなく、原文がそもそも分かりづらいのではないかと思います。 サンプルや図が少ないというレビューもその通りで、読んでいて疲れてきます。 購入を見送った最後にして最大の理由は、ELFやCOFF/PEフォーマットの、より分かりやすく、図も豊富な資料が別に存在することです。この本が刊行された1999-2000年当時がどのような状況だったのかは分かりませんが、2010年現在、WebとLinuxの発展もあり、Web上に豊富に資料が存在します。x86アーキテクチャに絞ってELF/COFF/PEフォーマットについて調べるのであれば、わざわざこの本を購入する必要は無いと思います。 リンカ・ローダの分かりやすい入門書としては不適切ですが、「温故知新」でリンカ・ローダにまつわる古今東西を俯瞰する読み物としては面白いかもしれません。以下のようなトピックについても紹介されています。 - アドレス空間が分離されないアーキテクチャや、ファイルをメモリにマップする機能がまだ存在していない、そうした時代どのようにライブラリやシンボルを効率的に管理していたのか? - x86リアルモードでの1セグメント64KB制限がリンカ・ローダの再配置に与えた影響は? - IBMメインフレームのオブジェクトフォーマットに息づく、パンチカード時代の制限とは? まとめると、リンカやローダーそれ自体を開発する人なら、有用かもしれません。 そうでない人でも、メインフレーム時代のリンカ・ローダ技術に興味が有るのならおすすめです。 入門レベルやELF/COFF/PEなど特定のオブジェクトフォーマットに絞った解説が必要な人は、Web上の各種資料を探したほうが早いかもしれません。 いずれにしても、まずは公開されているドラフト版に目を通した後、購入するかどうか決めることをお薦めします。 ---- 公開されているドラフト版ですが、章毎にファイルが分かれてしまっています。流し読みついでにOOoのWriteにコピペしていき、一つのPDFにまとめました。いわゆる「自炊」用ですので公開はしません。欲しい方はメールで連絡してください。