• Showing Page History #90642
目次に戻る:DWARFファイルフォーマット

TAG詳細(その09) 配列編 ※array_type、subrange_type、enumeration_type

配列 (DW_TAG_array_type)

ということで、配列です。配列は「DW_TAG_array_type」で表現されます。
こいつも、相応のAttributeを持っていてですね、以下となりますです。

No. Attribute名 意味
1 DW_AT_name (もしソース上で配列に名前を授けられている場合)NULL終りの配列名
2 DW_AT_ordering (多次元配列のDIEの場合)
配列要素の並び順を示す値を持ちます。以下参照
3 DW_AT_type 配列の要素それぞれの型(のDIEへの参照)
4 DW_AT_bit_stride
(DW_AT_stride_size)
5 DW_AT_byte_size
6 DW_AT_allocated
7 DW_AT_associated
8 DW_AT_data_location
9 DW_AT_start_scope この基本型が有効になるのが、DW_TAG_base_typeのスコープとなるTAG(一般に、親TAG)のDW_AT_low_pcからでなく、途中から始まる場合、有効となる最初のコードアドレスです。
これは「TAG詳細(その06) 変数/関数の引数/定数編」を参照です。


(No.2) DW_AT_orderingの値

このAttributeは、多次元配列においての、各次元の順番を示すモンです。
この値は、以下の表の2つのうちのどっちかになります。

名称 Value 意味
DW_ORD_col_major 0x00 列優先(つまり、一般に右の要素から順。C言語の標準はこれですね)
DW_ORD_row_major 0x01 行優先(つまり、左の要素から。C言語の標準とは逆の並び)

なお、多次元配列なのにこのAttributeが存在しなかったら、そのCompilation Unit(オブジェクトファイル)のTAG内のDW_AT_languageで指定されるプログラミング言語の「標準的な並び」と仮定されることになってます。
また、一次元配列なのにこのAttributeが存在してしまったら、そいつは単なるおまけです。無視してOK(と原文にも明記しているんです)


(2013/09/16 作成中でごんす。)

目次に戻る:DWARFファイルフォーマット