Linkers & Loaders

個数:

Linkers & Loaders

  • 提携先に2冊在庫がございます。(2019年04月18日 19時23分現在)
    ※1回のご注文は10冊までとなります
  • 出荷予定日とご注意事項
    ※上記を必ずご確認ください

    【出荷予定日】
    ■午前0時~午前10時までのご注文は「翌々日~3日後に出荷」
    ■午前10時1分から午後(夜)11時59分までのご注文は「3日~4日後に出荷」

    【ご注意事項】 ※必ずお読みください
    ◆在庫数は刻々と変動しており、ご注文手続き中に減ることもございます。
    ◆在庫数以上の数量をご注文の場合には、超過した分はお取り寄せとなり日数がかかります。入手できないこともございます。
    ◆事情により出荷が遅れる場合がございます。
    ◆お届け日のご指定は承っておりません。
    ◆「帯」はお付けできない場合がございます。
    ◆特に表記のない限り特典はありません。
  • ●店舗受取サービス(送料無料)をご利用いただけます。
    【カートに入れる】を選択後に全国店舗の中からお受け取り店をご指定下さい。詳細はこちら
  • サイズ B5判/ページ数 239p/高さ 24cm
  • 商品コード 9784274064371
  • NDC分類 007.64
  • Cコード C3055

内容説明

リンカとローダの恩恵を日々受けているプログラマであっても、それらについてはたしてどれだけ知っているだろうか。本書は、リンカとローダの仕組みを説明することにそのすべてが費やされた、ユニークな解説書。まず、さまざまなコンパイラやOSごとの違いを示しつつ、リンクとロードについて総合的に解説する。その上で筆者は、高速で簡潔なコードを書くための実践的なアドバイスを提供する。

目次

第1章 リンクとロード
第2章 アーキテクチャに関する問題
第3章 オブジェクトファイル
第4章 記憶領域の割り当て
第5章 シンボルの管理
第6章 ライブラリ
第7章 再配置
第8章 ロードとオーバレイ
第9章 共有ライブラリ
第10章 動的なリンクとロード
第11章 高度なテクニック

著者等紹介

Levine,John R.[LEVINE,JOHN R.][Levine,John R.]
“lex & yacc”(O’Reilly)、“Programming for Graphics Files in C and C++”(Wiley)、“The Internet for Dummies”(IDG)を含む数多くの書籍を執筆、または共著者となっている。また、“Journal of C Language Translation”の名誉発行人であり、comp.compilersニューズグループの長年にわたるモデレータであり、最初の商用Fortran 77コンパイラのうちのひとつの作者でもある。イエール大学にて計算機科学の博士号を取得

榊原一矢[サカキハラカズヤ]
有限会社ポジティブエッジ代表取締役。学生時代からプログラミングと技術翻訳に関わる。卒業後いくつかのソフトウェア開発会社で勤務した後に独立。主にISDNや携帯電話などの通信端末や交換機のファームウェア、デバイスドライバの開発に携わるが、それに伴う開発環境整備などのコンサルティングなども同時に行っている。最近は、組み込み系の開発現場に即した現実的なテスト手法に興味を持っている
※書籍に掲載されている著者及び編者、訳者、監修者、イラストレーターなどの紹介情報です。

出版社内容情報

【セールスポイント】
リンカとローダの仕組みを基礎から詳細に解説

【発刊の目的と内容】
本書は、リンカとローダがどのように動作するかについて、またメインフレーム・UNIX・WindowsなどさまざまなOSのオブジェクトファイル形式について、基礎から丁寧に説明したユニークな解説書。学生やプログラマの教科書として最適。

【購読対象者】
プログラマ、学生・研究者、システム管理者など

【詳細目次】
日本語版監訳者より
訳語対応表
凡例

序章

第1章 リンクとロード
1.1 リンカとローダは何をするのか?
1.2 アドレスのバインド:歴史的観点
1.3 リンクとロードの違い
1.3.1 2パスリンク
1.3.2 オブジェクトコードライブラリ
1.4 再配置とコードの修正
1.5 コンパイラドライバ
1.5.1 リンカのコマンド言語
1.6 リンクの実例
演習

第2章 アーキテクチャに関する問題
2.1 アプリケーションバイナリインターフェイス
2.2 メモリアドレス
2.2.1 バイト順序と整列
2.3 アドレスの形成
2.4 命令の形式
2.5 手続きの呼び出しとアドレス可能性
2.5.1 手続きの呼び出し
2.6 データと命令の参照
2.6.1 IBM 370
2.6.2 SPARC
2.6.3 Intel x86
2.7 ページングと仮想メモリ
2.7.1 プログラムのアドレス空間
2.7.2 マップされたファイル
2.7.3 共有ライブラリとプログラム
2.7.4 位置独立コード
2.8 Intel 386のセグメント
2.9 組み込みアーキテクチャ
2.9.1 アドレス空間の特異性
2.9.2 一様でないメモリ
2.9.3 メモリの整列
演習 47

第3章 オブジェクトファイル
3.1 オブジェクトファイルには何が格納されるか?
3.1.1 オブジェクト形式の設計
3.2 情報のないオブジェクト形式:MS-DOS .COMファイル
3.3 コードセクション:UNIX a.outファイル
3.3.1 a.outファイルのヘッダ
3.3.2 仮想メモリとの関係
3.4 再配置:MS-DOS EXEファイル
3.5 シンボルと再配置
3.6 再配置可能なa.out
3.6.1 再配置エントリ
3.6.2 シンボルと文字列
3.6.3 a.outのまとめ
3.7 UNIX ELF
3.7.1 再配置可能ファイル
3.7.2 ELF実行可能ファイル
3.7.3 ELFのまとめ
3.8 IBM 360オブジェクト形式
3.8.1 ESDレコード
3.8.2 TXTレコード
3.8.3 RLDレコード
3.8.4 ENDレコード
3.8.5 IBM 360オブジェクト形式のまとめ
3.9 Microsoft Portable Executable形式
3.9.1 PEの特殊セクション
3.9.2 PE実行可能ファイルの実行
3.9.3 PEとCOFF
3.9.4 PEのまとめ
3.10 Intel/Microsoft OMFファイル
3.10.1 OMFレコード
3.10.2 OMFファイルの詳細
3.10.3 OMFのまとめ
3.11 オブジェクト形式の比較
演習
課題

第4章 記憶領域の割り当て
4.1 セグメントとアドレス
4.2 単純な記憶領域のレイアウト
4.3 複数の種類のセグメントタイプ
4.4 セグメントとページ整列
4.5 共通ブロックなどの特殊なセグメント
4.5.1 共通ブロック
4.5.2 C++における重複の除去
4.5.3 初期化子と終了子
4.5.4 IBMの擬似レジスタ
4.5.5 特殊なテーブル
4.5.6 x86のセグメント化記憶領域割り当て
4.6 リンカ制御スクリプト
4.7 記憶領域の割り当ての実際
4.7.1 UNIX a.outリンカの記憶領域の割り当て
4.7.2 ELFの記憶領域の割り当て
4.7.3 Windowsリンカの記憶領域の割り当て
演習
課題

第5章 シンボルの管理
5.1 バインドと名前の解決
5.2 シンボルテーブルの形式
5.2.1 モジュールテーブル
5.2.2 大域シンボルテーブル
5.2.3 シンボルの解決
5.2.4 特殊なシンボル
5.3 名前の変形
5.3.1 CとFortranの単純な名前の変形
5.3.2 C++の型エンコード:型と有効範囲
5.3.3 リンク時の型チェック
5.4 weak外部シンボルやその他のシンボル
5.5 デバッグ情報の管理
5.5.1 行番号情報
5.5.2 シンボルと変数の情報
5.5.3 実用上の問題
演習
課題

第6章 ライブラリ
6.1 ライブラリの目的
6.2 ライブラリの形式
6.2.1 オペレーティングシステムの利用
6.2.2 UNIXとMS Windowsのアーカイブファイル
6.2.3 64ビットへの拡張
6.2.4 Intel OMFライブラリ
6.3 ライブラリの作成
6.4 ライブラリの検索
6.5 性能の問題
6.6 weak外部シンボル
演習
課題

第7章 再配置
7.1 ハードウェアによる再配置とソフトウェアによる再配置
7.2 リンク時の再配置とロード時の再配置
7.3 シンボルとセグメントの再配置
7.3.1 シンボルの検索
7.4 基本的な再配置手法
7.4.1 命令の再配置
7.4.2 ECOFFのセグメント再配置
7.4.3 ELFの再配置
7.4.4 OMFの再配置
7.5 再リンク可能な出力形式と再配置可能な出力形式
7.6 その他の再配置形式
7.6.1 連鎖参照
7.6.2 ビットマップ
7.6.3 特別なセグメント
7.7 再配置の特別な場合
演習
課題

第8章 ロードとオーバレイ
8.1 基本的なロード
8.2 再配置を考慮した基本的なロード
8.3 位置独立コード
8.3.1 TSS/360の位置独立コード
8.3.2 ルーチンごとのポインタテーブル
8.3.3 TOC
8.3.4 ELFの位置独立コード
8.3.5 PICのコストと利点
8.4 ブートストラップのロード
8.5 木構造のオーバレイ
8.5.1 オーバレイの定義方法
8.5.2 オーバレイの実装
8.5.3 オーバレイの細部
8.5.4 オーバレイのまとめ
演習
課題

第9章 共有ライブラリ
9.1 バインドの時機
9.2 共有ライブラリの実際
9.3 アドレス空間の管理
9.4 共有ライブラリの構造
9.5 共有ライブラリの作成
9.5.1 ジャンプテーブルの作成
9.5.2 共有ライブラリの作成
9.5.3 スタブライブラリの作成
9.5.4 バージョンによる命名
9.6 共有ライブラリとのリンク
9.7 共有ライブラリを用いた実行
9.8 mallocハックなどの共有ライブラリに関する問題
演習
課題

第10章 動的なリンクとロード
10.1 ELFの動的リンク
10.2 ELFファイルの内容
10.3 動的リンクプログラムのロード
10.3.1 動的リンカの起動
10.3.2 ライブラリの検索
10.3.3 共有ライブラリの初期化
10.4 PLTによる手続きの遅延リンク
10.5 動的リンクのその他の特徴
10.5.1 静的な初期化
10.5.2 ライブラリのバージョン
10.6 実行時の動的ロード
10.7 Microsoftの動的リンクライブラリ
10.7.1 PEファイルにおけるインポートシンボルとエクスポートシンボル
10.7.2 遅延バインド
10.7.3 DLLとスレッド
10.8 OSF/1の擬似静的共有ライブラリ
10.9 共有ライブラリの高速化
10.10 動的リンク手法の比較
演習
課題

第11章 高度なテクニック
11.1 C++に関するテクニック
11.1.1 試行リンク
11.1.2 重複コードの除去
11.1.3 データベースによる方法
11.2 差分リンクと再リンク
11.3 リンク時ガベージコレクション
11.4 リンク時最適化
11.5 リンク時コード生成
11.5.1 リンク時のプロファイリングと測定
11.5.2 リンク時アセンブル
11.5.3 ロード時コード生成
11.6 Javaのリンクモデル
11.6.1 Javaにおけるロードとリンクの手順
演習
課題

参考文献
索引