仕事でお客さんに「位置非依存コード(PIC: Position Independent Code)を使いますか?」と聞いたら、「それってなんですか?」と逆に聞き返されてしまった。ところが、聞いた割には私自身も良く知らなかったので(笑)、早速調べてみることに。
Google先生にお伺いを立てたところ、「Linuxの共有ライブラリを作るとき PIC でコンパイルするのはなぜか」を発見し参考にさせて頂く。
なるほどね。モジュール(主にLinuxの共有ライブラリ。Shared Objectからsoと呼ばれる)内のコードを相対アドレスにしておくことにより、異なるメモリ空間を持つ複数の場所(プロセス)から参照した時に、コードの再配置を容易にする技術だそうな。ま、名前の通りですな。
何にしても、中々に分かり易い良いブログを拝見しました。多謝。
ついでに、Linkers & Loadersと30日でできる! OS自作入門をアマゾンで発注。仕事なので、是非経費でお願いしますよ。
最近、組み込みソフトウェア関連の製品を扱っているので、プログラムのバイナリフォーマットとか、実行時のメモリ再配置とか、そういうマニアック(?)な話題が多い。これを機会にちゃんと勉強しようっと。
0 件のコメント:
コメントを投稿