※注:このページの内容、最終的にどこにまとめるべきなのか、決め兼ねてます。(とりあえず、仮でその11)
まず、原文直訳ですが。。。
ということで、これら「継承」「サブクラス」「拡張」「実装」などの概念での、クラスとクラスの関係のDWARFでの表現方法のホンヤクになります。
No. | Attribute名 | ごせつめい |
1 | DW_AT_type | この値は継承/拡張元のクラスもしくは実装するインタフェースなど、つまり、「(親/基底)クラス/インタフェース」宣言のDIEへの参照 |
2 | DW_AT_data_member_location | 他のクラスを「継承」もしくは「拡張」したクラスのDIE(つまり、サブクラスのDIE)の場合(インタフェースは含まれないっぽい) このAttributeの値は、継承されたクラス(親クラス)のメモリアドレス上での開始位置に関連する、継承された型の開始アドレスで、値の形式次第で、以下2パターンありです。 * 値が「定数」であれば → クラスの開始アドレスから継承した型の開始アドレスまでのByte単位でのオフセット値 * それ以外の値の形式の場合 → 「Location description」での表現となり、以下の注意事項がアリです。 注意1) この「Location description」を表かする前に、継承されたクラス(親クラス)の開始アドレスがDWARF expression スタックのトップにpushされている前提とします 注意2) この前提の上、「Location description」を評価した結果が、継承された型のメモリアドレス上の開始位置 ★この開始アドレスの説明は、英文自体の難易はそんなんでもないよーに読めましたが、そおそも「継承された型」がなぜ突然出て来るか不明で、理解できていません。。。 |
3 | DW_AT_accessibility | (Attribute名の通り)アクセス権定義です。 このAttributeを持っていなかった場合、注意ありです! * 対象が「クラス」なら → 「private」が宣言されたもの、と仮定します * 対象が「インタフェース」なら → 「public」が宣言されたもの、と仮定します。 |
4 | DW_AT_virtuality | もし継承元のクラスがC++の「基底」クラスならば、virtual句の状況を示します なお、蛇足だけど、原文にはこのAttributeを持つケース、つまり「基底クラス」のケースでは、DW_AT_data_member_locationの「Location description」は一般にただならぬ(面倒な)内容になるよ、って脅しも書いてあります。。。 |
No. | Attribute名 | せつめいだってば |
1 | DW_AT_name | (クラスや構造体の修飾句としてもっている)、ソース上のアクセス権宣言に使われている名称。(NULLエンド文字列) |
2 | DW_AT_accessibility | アクセス権を示す定数。(以下参照) |
このAttributeは、文字通り「アクセス権」の種類を示す定数です。種類、意味、値は以下表のとーりです。
No. | Accessibility Code name | Value | 内容 |
1 | DW_ACCESS_public | 0x01 | public宣言です。(誰からでも見えちゃうよ、ってこと) |
2 | DW_ACCESS_protected | 0x02 | protect宣言です。 |
3 | DW_ACCESS_private | 0x03 | private宣言です。(覗いちゃいやぁ〜ん、ってことです) |
[PageInfo]
LastUpdate: 2013-09-23 13:24:55, ModifiedBy: koinec
[License]
FreeBSD Documentation License
[Permissions]
view:all, edit:members, delete/config:members