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