システム オブジェクト モデル (ファイル形式)

システムオブジェクトモデル
開発者ヒューレット・パッカード

コンピューティング分野において、システムオブジェクトモデル(SOM)は、ヒューレット・パッカード社がHP-UXおよびMPE/ixオペレーティングシステム向けに開発した独自の実行ファイル形式です。特に、SOMはPA-RISCファミリープロセッサ 上で動作する32ビットアプリケーション実行ファイルオブジェクトコード、および共有ライブラリに使用されるネイティブ形式です。

64ビットプロセッサの導入に伴い、ヒューレット・パッカードは、より広範な64ビットプログラムコードを表現するため、実行可能かつリンク可能なフォーマット(ELF)を採用しました。ただし、32ビットモードで実行されるアプリケーションには引き続きSOMを使用しました。その後、 Itaniumプロセッサフ​​ァミリの導入に伴い、HP-UXはSOMフォーマットを廃止し、32ビットと64ビットの両方のアプリケーションコードでELFを採用しました。

HP-UXでは、SOMファイル形式はa.out形式と呼ばれることもあり、ヘッダーファイル「/usr/include/a.out.h」内のCプログラミング言語構造によって記述されます。ただし、SOM形式は技術的には、他の多くのUnixオペレーティングシステムで使用されている標準のa.out形式とは異なります。

SOMファイル形式の概要

SOMファイルは、固定サイズのヘッダーレコードとそれに続く複数のセクション(一部はオプション)で構成されます。ヘッダーは常にファイルの先頭に出現し、ファイル内の他のセクションの位置を示すバイトオフセットとサイズが含まれます。ヘッダーを除く他のセクションはファイル内の任意の場所に出現できますが、SOMファイルの典型的なレイアウト(すべてのセクションが存在すると仮定)は以下のとおりです。

  • ヘッダーレコード
  • 補助ヘッダーレコード
  • 宇宙記録
  • サブスペースレコード
  • ローダー修正レコード
  • スペースストリングス
  • シンボルレコード
  • フィックスアップレコード
  • シンボル文字列
  • コンパイラレコード
  • ロード可能なスペースのデータ
  • ロードできないスペースのデータ

数値フィールドは、PA-RISCのネイティブバイトオーダーであるビッグエンディアンバイトオーダーで格納され、そのほとんどは32ビット幅です。文字列は通常8ビットASCIIでエンコードされ、 C言語の文字列と同様に、先頭に32ビットの長さインジケータが付加され、ヌル終端されます。ほとんどのレコードはワード境界に揃えられ(偶数バイトオフセットで開始)、必要に応じてパディングが挿入されます。

参照