Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menjana Kod Perhimpunan daripada Sumber C/C Menggunakan GCC?

Bagaimanakah Saya Boleh Menjana Kod Perhimpunan daripada Sumber C/C Menggunakan GCC?

Susan Sarandon
Susan Sarandonasal
2024-12-21 13:06:14963semak imbas

How Can I Generate Assembly Code from C/C   Source Using GCC?

Menjana Output Assembler daripada Sumber C/C dalam GCC

Untuk menganalisis proses penyusunan, dapatkan kod pemasangan yang dipancarkan daripada sumber C/C boleh menjadi tidak ternilai. GCC menawarkan dua kaedah untuk mencapai ini: menggunakan pilihan -S dan menggunakan objdump.

Menggunakan Pilihan -S:

Pilihan -S mengarahkan GCC untuk menjalankan prapemproses dan melaksanakan kompilasi awal, tetapi berhenti sebelum pelaksanaan pemasang. Secara lalai, output disimpan dalam fail dengan sambungan .s. Untuk menentukan fail output tersuai, gunakan pilihan -o.

gcc -S helloworld.c

Menggunakan objdump:

Jika anda hanya mempunyai fail objek yang terhasil, anda boleh menggunakan objdump dengan pilihan --disassemble (-d untuk versi yang lebih pendek) untuk membuka kod:

objdump -S --disassemble helloworld > helloworld.dump

Pilihan Tambahan:

  • -fverbose-asm (untuk gcc) menawarkan ulasan terperinci tentang operan C dalam kod pemasangan.
  • -rwC (objdump) memaparkan penempatan semula simbol, melumpuhkan pembalut baris dan membuka C nama.
  • -Mintel (objdump) menukar sintaks nyahpasang kepada Intel untuk seni bina x86.

Contoh:

Untuk mendapatkan pemasang terperinci output dengan sintaks Intel daripada fail .o yang mungkin mengandungi ruang letak untuk rujukan simbol, gunakan:

objdump -drwC -Mintel -S foo.o | less

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Kod Perhimpunan daripada Sumber C/C Menggunakan GCC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn