3.26 --fieldoffsets

アセンブリ言語の EQU ディレクティブのリストを出力します。このディレクティブによって、C++ クラスや C 構造体のフィールド名は、そのクラスまたは構造体のベースからのオフセットを表すようになります。

使用法

入力 ELF ファイルは、再配置可能なオブジェクトまたはイメージです。
--output を使用すると、出力がファイルに転送されます。armasmINCLUDE コマンドを使用すると、生成されたファイルをロードし、C++ クラスおよび C 構造体メンバにアセンブリ言語から名前でアクセスできます。
このオプションを指定すると、構造体に関するすべての情報が出力されます。構造体のサブセットを出力するには、 --select select_options を使用します。
armasm で入力ファイルとして指定できるファイルを生成する必要がない場合は、 --text -a オプションを使用して、表示されるアドレスを読みやすい形式にすることができます。-a オプションを指定すると、アドレスは再配置可能オブジェクト内には存在しないため、イメージ内の構造体と静的データのアドレス情報のみが出力されます。

制約条件

このオプションを使用すると、以下のようになります。
  • ソースファイルにデバッグ情報がない場合は使用できません。
  • テキストモードおよび --expandarrays ユーティリティで使用できます。

サンプル

以下に、--fieldoffsets の使用例を示します。
  • inputfile.o ファイル内にあるすべての構造体のすべてのフィールドオフセットが含まれた一覧を stdout に出力するには、以下のように入力します。
    fromelf --fieldoffsets inputfile.o
  • inputfile.o ファイル内で、名前が p で始まる構造体のすべてのフィールドオフセットが含まれた一覧を outputfile.s に出力するには、以下のように入力します。
    fromelf --fieldoffsets --select=p* --output=outputfile.s inputfile.o
  • inputfile.o ファイル内で、tools または moretools という名前の構造体のすべてのフィールドオフセットが含まれた一覧を outputfile.s に出力するには、以下のように入力します。
    fromelf --fieldoffsets --select=tools.*,moretools.* --output=outputfile.s inputfile.o
  • inputfile.o ファイル内の構造体 tools の構造体フィールド top の中にあり、名前が number で始まる構造体フィールドのすべてのフィールドオフセットが含まれた一覧を outputfile.s に出力するには、以下のように入力します。
    fromelf --fieldoffsets --select=tools.top.number* --output=outputfile.s inputfile.o
以下は出力例で、匿名構造体および匿名共用体が原因で発生する name.name...member が含まれています。
; Structure, Table , Size 0x104 bytes, from inputfile.cpp |Table.TableSize|                        EQU    0        ;  int |Table.Data|                             EQU    0x4      ;  array[64] of MyClassHandle ; End of Structure Table ; Structure, Box2 , Size 0x8 bytes, from inputfile.cpp |Box2.|                                  EQU    0        ;  anonymous |Box2..|                                 EQU    0        ;  anonymous |Box2...Min|                             EQU    0        ;  Point2 |Box2...Min.x|                           EQU    0        ;  short |Box2...Min.y|                           EQU    0x2      ;  short |Box2...Max|                             EQU    0x4      ;  Point2 |Box2...Max.x|                           EQU    0x4      ;  short |Box2...Max.y|                           EQU    0x6      ;  short ; Warning:duplicate name (Box2..) present in (inputfile.cpp) and in (inputfile.cpp) ; please use the --qualify option |Box2..|                                 EQU    0        ;  anonymous |Box2...Left|                            EQU    0        ;  unsigned short |Box2...Top|                             EQU    0x2      ;  unsigned short |Box2...Right|                           EQU    0x4      ;  unsigned short |Box2...Bottom|                          EQU    0x6      ;  unsigned short ; End of Structure Box2 ; Structure, MyClassHandle , Size 0x4 bytes, from inputfile.cpp |MyClassHandle.Handle|                   EQU    0        ;  pointer to MyClass ; End of Structure MyClassHandle ; Structure, Point2 , Size 0x4 bytes, from defects.cpp |Point2.x|                               EQU    0        ;  short |Point2.y|                               EQU    0x2      ;  short ; End of Structure Point2 ; Structure, __fpos_t_struct , Size 0x10 bytes, from C:\Program Files\DS-5\bin\..\include\stdio.h |__fpos_t_struct.__pos|                  EQU    0        ;  unsigned long long |__fpos_t_struct.__mbstate|              EQU    0x8      ;  anonymous |__fpos_t_struct.__mbstate.__state1|     EQU    0x8      ;  unsigned int |__fpos_t_struct.__mbstate.__state2|     EQU    0xc      ;  unsigned int ; End of Structure __fpos_t_struct     END
関連する参考文書
3.24 --expandarrays
3.48 --qualify
3.52 --select=select_options
3.59 --text
関連情報
EQU
GET、INCLUDE
非機密扱いPDF file icon PDF 版ARM DUI0805CJ
Copyright © 2014, 2015 ARM.All rights reserved.