GCC で C/C ソースからアセンブラ コードを出力する方法
コンパイルされたコードを解析する場合、生成されたアセンブリ コードにアクセスすることが不可欠です。 GCC では、これは「-S」オプションを使用して実現できます。
-S オプションの使用
デフォルトでは、「-S」は、ソース ファイルを作成し、初期コンパイルを実行しますが、アセンブラを呼び出す前に停止します。 「-fverbose-asm」と組み合わせると、このオプションは C コードをコメントとしてアセンブリ コードに関連付けます。特に最適化レベル -O0 で役立ちます。
gcc -S helloworld.c
出力ファイルのカスタマイズ
出力ファイルは通常、ソース ファイルにちなんで .s 拡張子を付けた名前が付けられます。出力ファイルの場所をカスタマイズするには、「-o」オプションを使用します:
gcc -S -o my_asm_output.s helloworld.c
または、「-o -」を使用してコンソールに出力できます:
gcc -S -o - helloworld.c | less
実行可能オブジェクトのアセンブリへのアクセス
元のソース コードがない場合ただし、オブジェクト ファイルがある場合は、「--disassemble」オプション (-d) を指定して objdump を使用します。
objdump -S --disassemble helloworld > helloworld.dump
ソース行参照を使用した強化された逆アセンブリ出力については、元のコンパイルでのデバッグを有効にします (-g)。
追加の Objdump オプション
の使用を検討してくださいさらに詳細な分析のためのこれらの objdump オプション:
たとえば、次のコマンドは豊富な逆アセンブリを提供します。出力:
objdump -drwC -Mintel -S foo.o | less
プレースホルダーを含む .o ファイル内のシンボル参照を表示するには、「-r」が重要であることを覚えておいてください。
以上がGCC と objdump を使用して C/C からアセンブリ コードを生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。