home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

読書メモ/"Linkers & Loaders"

読書メモ/"Linkers & Loaders"

読書メモ / "Linkers & Loaders"
id: 884 所有者: msakamoto-sf    作成日: 2010-12-30 09:29:00
カテゴリ: Assembler C言語 Linux UNIX 読書 

UNIX a.out/ELF, Windows COFF/PE を中心としたオブジェクトフォーマット、それを作成するリンカ、ロードするローダの仕組みがまとめられている。

サポートサイト:

前から気になっていた一冊ですが、日本語訳が分かりづらいという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にまとめました。いわゆる「自炊」用ですので公開はしません。欲しい方はメールで連絡してください。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-12-30 09:32:07
md5:db43a1e25ea0b12fcb7f5b55385e962c
sha1:c4b7699dfb975176ffe91a9f394c9fcca251f00b
コメント
コメントを投稿するにはログインして下さい。