ということで、配列です。配列は「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) 変数/関数の引数/定数編」を参照です。 |
この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 作成中でごんす。)