ネットワーク経由で組み込みソフトのバグを修正する ――後からモジュールを追加できるITRON仕様OSの開発

原田雅章

tag: 組み込み

技術解説 2003年7月28日

2)位置独立コード形式

 次に検討したのが,ロード・モジュールをPIC(position independent code;実行位置独立コード)形式に限定する方法です(図5).PICとは,プログラムのアドレス参照のすべてをベース・アドレス・レジスタやプログラム・カウンタ・レジスタの相対呼び出しで間接参照する出力形式です.特定のプロセッサや開発ツールはPICに対応しています.

 しかし,PICコードのプログラムにすべてのプロセッサや開発ツールが対応可能なわけではありません.また一般的に,ロード位置に依存したコードで生成したプログラムよりも実行オーバヘッドが大きくなります.これらの理由により,この方法も採用しませんでした.

f05_01.gif
〔図5〕非PIC形式,PIC形式のそれぞれでコンパイルした命令コード
GNU Cコンパイラを使用して,Cのソース・コードを米国Motorola社の68020の命令語にコンパイルした結果を示す.(a)が非PIC形式,(b)がPIC形式を指定したものである.コンパイル結果を見てわかるように,非PIC形式は絶対アドレス・モードで変数や関数をアクセスするように翻訳されている.この形式のプログラムは,リンカが割り当てたアドレスとロードした物理アドレスが一致しないと動作しない.一方,PIC形式でコンパイルした命令語の場合,変数アクセスはベース・レジスタ間接アクセスに,関数呼び出しはプログラム・カウンタ・レジスタ相対呼び出しのアドレッシング・モード命令に翻訳されている.この形式では,ローダによって任意のアドレスに配置可能となる.ちなみにOS-9は,ロード・モジュールがPIC形式であることを前提にローディング機能を実現したOSである.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日