首頁 >後端開發 >C++ >GCC編譯C/C原始碼如何獲得彙編程式碼輸出?

GCC編譯C/C原始碼如何獲得彙編程式碼輸出?

Susan Sarandon
Susan Sarandon原創
2024-12-27 06:51:09524瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn