ホームページ > バックエンド開発 > C++ > GCC コンパイル C/C ソース コードからアセンブリ コード出力を取得するにはどうすればよいですか?

GCC コンパイル C/C ソース コードからアセンブリ コード出力を取得するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-27 06:51:09
オリジナル
526 人が閲覧しました

How Can I Get Assembly Code Output from GCC Compiling C/C   Source Code?

GCC の C/C ソースからアセンブラー出力を取得する

コードがどのようにコンパイルされるかを分析するには、出力されたアセンブリ コードを取得すると有益です。 GCC では、これは -S オプションを使用して実現できます。

gcc -S helloworld.c
ログイン後にコピー

これにより、プリプロセッサと初期コンパイルが呼び出されますが、アセンブラを実行する前に停止します。

より包括的なアセンブリ出力については、 -fverbose-asm を -O0 と一緒に使用することを検討してください。ただし、これはデフォルトの最適化レベルで最適に機能することに注意してください。

デフォルトの出力ファイルは helloworld.s ですが、-o を使用してカスタマイズできます。さらに、-o - を使用して出力を標準出力に直接送信できます。

gcc -S -o my_asm_output.s helloworld.c
ログイン後にコピー

オブジェクト ファイルのみが使用可能な場合は、--disassemble オプションを指定した objdump を使用できます。

objdump -S --disassemble helloworld > helloworld.dump
ログイン後にコピー

これにより、ソース行と逆アセンブリ出力がインターリーブされます。デバッグ (-g) を有効にしてストリッピングを回避すると、逆アセンブリの詳細を強化できます。

さらにカスタマイズするには、-rwC (シンボルの再配置)、-Mintel (Intel 構文)、-r (重要) などのオプションを検討してください。プレースホルダー シンボル参照を含むオブジェクト ファイル)。

たとえば、次のコマンドは Intel を使用して詳細なダンプを提供します。構文:

objdump -drwC -Mintel -S foo.o | less
ログイン後にコピー

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート