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
Lepaskan: 2024-12-23 02:27:24
asal
779 orang telah melayarinya

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
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan