ホームページ >バックエンド開発 >C++ >GCC を使用して C/C ソースから生成されたアセンブリ コードにアクセスするにはどうすればよいですか?

GCC を使用して C/C ソースから生成されたアセンブリ コードにアクセスするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-23 02:27:24737ブラウズ

How Can I Access the Assembly Code Generated from C/C   Source Using GCC?

GCC の C/C ソースからアセンブラー出力にアクセスする

コンパイル プロセスを分析するには、生成されたアセンブリ コードを抽出すると便利なことがよくあります。 。これは、GCC を使用する 2 つの方法で実現できます:

-S オプションを使用する:

gcc コマンドに -S オプションを追加すると、プリプロセッサが呼び出されます。 、最初のコンパイルが行われます。ただし、プロセスは組み立て段階の前に停止します。この部分的なコンパイル出力 (通常は file_name.s という名前) には、元の C/C ソースに対応するアセンブリ コードが含まれています。

objdump の使用:

オブジェクトのみの場合ファイルが利用可能な場合は、objdump ユーティリティを使用してアセンブリ コードを抽出できます。 --disassemble (-d) オプションを追加すると、objdump はオブジェクト ファイルの逆アセンブリを生成します。デバッグ情報を使用してコンパイルが実行された場合 (-g を使用)、読みやすくするためにソース行が逆アセンブリにインターリーブされます。

例:

gcc -S source_file.c
objdump -S --disassemble object_file.o > assembly_output.txt

gcc に -S オプションを指定すると、source_file.s という名前のアセンブリ ファイルが生成されます。 objdump コマンドは、オブジェクト ファイルの逆アセンブリを含む、assembly_output.txt という名前のテキスト ファイルを作成します。利用可能な場合はソース行も含まれます。

出力をカスタマイズするための追加の objdump オプションは次のとおりです。

  • -rwC: シンボルの再配置を表示し、行の折り返しを無効にし、C をデマングルします。 names.
  • -Mintel: AT&T の代わりに x86 アセンブリに Intel 構文を使用します。

以上がGCC を使用して C/C ソースから生成されたアセンブリ コードにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。