5.4.4 ストレージ クラス

シンボル テーブルのストレージ クラス フィールドは、シンボルが表す定義の種類を示します。下の表では、取り得る値を示します。ストレージ クラスは1バイトの符号なし整数です。したがって、特別な値である-1は符号なしでそれと同じ意味を持つ0xFFで表されます。

従来のCOFF形式は多数のストレージ クラス値を利用しますが、Microsoftのツールはほとんどのシンボリック情報をCodeView形式に依存しており、一般にはEXTERNAL(2)、STATIC(3)、FUNCTION(101)、STATIC(103)の4つのストレージ クラス値しか使いません。下記の2列目の見出しを除き、「値」はシンボル レコードの値フィールドを意味します(その解釈はストレージ クラスとして見られる数に依存します)。

定数 解説 / 値フィールドの解釈
IMAGE_SYM_CLASS_END_OF_FUNCTION -1 (0xFF) 関数の終わりを表す特殊シンボル。デバッグ用。
IMAGE_SYM_CLASS_NULL 0 ストレージ クラスが割り当てられていません。
IMAGE_SYM_CLASS_AUTOMATIC 1 自動(スタック)変数。値フィールドはスタック フレームのオフセットを指定します。
IMAGE_SYM_CLASS_EXTERNAL 2 Microsoftのツールによって外部シンボルとして使用されます。値フィールドはセクション番号がIMAGE_SYM_UNDEFINED(0)の場合にはサイズを表します。セクション番号が0でない場合には、値フィールドはセクション内のオフセットを指定します。
IMAGE_SYM_CLASS_STATIC 3 値フィールドはセクション内のシンボルのオフセットを指定します。値が0の場合には、シンボルはセクション名を表します。
IMAGE_SYM_CLASS_REGISTER 4 レジスタ変数。値フィールドはレジスタ番号を指定します。
IMAGE_SYM_CLASS_EXTERNAL_DEF 5 シンボルは外部で定義されています。
IMAGE_SYM_CLASS_LABEL 6 モジュール内で定義されているコードラベル。値フィールドはセクション内でのシンボルのオフセットを指定します。
IMAGE_SYM_CLASS_UNDEFINED_LABEL 7 未定義のコードラベルへの参照。
IMAGE_SYM_CLASS_MEMBER_OF_STRUCT 8 構造体メンバ。値フィールドは何番目のメンバであるかを指定します。
IMAGE_SYM_CLASS_ARGUMENT 9 関数の形式的引数(パラメータ)。値フィールドは何番目の引数であるかを指定します。
IMAGE_SYM_CLASS_STRUCT_TAG 10 構造体タグ名エントリ。
IMAGE_SYM_CLASS_MEMBER_OF_UNION 11 共用体メンバ。値フィールドは何番目のメンバであるかを指定します。
IMAGE_SYM_CLASS_UNION_TAG 12 共用体タグ名エントリ。
IMAGE_SYM_CLASS_TYPE_DEFINITION 13 Typedef エントリ。
IMAGE_SYM_CLASS_UNDEFINED_STATIC 14 静的データ宣言。
IMAGE_SYM_CLASS_ENUM_TAG 15 列挙型 tagname エントリ。
IMAGE_SYM_CLASS_MEMBER_OF_ENUM 16 列挙メンバ。値は何番目のメンバであるかを指定します。
IMAGE_SYM_CLASS_REGISTER_PARAM 17 レジスタ パラメータ。
IMAGE_SYM_CLASS_BIT_FIELD 18 ビット フィールド参照。値はビットフィールドの何番目のビットであるかを指定します。
IMAGE_SYM_CLASS_BLOCK 100 .bb(ブロック開始)または .eb(ブロック終了)レコード。値はコード位置の再配置可能アドレスを示します。
IMAGE_SYM_CLASS_FUNCTION 101 Microsoftのツールによって、関数のエクステントを定義するシンボル レコードのために使用されます。関数開始(.bf)、関数終了(.ef)、および関数内の行(.lf)があります。.lf レコードの場合、値フィールドは関数内のソース行数を与えます。.ef レコードの場合、値フィールドは関数コードのサイズを与えます。
IMAGE_SYM_CLASS_END_OF_STRUCT 102 構造体エントリの終わり。
IMAGE_SYM_CLASS_FILE 103 Microsoftのツールによって、電灯的なCOFF形式とともに、ソースファイルのシンボル レコードのために使用されます。シンボルの後にはファイルに名前を付ける補助レコードが続きます。
IMAGE_SYM_CLASS_SECTION 104 セクションの定義(Microsoftのツールは、代わりにSTATICクラスを使います)。
IMAGE_SYM_CLASS_WEAK_EXTERNAL 105 弱い外部参照。Microsoftのツールは、代わりにEXTERNALストレージ クラスを使います。詳しくは5.5.3節「補助形式3:弱い外部参照」を参照してください。


戻る