私はコンパイラを専門とするソフトウェア開発者なので、リンカやローダにはある程度通じており、特に名前解決や再配置と言った概念は共有していると言って良い。最近では開発環境上でプログラムを開発する事が普通なので、リンカやローダの存在感は薄いが、プログラムがどうやってメモリにローディングされ実行されるかを知りたい方、あるいは開発環境を作る立場の方にとっては有用な書。他の評者の方がおっしゃる程、訳も悪くないと思う。また、Windows上でdllを作りたい方にも参考になると思う。
第一章では、リンカーとローダの前説として、ローディングとは何か、再配置の概念、名前解決等が説明される。第二章では、アーキテクチャに関る事項として、アドレス空間(指定方法)、エンディアン、手続き呼び出しとスタック構成、仮想メモリとページングが説明される。第三章では様々なオブジェクト形式が再配置可能性を中心に説明される。特に、ELFとCOFFについては、私は解析プログラムを作成した経験があり、懐かしく読んだ。第四章では、記憶域割り当てについて述べられるが、特にC++のinitializer, finalizerについて言及している点が特徴。第五章では、シンボルの管理の説明。シンボル・テーブルの形式から始まって、global symbol, segment, デバッグ情報の管理、C++の型と有効範囲が論じられる。第六章ではライブラリの説明。第七章では、再配置についてマシンやオブジェクト形式毎に改めて詳しく説明される。第八章ではオーバレイ、第九章では共有ライブラリ、第十章ではやはりマシンやオブジェクト形式毎に動的リンク・ロードが説明される。最終章では、差分リンク、リンク時最適化等、高度なテクニックが紹介される。
リンカーとローダの機能を要領良く説明して、プログラムの実行方式の理解に有用な書。