データ表現
オブジェクトファイルの形式は、8 ビットバイト、32 ビットアーキテクチャー、および 64 ビットアーキテクチャーを持つさまざまなプロセッサをサポートしています。しかしながら、データ表現は、より大きな、またはより小さなアーキテクチャーに拡張できるように意図されています。表 13 と表 14 に、32 ビットデータタイプと 64 ビットデータタイプの一覧を示します。
オブジェクトファイルは、いくつかの制御データをマシンに依存しない形式で表現します。この形式は、オブジェクトファイルの共通の識別および解釈を規定します。オブジェクトファイルの残りのデータは、このオブジェクトファイルが作成されたマシンとは関係なく、対象となるプロセッサ用にエンコードされています。
表 13 ELF 32 ビットデータタイプ
|
|
|
|
Elf32_Addr
|
4
|
4
|
符号なしプログラムアドレス
|
Elf32_Half
|
2
|
2
|
符号なし、中程度の整数
|
Elf32_Off
|
4
|
4
|
符号なしファイルオフセット
|
Elf32_Sword
|
4
|
4
|
符号付き整数
|
Elf32_Word
|
4
|
4
|
符号なし整数
|
unsigned char
|
1
|
1
|
符号なし、短い整数
|
|
表 14 ELF 64 ビットデータタイプ
|
|
|
|
Elf64_Addr
|
8
|
8
|
符号なしプログラムアドレス
|
Elf64_Half
|
2
|
2
|
符号なし、中程度の整数
|
Elf64_Off
|
8
|
8
|
符号なしファイルオフセット
|
Elf64_Sword
|
4
|
4
|
符号付き整数
|
Elf64_Word
|
4
|
4
|
符号なし整数
|
Elf64_Xword
|
8
|
8
|
符号なし、長い整数
|
Elf64_Sxword
|
8
|
8
|
符号付き、長い整数
|
unsigned char
|
1
|
1
|
符号なし、短い整数
|
|
オブジェクトファイルの形式で定義されるすべてのデータ構造は、該当クラスの自然なサイズと整列ガイドラインに従います。データ構造に明示的にパッドを入れることで、4 バイトオブジェクトに対して 4 バイト整列を保証したり構造サイズを 4 の倍数に設定したりできます。また、データはファイルの先頭から適切に整列されます。したがってたとえば、Elf32_Addr メンバーが存在する構造はファイル内において 4 バイト境界で整列されます。同様に、Elf64_Addr メンバーが存在する構造は 8 バイト境界で整列されます。
注 -
移植性を考慮して、ELF ではビットフィールドを使用していません。