5.4.3 型の表現

シンボル テーブルエントリの型フィールドは、2バイトからなり、各バイトは型情報を表します。下位バイト(LSB)は単純な(基本の)データ型を表し、上位バイト(MSB)は、存在していれば、複合型を表します。

MSB(上位バイト) LSB(下位バイト)
複合型:なし、ポインタ、関数、配列 基本型: 整数、浮動小数点数、

以下の値は基本型のために定義されていますが、Microsoftのツールは一般にこのフィールドを使用せず、下位バイトを0にセットします。その代り、CodeView情報が型を示すために使用されます。しかし、ここでは万全を期して、取り得るCOFFの値のリストを示します。

定数 解説
IMAGE_SYM_TYPE_NULL 0 型情報がないか、未知の基本型です。Microsoftのツールはこの設定を使用します。
IMAGE_SYM_TYPE_VOID 1 有効な型ではありません。Voidポインタおよび関数の場合に使用されます。
IMAGE_SYM_TYPE_CHAR 2 文字(符号付きバイト)。
IMAGE_SYM_TYPE_SHORT 3 2バイトの符号付き整数。
IMAGE_SYM_TYPE_INT 4 自然な整数型(Windows NTでは通常は4バイト)。
IMAGE_SYM_TYPE_LONG 5 4バイトの符号付き整数。
IMAGE_SYM_TYPE_FLOAT 6 4バイトの浮動小数点数。
IMAGE_SYM_TYPE_DOUBLE 7 8バイトの浮動小数点数。
IMAGE_SYM_TYPE_STRUCT 8 構造体。
IMAGE_SYM_TYPE_UNION 9 共用体。
IMAGE_SYM_TYPE_ENUM 10 列挙型。
IMAGE_SYM_TYPE_MOE 11 列挙メンバ(特定の値)。
IMAGE_SYM_TYPE_BYTE 12 バイト。1バイトの符号なし整数。
IMAGE_SYM_TYPE_WORD 13 ワード。2バイトの符号なし整数。
IMAGE_SYM_TYPE_UINT 14 自然なサイズの符号なし整数(通常は4バイト)。
IMAGE_SYM_TYPE_DWORD 15 4バイトの符号なし整数。

上位バイトは、下位バイトで指定された基本型について、その型を指すポインタであるか、その型を返す関数であるか、またはその型の配列であるかを指定します。Microsoftのツールはこのフィールドを、シンボルが関数であるかどうかを示すためだけに使います。したがって、型フィールドの値は0x0と0x20の2つだけです。しかし、他のツールはこのフィールドを使ってより多くの情報をやり取りすることができます。

関数の属性を正しく指定することは非常に重要です。この情報はインクリメンタル リンクが正しく働くために不可欠です。いくつかのアーキテクチャでは、この情報が他の目的のために必要になることがあります。

定数 解説
IMAGE_SYM_DTYPE_NULL 0 もとになる型はありません。シンボルは単純なスカラ変数です。
IMAGE_SYM_DTYPE_POINTER 1 基本型へのポインタ。
IMAGE_SYM_DTYPE_FUNCTION 2 基本型を返す関数。
IMAGE_SYM_DTYPE_ARRAY 3 基本型の配列。


戻る