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

Bagaimanakah Saya Boleh Mengakses Kod Perhimpunan yang Dijana daripada Sumber C/C Menggunakan GCC?

Patricia Arquette
Patricia Arquetteasal
2024-12-23 02:27:24735semak imbas

How Can I Access the Assembly Code Generated from C/C   Source Using GCC?

Mengakses Output Assembler daripada C/C Source dalam GCC

Untuk menganalisis proses penyusunan, selalunya berguna untuk mengekstrak kod pemasangan yang dipancarkan . Ini boleh dicapai dalam dua cara menggunakan GCC:

Menggunakan Pilihan -S:

Dengan menambahkan pilihan -S pada arahan gcc, prapemproses akan digunakan , dan kompilasi awal akan berlaku. Walau bagaimanapun, proses itu akan dihentikan sebelum peringkat perhimpunan. Output kompilasi separa ini, biasanya dinamakan file_name.s, mengandungi kod pemasangan yang sepadan dengan sumber C/C asal.

Menggunakan objdump:

Jika hanya objek fail tersedia, utiliti objdump boleh digunakan untuk mengekstrak kod pemasangan. Dengan menambah pilihan --disassemble (-d), objdump akan menjana pembongkaran fail objek. Jika kompilasi dilakukan dengan maklumat nyahpepijat (menggunakan -g), baris sumber akan disilang dengan pembongkaran untuk kebolehbacaan yang lebih baik.

Contoh:

gcc -S source_file.c
objdump -S --disassemble object_file.o > assembly_output.txt

Pilihan -S dengan gcc akan menjana fail pemasangan bernama source_file.s. Perintah objdump akan mencipta fail teks bernama assembly_output.txt yang mengandungi pembongkaran fail objek, dengan baris sumber disertakan jika tersedia.

Pilihan objdump tambahan untuk menyesuaikan output termasuk:

  • -rwC: Tunjukkan penempatan semula simbol, lumpuhkan pembalut baris dan demangle C nama.
  • -Mintel: Gunakan sintaks Intel untuk pemasangan x86 dan bukannya AT&T.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Kod Perhimpunan yang Dijana 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